VBA - ditionary erreur 438

Bonjour ter tous/tes

Pour mon premier message sur ce forum d'abord merci aux âmes dévouées qui consacrent tant de pédagogie à éclairer leur pratique d'Excel et merci aux amateurs de tout poils d'avoir posé des questions que je comprends. Je me suis rendu compte en débutant, que ce que je pensais pouvoir énoncer clairement n'était pas si logique à traduire dans un langage universel ..

Mon but est le suivant :

1) récupérer dans la colonne 2 une liste de cellules dont d'autres colonnes ont servi de filtres (ça j'y arrive)

2) me servir de cette liste comme variable pour appliquer une mise en forme conditionnelle (ça j'y arrive pas)

=> pour constituer cette liste j'ai tenté d'utiliser Dictionary puis Collection sans succès puisque l'erreur 438 me pointe la ligne :

If Not MonDico.Exists(Sheets("SUBSTANCES").Cells(nb1, 2).Value) Then

(je joins le fichier en question pour plus de clarté)

J'ai l'impression d'avoir essayer toutes les syntaxes possibles trouvées sur le forum. J'imagine donc qu'il y a là un pb dans la conception même.

Je suis conscient qu'il doit y avoir de grossières erreurs de définition et que ce n'est pas la seule façon d'arriver à mes fins mais je novicie complètement et n'ai pas de vision d'ensemble des différentes manières de procéder.

En attendant de vous lire, un agréable weekend

Bonjour,

remplace tes premières lignes de code par ceci

Sub classement()
'
'
    Application.ScreenUpdating = False

    '' Dans classeur SUBSTANCES entrer dans MonDico chaque valeur de la colonne 2 dont la colonne 8 = oui
    Dim Dernligne As Integer
    Dim nb1 As Integer
    Dim nb_de_aller, i As Byte, a
    Dim MonDico As Object

    Dernligne = Range("B" & Rows.Count).End(xlUp).Row
    nb_de_aller = Application.CountIf(ActiveWorkbook.Sheets("SUBSTANCES").Columns(12), "vrai")
    Set MonDico = CreateObject("scripting.dictionary")

    With Sheets("SUBSTANCES")
        For nb1 = 1 To Dernligne
            If IsEmpty(.Cells(nb1, 4)) And IsEmpty(.Cells(nb1, 5)) And IsEmpty(.Cells(nb1, 6)) And .Cells(nb1, 7).Value = "oui" Then
                .Cells(nb1, 12) = "vrai"
                For i = 1 To nb_de_aller
                    a = Sheets("SUBSTANCES").Cells(nb1, 2).Value
                    If Not MonDico.Exists(a) Then
                        MonDico.Add a, i
                    End If
                Next i
            End If
        Next nb1
    End With

Merci pour cette réponse rapide. ça ne semble plus poser problème mais je posterais ailleurs pour la résolution de ma 2ème question.

Bonne soirée

Rechercher des sujets similaires à "vba ditionary erreur 438"