Aide sur détails de code

Bonjour à tous,

J'ai cet extrait de code:

Public Sub faireList1()
Dim Lig As Long
    VoirColonne
    Set DicoList = CreateObject("Scripting.Dictionary")
    Set DicoLigne = CreateObject("Scripting.Dictionary")
    With Sheets("Base")
        For Lig = LigDeb To NbLignes
            If Not DicoList.Exists(.Cells(Lig, C0).Value) Then
                DicoList.AdD .Cells(Lig, C0).Value, .Cells(Lig, C0).Value
                DicoLigne.AdD Lig, Lig
            End If
        Next Lig
    End With
    Tablo = DicoList.items
    TL = DicoLigne.items
End Sub

'tableau du combo2
Public Sub faireList2()
Dim Lig As Long
    Set DicoList = CreateObject("Scripting.Dictionary")
    With Sheets("Base")
        For Lig = LigDeb To NbLignes
            If .Cells(Lig, C0).Value = ComboBox1.Text Then
                If Not DicoList.Exists(.Cells(Lig, C1).Value) Then
                    DicoList.AdD .Cells(Lig, C1).Value, .Cells(Lig, C1).Value
                End If
            End If
        Next Lig
    End With
    Tablo = DicoList.items
End Sub
'tableau du combo 3'
Public Sub faireList3()
Dim Lig As Long
    VoirColonne
    Set DicoList = CreateObject("Scripting.Dictionary")
    Set DicoLigne = CreateObject("Scripting.Dictionary")
    With Sheets("Base")
        For Lig = LigDeb To NbLignes
            If .Cells(Lig, C0).Value = ComboBox1.Text And .Cells(Lig, C1).Value = ComboBox2.Text Then
                If Not DicoList.Exists(.Cells(Lig, C2).Value) Then
                    DicoList.AdD .Cells(Lig, C2).Value, .Cells(Lig, C2).Value
                    DicoLigne.AdD Lig, Lig
                End If
            End If
        Next Lig
    End With
    Tablo = DicoList.items
    TL = DicoLigne.items
End Sub

Quelqu'un pourrait-il me dire pas à pas à quoi correspond le code écrit avec des annotations 'xxxxx' ?

A plus tard.

Bonjour,

Les explications dans le code :

Public Sub faireList1()

Dim Lig As Long

    'appelle une porcédure nommée "VoirColonne"
    VoirColonne

    'crée deux dictionnaires
    Set DicoList = CreateObject("Scripting.Dictionary")
    Set DicoLigne = CreateObject("Scripting.Dictionary")

    With Sheets("Base")

        'boucle sur des lignes (à savoir sur lequelles ?)
        For Lig = LigDeb To NbLignes

            'si la valeur de la cellule en cours ne se trouve pas
            'dans le dictionnaire, la rajoute (apparemment il dédoublonne)
            'puis il mémorise la ligne dans le second dico
            'C0 est une variable qui représente une colonne mais laquelle ?
            If Not DicoList.Exists(.Cells(Lig, C0).Value) Then

                DicoList.Add .Cells(Lig, C0).Value, .Cells(Lig, C0).Value

                DicoLigne.Add Lig, Lig

            End If

        Next Lig

    End With

    'passe aux tableaux les éléments des dicos
    Tablo = DicoList.items
    TL = DicoLigne.items

End Sub

'tableau du combo2
Public Sub faireList2()

Dim Lig As Long

    'idem que dessus
    Set DicoList = CreateObject("Scripting.Dictionary")

    With Sheets("Base")

        'boucle sur les lignes
        For Lig = LigDeb To NbLignes

            'si la valeur de la cellule en cours est égale à la valeur
            'du ComboBox1, il stocke dans le dico la valeur d'une cellule
            'située sur la même ligne mais dans une colonne qui est représentée
            'par C1 mais laquelle ?
            If .Cells(Lig, C0).Value = ComboBox1.Text Then

                If Not DicoList.Exists(.Cells(Lig, C1).Value) Then

                    DicoList.Add .Cells(Lig, C1).Value, .Cells(Lig, C1).Value

                End If

            End If

        Next Lig

    End With

    'passe au tableau les éléments du dico
    Tablo = DicoList.items

End Sub
'tableau du combo 3'
Public Sub faireList3()

Dim Lig As Long

    'idem pour l'appel
    VoirColonne

    'création des dicos
    Set DicoList = CreateObject("Scripting.Dictionary")
    Set DicoLigne = CreateObject("Scripting.Dictionary")

    With Sheets("Base")

        'toujours le bouclage sur les lignes
        For Lig = LigDeb To NbLignes

            'si la valeur de la cellule en cours en colonne C0 est égale au ComboBox1 et que la
            'valeur de la cellule (sur la même ligne) en colonne C1 est égale au ComboBox2, stocke dans le dico
            'la valeur d'une cellule siluée sur la même ligne mais cette fois-ci dans une colonne C2
            'puis mémorise la position de la ligne dans le second dico
            If .Cells(Lig, C0).Value = ComboBox1.Text And .Cells(Lig, C1).Value = ComboBox2.Text Then

                If Not DicoList.Exists(.Cells(Lig, C2).Value) Then

                    DicoList.Add .Cells(Lig, C2).Value, .Cells(Lig, C2).Value
                    DicoLigne.Add Lig, Lig

                End If

            End If

        Next Lig

    End With

    'passe aux tableaux les éléments des dicos
    Tablo = DicoList.items
    TL = DicoLigne.items

End Sub

Hervé.

Rechercher des sujets similaires à "aide details code"