Bonjour le forum,

Tout d'abord je tiens à préciser que mes codes sont sûrement loin d'être optimaux, je n'utilise pas de TS ou autres, je n'ai vraiment plus de temps pour m'attarder sur de nouvelles connaissances qui me prendront du temps à réussir à mettre en place... à cause des délais cours qui m'ont été dernièrement imposés. J'aurai donc besoin de votre aide sur un point en particulier qui vient de me poser problème ce matin.

En effet, j'ai une ComboBox contenant des Codes BG qui est alimentée automatiquement en fonction des valeurs renseignées à la fois dans la ComboBox Pavé 4 et Pavé 5. Le souci est que lorsque je change la valeur renseignée, à travers la ComboBox Pavé 5 par exemple, j'ai une erreur qui apparaît :

Erreur d'Exécution '1004': Pas de cellules correspondantes

Mon tableau filtré est complètement vide.

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
Private Sub T_Cons_CBP5_Change()
    Dim derLig As Integer
    Dim CBR As Range, CellCBR As Range
    Dim WbO As Worksheet
 
    Set Wb = ThisWorkbook
    Set WbO = Wb.Sheets(1)
 
    derLig = WbO.Cells(WbO.Rows.Count, 1).End(xlUp).Row
 
    WbO.Range("A2").AutoFilter
 
    WbO.Range("A2").AutoFilter Field:=12, Criteria1:=T_Cons_CBP5.Value
 
    Set CBR = WbO.Range(WbO.Cells(2, 2), WbO.Cells(derLig, 2)).SpecialCells(xlCellTypeVisible)
 
    T_Cons_CBBG.Clear
 
    For Each CellCBR In CBR
        T_Cons_CBBG.AddItem CellCBR.Value
    Next
End Sub
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
Private Sub T_Cons_CBBG_Change()
    Dim derLig As Integer
    Dim CBR As Range, CellCBR As Range
    Dim WbO As Worksheet
 
    Set Wb = ThisWorkbook
    Set WbO = Wb.Sheets(1)
 
    derLig = WbO.Cells(Rows.Count, 2).End(xlUp).Row
 
    WbO.Range("A2").AutoFilter
 
    WbO.Range("A2").AutoFilter Field:=2, Criteria1:=T_Cons_CBBG.Value
 
    Set CBR = WbO.Range(WbO.Cells(2, 3), WbO.Cells(derLig, 3)).SpecialCells(xlCellTypeVisible)
 
    For Each CellCBR In CBR
        T_Cons_TBLib.Text = CellCBR.Value
    Next
End Sub
L'erreur se situe sur cette ligne, du second code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
Set CBR = WbO.Range(WbO.Cells(2, 3), WbO.Cells(derLig, 3)).SpecialCells(xlCellTypeVisible)
Je ne comprends pas vraiment pourquoi l'erreur existe... Ou bien je n'ai pas bien saisi la manière dont s'exécute la superposition des codes, je vais donc expliquer comment je perçois le déroulement, afin que vous puissiez comprendre ma manière de le percevoir.

Dans la succession, l'initialisation des 2 ComboBox se fait simultanément. En effet, c'est la valeur saisie dans le Pavé 4 qui va déterminer les valeurs disponibles dans les 2 ComboBox.

Dans la procédure T_Cons_CBP5_Change()
Le code...
détermine le numéro de la dernière ligne
réinitialise les filtres
réalise un filtre sur la colonne 12 - correspondant aux valeurs Pavé 5 - en fonction de la valeur renseignée grâce à la Liste Déroulante
définit une plage de cellules correspondant aux résultats filtrés - colonne 2 correspond aux codes BG
vide la ComboBox des codes BG
remplit la ComboBox des codes BG avec chaque cellule de la plage préalablement définie

Dans la procédure T_Cons_CBBG_Change()
Le code...
détermine le numéro de la dernière ligne
réinitialise les filtres

réalise un filtre sur la colonne 2 - correspondant aux valeurs des codes BG - en fonction de la valeur renseignée grâce à la Liste Déroulante
définit une plage de cellules correspondant aux résultats filtrés - colonne 3 correspond aux libellés associés aux codes BG
(ligne d'erreur)
remplit la TextBox Libellé avec le résultat choisi. Sachant qu'un code BG est unique, il n'y aura qu'un seul libellé à afficher dans la TextBox.

Je souhaiterai ainsi savoir si le déroulé que j'ai écrit correspond au déroulé que j'ai imaginé. Lors de la première boucle je n'ai aucun problème. Je choisis librement mon Pavé 4 et mon Pavé 5, et cela met à jour ma combobox Codes BG. Le choix du code m'inscrit le libellé associé dans la TextBox Libellé. Tant que je ne change pas la valeur renseignée en Pavé 4 ou Pavé 5, je n'ai aucun problème. Mais dès que j'y touche, j'ai le code erreur 1004 comme cité au-dessus. Me serai-je trompé dans l'écriture de l'AutoFilter ? Je pense que l'erreur ne peut venir que de là puisque plus aucune valeur n'est disponible dans mon tableau. Il est ouvert à côté pour visualiser l'avancement dans le code.

Merci grandement pour votre aide