Bonsoir,
pour la première erreur j'ai ajouté une variable global sur le USF "EnCours".
lors de l'initialisation du USF, je passe cette variable à VRAI, le code continue et va modifier la ComboBox1, en tête de code de la procédure "Change" du ComboBox1 je fais un test sur la variable interrupteur "EnCours" : si elle est à vrai alors on sort de la procédure sinon on continue.
En fin de procédure d'initialisation on passe "EnCours" à FAUX afin de laisser "libre" le Change du ComboBox1 = plus de message d'erreur à ce niveau.
Pour la suite des questions je n'ai pas saisie le sens du déroulé des Sub de votre USF. Si le ComboBox3 est une liste de département composant la région sélectionnée, alors c'est dans la procédure "Change" du TextBox qu'il faut mettre par ordre croissant (par exemple) les données du ComboBox3 :
On change de région, TextBox4 Change, en fonction de sa valeur on remplie un tableau VBA avec le nom de ses départements, on envoie ce tableau dans la Sub tri avec en paramètre soit 1 ou 0, une fois le tableau trié on l'applique à la ComboBox3 comme vous l'avez fait avec la ComboBox2.
Mais encore une fois je suis perdu dans vos Sub, sans parler de l'indentation du code, je vous aie "corrigé" celui de l'initialisation, c'est beaucoup plus lisible, non ?
Private Sub UserForm_Initialize()
Dim ligb As Long, temp()
EnCours = True
Set f = Sheets("ville")
temp = f.Range("A2:A" & f.Range("A" & Rows.Count).End(xlUp).Row).Value
Tri temp, LBound(temp), UBound(temp), 0 ' 1:Croissant 0:décroissant
Me.ComboBox2.List = temp
Range("A1") = Module1.numero ' il n'y a pas de sub numero dans le module 1 ?!
With Me '= USF = UserForm2
.Left = 750
.Top = 300
.ComboBox1.Value = Sheets("Départements").Range("B" & numero + 1).Value
.ComboBox2.List = Sheets("Ville").Range("villeDept[vil]").Value
.Caption = Sheets("Ville").Cells(Rows.Count, 1).End(xlUp).Row - 1 & " Villes"
TextBox3.Value = Sheets("Départements").Range("C" & numero + 1).Value
TextBox4.Value = Sheets("Départements").Range("E" & numero + 1).Value
TextBox5.Value = Sheets("Départements").Range("D" & numero + 1).Value
TextBox6.Value = Sheets("Départements").Range("F" & numero + 1).Value
TextBox7.Value = Sheets("Départements").Range("G" & numero + 1).Value
TextBox8.Value = Sheets("Départements").Range("J" & numero + 1).Value
TextBox1.Value = Sheets("Départements").Range("H" & numero + 1).Value
.Label12.Caption = Me.ComboBox2.ListCount
End With
EnCours = False
End Sub
J'ai également retiré les deux lignes de code avec un appel à "numero" dans le Module1, je n'en ai pas trouvé, ce qui faisait que la cellule A1 indiquait toujours 0...
ce qui provoque l'erreur du ComboBox1 car la référence n'existe pas...
@ bientôt
LouReeD