bonjour,

me revoila avec un nouveau pb

j'ai un usf1 saisie vente, dans celui-ci une fois rentré le nom et prenom, je fais une recherche pour savoir si variablenomprenon existe dans la feuille Clients de facon a remplir les autres champs de maniere automatique. si doublons sur variable nomprenom alors ouverture de usf12 "plusieurs occurences".
l'usf12 reprend le nom et le prenom et affiche deux combobox en cascade pour selectionner ville et ensuite adresse stockées dans une feuille Temp2.
et c'est la que je coince les deux combobox sont vides.

pour info le code pour les combobox est tiré d'un article sur le net et qui fonctionne dans un fichier test mais pas dans le mien.

un peu d'aide svp merci

code pour remplissage automatique usf1 saisie vente
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
 
 
' test de remplissage automatique
 
Private Sub TextBox3Prenom_AfterUpdate()
'Private Sub TextBox21Ville_AfterUpdate()
Dim c As Range
Dim Lig As Long
Dim VarNomPrenomVille As String
Dim VarNomPrenom As String
Dim cDest As Range
Dim LastLig As Long
Dim DerLig As Long
Dim DerLig2 As Long
 
VarNomPrenomVille = TextBox2Nom.Value + TextBox3Prenom.Value + TextBox21Ville.Value
VarNomPrenom = TextBox2Nom.Value + TextBox3Prenom.Value
 
 
With Worksheets("DoublonsTemp")
    ' effacement données temporaires des données clients en doublon sur 100 lignes
    .Range("A2:P100").ClearContents
    ' cdest : la cellulle de destination : premiere cellule vide de la colonne A de la feuille "DoublonsTemp"
    Set cDest = .Cells(.Rows.Count, "A").End(xlUp)(2)
End With
 
With Worksheets("Clients")
    ' on va copier dans feuille "DoublonsTemp" toute les lignes de la feuille clients
    ' dont la colonne K VarNomPrenom correspond au nom + prenom entrés dans usf1 "nouvelle vente"
 
    ' on enlève éventuel filtre automatique
    .AutoFilterMode = False
    ' LastLig  ligne de la derniere cellule remplie de la colonne K (NomPrenom) de la feuille "Clients"
    LastLig = .Cells(.Rows.Count, "K").End(xlUp).Row
    ' on fait un filtre automatique sur la colonne K de la feuille "Clients" avec comme critère VarNomPrenom
    .Range("K1:K" & LastLig).AutoFilter field:=1, Criteria1:=VarNomPrenom
    ' si au moins une ligne résultat du filtre (en plus de la ligne1 des titres)
    If .Range("K1:K" & LastLig).SpecialCells(xlCellTypeVisible).Count > 1 Then
        With .Range("K2:K" & LastLig).SpecialCells(xlCellTypeVisible).EntireRow
            ' on copie toutes les lignes visibles vers cDest (sauf la ligne des titres)
            .Copy cDest
        End With
    End If
End With
 
 
' je remplis les label Nom et prenom de Usf12
UserForm12.Label6.Caption = UserForm1.TextBox2Nom.Value
UserForm12.Label7.Caption = UserForm1.TextBox3Prenom.Value
 
' supprime donés existantes dans les combobox 1 et 2 de usf12
    UserForm12.ComboBox1.Clear
    UserForm12.ComboBox2.Clear
 
' je determine la derniere ligne de la colonne I (ville) de la feuille "DoublonsTemp"
'With Worksheets("Doublonstemp")
    'DerLig = .Cells(.Rows.Count, "I").End(xlUp).Row
'End With
 
 
' copie des colonnes I Ville et F Adresse1 de la feuille "DoublonsTemp"
' dans les colonnes A Ville et B Adresse1 de la feuille "Temp2"
' pour alimenter en cascade les combobox 1 et 2 de usf12
Worksheets("DoublonsTemp").Range("I2:I100").Copy Worksheets("Temp2").Range("A2")
Worksheets("DoublonsTemp").Range("F2:F100").Copy Worksheets("Temp2").Range("B2")
 
' tri des données de la feuille "Temp2" critère Ville ascendant
With Worksheets("Temp2")
    .Range("A2:B100").Sort Key1:=.Range("A2"), Order1:=xlAscending, Key2:=.Range("B2"), Order2:=xlAscending, Header:=xlGuess
End With
 
 
'affichage de usf12
UserForm12.Show
 
End Sub


code de l usf12 pour combobox en cascade

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
 
Option Explicit
 
Dim Ws As Worksheet
Dim NbLignes As Integer
 
 
Private Sub UserForm_Initialize()
    'Définit la feuille contenant les données
    Set Ws = Worksheets("Temp2")
    'Définit le nombre de lignes dans la colonne A
    NbLignes = Ws.Range("A65536").End(xlUp).Row
 
    'Remplissage du ComboBox1
    Alim_Combo 1
 
End Sub
 
 
Private Sub ComboBox1_Change()
    'Remplissage Combo2
    Alim_Combo 2, ComboBox1.Value
End Sub
 
 
Private Sub ComboBox2_Change()
    'Remplissage Combo3
    Alim_Combo 3, ComboBox2.Value
End Sub
 
 
Private Sub ComboBox3_Change()
 
End Sub
    'Remplissage Combo4
    Alim_Combo 4, ComboBox3.Value
End Sub
 
 
 
'Procédure pour alimenter les ComboBox
Private Sub Alim_Combo(CbxIndex As Integer, Optional Cible As Variant)
    Dim j As Integer
    Dim Obj As Control
 
    'Définit le ComboBox à remplir
    Set Obj = Me.Controls("ComboBox" & CbxIndex)
    'Supprime les anciennes données
    Obj.Clear
 
    'alimente le Combobox initial (Combobox1)
    If CbxIndex = 1 Then
        'Boucle sur les lignes de la colonne A (à partir de la 2eme ligne)
        For j = 2 To NbLignes
            Obj = Ws.Range("A" & j)
            'Remplit le ComboBox sans doublons
            If Obj.ListIndex = -1 Then Obj.AddItem Ws.Range("A" & j)
        Next j
    Else
        'Alimentation conditionnelle des autres Combobox en fonction de
        'ce qui est sélectionnée dans le contrôle précédent:
        '(La sélection du ComboBox1 définit le contenu du ComboBox2,
        'La sélection du ComboBox2 définit le contenu du ComboBox3 ?etc...)
        For j = 2 To NbLignes
            If Ws.Range("A" & j).Offset(0, CbxIndex - 2) = Cible Then
                Obj = Ws.Range("A" & j).Offset(0, CbxIndex - 1)
                If Obj.ListIndex = -1 Then Obj.AddItem Ws.Range("A" & j).Offset(0, CbxIndex - 1)
            End If
        Next j
   End If
 
   'Enlève la sélection dans le ComboBox
   Obj.ListIndex = -1
End Sub