Aide sur détails de code
e
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 SubQuelqu'un pourrait-il me dire pas à pas à quoi correspond le code écrit avec des annotations 'xxxxx' ?
A plus tard.
T
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 SubHervé.