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 i

2) 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 Sub

Je 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 Userform1

Merci 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+

Rechercher des sujets similaires à "utilisation dictionnary"