Utilisation du dictionnary
Hello à tous,
Je continue mon apprentissage du VBA et je m'attaque à un nouveau challenge: les dictionnaires & userform.
Je vous explique, car je ne peux pas joindre le fichier.
J'ai un classeur qui contient:
- une feuille de donnée (nommé" positions" -> sh_position) obtenue grâce à une macro
- une feuille avec un tableau de bord (nommé "tableau de bord" -> sh_tab)
1)Je souhaite créer un dico qui contient l'ensemble des valeurs uniques dans la colonne G de la feuille Position
2) Si une valeur du dictionnaire n'est pas présente, dans le tableau de bord, il faut l'ajouter en colonne L
3) Lancer un petit userform qui me demande si la donnée en colonne L et de type Banques ou OPCVM et en fonction de ma réponse compléter le colonne M avec "Banques" ou "OPCVM"
Voilà mon avancé, je vous passe les DIM et set:
1) création du dictionnaire
Set cpty_list = CreateObject("Scripting.dictionary")
x = sh_position.Cells(Rows.Count, 7).End(xlUp).Row
deb = x
'Remplir le dictionnaire avec les noms en positions'
cpty_list.RemoveAll
For i = 2 To x
If Not cpty_list.Exists(sh_position.Cells(i, 7).Value) Then
cpty_list(sh_tab.Cells(i, 7).Value) = sh_tab.Cells(i, 7)
End If
Next i2) Je suis perdu
3) J'ai créé le Userform sans avoir tout bien compris ... Il me demande si les données de la colonne L sont de tpye "banques" ou "OPCVM" et je clique pour compléter.
Private Sub UserForm_Initialize()
Me.StartUpPosition = 2
x = ThisWorkbook.Worksheets("Tableau de bord").Cells(Rows.Count, 12).End(xlUp).Row
UserForm1.Label2.Caption = ThisWorkbook.Worksheets("Tableau de bord").Cells(x, 12).Value
End Sub
Private Sub CommandButton1_Click()
x = ThisWorkbook.Worksheets("Tableau de bord").Cells(Rows.Count, 12).End(xlUp).Row
If OPCVM = True Then
ThisWorkbook.Worksheets("Tableau de bord").Cells(x, 13).Value = "OPCVM"
Else
ThisWorkbook.Worksheets("Tableau de bord").Cells(x, 13).Value = "Banques"
End If
Unload UserForm1
End SubJe pense qu'ensuite je dois ajouter un code du type:
For ligneL = 2 to DernLigneL step 1
If cells(LigneL,12).value <> "" And cells(LigneL, 13).value = "" Then Userform1Merci bien les amis.
Merci pour le lien, mais déjà lu en long large et en travers. J'ai même lu un équivalent en anglais un peu plus poussé. Si je poste ici c'est bien que je n'ai pas compris quelque chose
Bonjour,
Alors il faut banaliser "anonymiser" ton classeur et joindre juste les feuilles utiles et l'Userform.
Tu peux vierger tout ce qui est logo , valeurs, quantités... Pour peu que le Userform fonctionne encore...
A+