Nom de variable et boucle

Bonjour à tous !

J'ai un soucis sur mon fichier. En fait j'ai une colonne avec plusieurs fois le même nom et j'aimerais stocker chaque nom de manière distinct dans une variable différentes (ici je nommerais mes variable temp1, temp2, ...).

Le problème c'est que dans ma boucle IF, il ne me prends pas mon nom de variable dynamique.

En fait dans mon fichier, j'aimerais bien avoir temp1 = DUPOND, temp2 = MARTIN et temp3 = RICHARD.

Merci d'avance.

23fichier-test.xlsm (13.25 Ko)

Bonjour,

Tu as une variable unique temp1, que tu as déclarée comme étant un nombre entier mais que tu souhaite remplir avec 3 chaines de caractères. Tu la déclares "temp1" mais tu travailles avec du temp2 ou temp3 (écrit sous forme de chaine de caractères au passage). Bref, ça ne peut pas marcher.

Utilise donc une variable tableau :

Dim temp(3)  As String

Ensuite pour parcourir les cellules, inutile de les sélectionner, travaille plutôt avec un index ligne dans une boucle For.

Bonjour,

tu ne peux pas en VBA définir des noms de variables dynamiquement.

pour ce que tu veux faire tu peux utiliser des variables de type tableau. voir ici pour quelques explications

https://www.excel-pratique.com/fr/vba/tableaux_vba.php

Ayé !

Voilà ma proposition :

Private Sub NomsDiffrents()

    Dim temp() As String
    Dim i As Integer, N As Integer, Lmax As Integer

    With Sheets("Feuille")
        Lmax = .Cells(Rows.Count, 1).End(xlUp).Row
        For i = 2 To Lmax
            If i = 2 Then
                ReDim temp(1)
                temp(1) = .Cells(i, 1).Value
            Else
                For N = 1 To UBound(temp)
                    If temp(N) = .Cells(i, 1).Value Then
                        Exit For
                    ElseIf N = UBound(temp) Then
                        ReDim Preserve temp(UBound(temp) + 1)
                        temp(UBound(temp)) = .Cells(i, 1).Value
                    End If
                Next N
            End If
        Next i
        MsgBox "Il y a " & UBound(temp) & " noms différents"
    End With

End Sub

Bonjour, Salut à tous !

Dim temp

Sub Test()
    Dim d As Object, i%
    Set d = CreateObject("Scripting.Dictionary")
    temp = Worksheets("Feuille").Range("A1").CurrentRegion
    For i = 2 To UBound(temp)
        d(temp(i, 1)) = ""
    Next i
    temp = d.keys
End Sub

Tu obtiendras un tableau de base 0 de tes noms.

Pour vérifier :

Sub TestTest()
    Dim i%
    For i = 0 To UBound(temp)
        MsgBox temp(i)
    Next i
End Sub

Cordialement.

Merci pour vos réponses. Effectivement je suis partie sur une variable tableau. Je vais regarder vos propositions mais j'avais plus ou moins réussi à faire ce que je souhaité. Après si je peux optimiser avec vos codes c'est tout bénéf.

Encore merci

Rechercher des sujets similaires à "nom variable boucle"