Bonjour à tous,

Je me permets de demander un petit coup de pouce car je pense vraiment ne pas être loin de ce que je cherche à faire mais rien n'y fait... J'ai un soucis avec l'objet "dictionnaire"

Code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
 
Sub INITIALES()
'initialise le compteur Début
    tmp = GetTickCount64
    Application.ScreenUpdating = False
    Dim initiale As String
    Dim d As Range
    Dim n As Variant
    Dim Tableau()
    Set dictionnaire = CreateObject("Scripting.Dictionary")
    i = Range("B65000").End(xlUp).Row
    Set plage = Range("a6:a" & i)
    Range("b6").Select
    n = 1

    '    Range("B6").Select
    For Each d In plage
        '    Do Until (IsEmpty(ActiveCell))
        '        pos = ActiveCell.Adress

        If dictionnaire.exists(d.Value) Then
            Do
                If ActiveCell.Offset(0, 3).Text Like "*Visage*" Or ActiveCell.Offset(0, 3).Text Like "*Bébé*" Or _
                   ActiveCell.Offset(0, 3).Text Like "*Rincés*" Then
                    initiale = Mid((ActiveCell.Offset(0, 1).Value), 1, 1) & Mid((ActiveCell.Offset(0, 0).Value), n, 1)

                Else
                    initiale = Mid((ActiveCell.Offset(0, 1).Value), 1, 1) & Mid((ActiveCell.Offset(0, 0).Value), n, 1) & _
                               Right(ActiveCell.Offset(0, 0).Value, 1)

                End If
                n = n + 1
            Loop Until Not dictionnaire.exists(d.Value)
            ActiveCell.Offset(0, -1) = initiale
            dictionnaire.Add d.Value, d.Value
            n = 1
        Else
            If Not dictionnaire.exists(d.Value) Then
                If ActiveCell.Offset(0, 3).Text Like "*Visage*" Or ActiveCell.Offset(0, 3).Text Like "*Bébé*" Or _
                   ActiveCell.Offset(0, 3).Text Like "*Rincés*" Then
                    initiale = Mid((ActiveCell.Offset(0, 1).Value), 1, 1) & Mid((ActiveCell.Offset(0, 0).Value), 1, 1)

                Else
                    initiale = Mid((ActiveCell.Offset(0, 1).Value), 1, 1) & Mid((ActiveCell.Offset(0, 0).Value), 1, 1) & _
                               Right(ActiveCell.Offset(0, 0).Value, 1)

                End If
                ActiveCell.Offset(0, -1) = initiale
                dictionnaire.Add d.Value, d.Value
            End If
        End If
        ActiveCell.Offset(1, 0).Select
    Next d
Mon problème se situe au niveau de ce pavé là. J'ai essayé pas mal de chose déjà mais rien trouvé à l'heure actuelle.
Ce que je souhaite, c'est que si ma d.value est déjà présente dans mon dictionnaire, je veux qu'il applique la boucle Do jusqu'à ce qu'il trouve une valeur de d.value non existante dans le dictionnaire (à l'aide de la variable n) qu'il l'inscrive dans la cellule et l'enregistre dans le dictionnaire

n = variable qui à chaque boucle va en fait permettre d'utiliser la lettre suivante du contenu de la cellule
Cette variante n est réinitialisée à chaque sortie de boucle et reprend ça valeur initiale à savoir 1

Si je ne suis pas assez explicite n'hésitez pas à me demander d'autres infos. Cependant je ne pourrai pas vous communiquer le fichier en pièce jointe étant donné la sensibilité des informations. Je tâcherai de vous répondre au mieux.

Merci d'avance pour votre aide,

Cordialement,