Re..
le même code de hier
me le par une façon correcte moi je ne poivre pas le mètre correctement
--------------------------------------------------------------------------------------------------------------------------
Private Sub UserForm_Initialize()
'**' Dans cette procédure nous allons ajouter les clés du dictionnaire comme source pour la combobox.
Me.cboSpeca.List = dicoSpecialite.Keys
End Sub
Private Sub cboSpeca_Change()
Dim nomSpecialite$, ligneSpecialite%, codeSpecialite$, niveauSpecialite$
'**' Au changement de valeur de la combobox, nous enregistrons la nouvelle valeur dans une variable.
'**' Vérifions que cette valeur existe dans le dictionnaire.
'**' Si c'est le cas nous ajoutons le code et le niveau dans les textbox.
With Me
nomSpecialite = .cboSpeca.Value
.txt1.Value = ""
.txt2.Value = ""
If Not dicoSpecialite.exists(nomSpecialite) Then Exit Sub
ligneSpecialite = dicoSpecialite(nomSpecialite)
codeSpecialite = arraySpecialite(ligneSpecialite, 2)
niveauSpecialite = arraySpecialite(ligneSpecialite, 3)
.txt1.Value = codeSpecialite
.txt2.Value = niveauSpecialite
End With
End Sub
-----------------------------------------------------------------------------------------------
Option Explicit
'**'
'On va décomposer le code au maximum pour éviter les erreurs par la suite.
'**'
Public wkTravail As Workbook
Public shSource As Worksheet, shListe As Worksheet
Public arraySpecialite(), dicoSpecialite As Object
Sub initialisationUserForm()
'**' Procédure d'initialisation, voir ci-dessous.
initialisation
'**' Affichage de l'userform.
frmSaisie.Show
End Sub
Sub initialisation()
Dim i%
'**' Enregistrement du classeur et des deux feuilles.
Set wkTravail = ThisWorkbook
With wkTravail
Set shSource = .Sheets("Source")
Set shListe = .Sheets("Liste")
End With
'**' Enregistrement du tableau dans un tableau virtuel.
arraySpecialite = shListe.Range("tableauSpecialites")
'**' Création d'un dictionnaire avec comme clé la spécialité et comme item la ligne.
Set dicoSpecialite = CreateObject("Scripting.Dictionary")
For i = LBound(arraySpecialite) + 1 To UBound(arraySpecialite)
dicoSpecialite(arraySpecialite(i, 1)) = i
Next i
End Sub