(VBA) Variables numérotées dans boucle For

Cricriiii

XLDnaute Nouveau
Bonjour à tous,

Tout d'abord meilleurs vœux :)

Ma question est la suivante : Comment écrire une boucle à effectuer un nombre variable de fois, dans laquelle je définis la valeur d'une variable dont l'indice est celui du numéro de la réitération ?
De façon illustrée, comment écrire la ligne indiquée plus bas?

VB:
'Exemple schématique

    Dim v1 As Long, v2 As Long, ..., v10 As Long
    Dim Nombre_de_variables_nécessaires As Long


'Calcul Nombre_de_variables_nécessaires

    Nombre_de_variables_nécessaires = [Code pour le calcul]


'Affectation des variables

    For i = 1 To Nombre_de_variables_nécessaires
        "v" & i = [La valeur]     'Ma question porte sur cette ligne
    Next


J'ai en tête en guise d'analogie, pour les contrôles notamment, Controls("Nom générique" & i).
Y a-t-il un truc équivalent pour les variables ?

Du coup, y a-t-il également moyen de mettre dans la boucle un truc du style :

VB:
    For i = 1 To Nombre_de_variables_nécessaire
 
        Dim "v" & i As Long
     
    Next

Je vous remercie :)
 
Dernière édition:

eriiic

XLDnaute Barbatruc
Bonjour,

meilleurs voeux pour 2020 également.

Non, mais tu as les variables tableaux. Ex :
VB:
    Dim nbVar As Long, v() 'v variant ou As Long, As String, etc
    Dim i As Long
    nbVar = 3 * 2
    ReDim v(1 To nbVar)

    For i = 1 To UBound(v) ' ou To nbVar
        v(i) = 3
    Next i
eric
 

Cricriiii

XLDnaute Nouveau
Merci ! Ça marche au poil et c'est joli comme solution !
:cool:

J'ai remarqué un seul point d'attention, bien que ce ne soit pas handicapant pour mon besoin d'aujourd'hui : Les variables ne sont pas créées, de sorte qu'il n'est apparemment pas possible de faire référence par la suite à par exemple v8, indépendamment.

Merci encore ! :D
 

eriiic

XLDnaute Barbatruc
Ben si elles sont crées.
Déjà ça sera msgbox v(8) et non v8 pour l'utiliser.
Ensuite si tu dois l'utiliser dans une autre procédure il faut déclarer Dim v() en tête du module, avant toute procédure.
Et si cette autre procédure l'utilisant est dans un autre module il faudra la déclarer Public (et non avec Dim) dans un module Standard (pas de feuille, etc).
Fait une petit recherche sur portée et durée de vie des variables.
eric