Mention de variables par concaténation

Bonsoir à tous,
Pour faire bref, je voudrais mentionner des variables telles que :

Const table_names_1 = "ARC"
Const table_names_2 = "BZT"
Const table_names_3 = "COR"
Const table_names_4 = "xxx"
Const table_names_5 = "xxx"

Et pouvoir utiliser une fonction qui fait ça par exemple :

For i = 1 To 3
    MsgBox ("table_names_" & i)
Next

Pour m'écrire : "ARC", "BZT", ... et pas table_names_1, table_names_2, ... comme un str

bonjour,

utilise une array vba

dim table_names(1 to 5)
table_names(1)="ARC"
table_names(2)="BZT"
table_names(3)="COR"
table_names(4)="xxx"
table_names(5)="xxx"
'....
for i=1 to 3
msgbox table_names(i)
next i

Bonjour

Oui c'est ce que je fait déjà, mais le problème avec cette méthode c'est qu'on est obligé de répéter le même tableau au début de chaque fonction qui utilise ces données.
Donc est-ce que la méthode par concaténation est possible ? Car la taille du tableau va augmenter avec le temps (jusque 20 voir plus)
En soit répéter le tableau est possible, mais c'est plus d'un point de vue esthétique, et de taille de code
Merci

re,

Oui c'est ce que je fait déjà, mais le problème avec cette méthode c'est qu'on est obligé de répéter le même tableau au début de chaque fonction qui utilise ces données.

il est tout à fait possible de définir une variable globale et de prévoir une procédure d'initialisation du tableau.

Donc est-ce que la méthode par concaténation est possible ?

non, faire de la concaténation pour adresser une variable VBA n'est pas possible en VBA (il y aurait bien sûr des possibilités en passant par des objets excel, par exemple des plages nommées, ...)

Re

non, faire de la concaténation pour adresser une variable VBA n'est pas possible en VBA (il y aurait bien sûr des possibilités en passant par des objets excel, par exemple des plages nommées, ...)

C'est bien ce qu'il me semblait, je ne trouvais aucune donnée à ce sujet sur internet

il est tout à fait possible de définir une variable globale et de prévoir une procédure d'initialisation du tableau.

Et en quoi cela consiste ? Avec cette méthode donc, je n'aurais besoin de définir qu'une seule fois mes variables, c'est bien ça ?

re,

Avec cette méthode donc, je n'aurais besoin de définir qu'une seule fois mes variables, c'est bien ça ?

c'est bien ça. Voici un exemple à mettre dans un module standard

Public table_names

Sub init_table_names()
    table_names = Split(",ARC,BZT,HIJ,KLM,ZPQ", ",")
End Sub

Sub exemple()
    init_table_names
    test
End Sub

Sub test()
    For i = 1 To UBound(table_names)
        MsgBox table_names(i)
    Next i
End Sub

Okay, d'accord, donc si je comprends bien, tu créer une sorte de liste via une fonction en fait, et tu peut donc choisir l'indice correspondant...
Intéressant,

Merci beaucoup !

Alors par contre ces nom (ARC, BZT, ...) sont des noms de sheets, or il me semble avoir besoin de guillemet pour les mentionner, non ?

re,

or il me semble avoir besoin de guillemet pour les mentionner, non ?

non, pas si elles sont dans une variable. Sauf si tu les utilises dans des fonctions excel

essaie ceci, tu verras...

Sub test()
    For i = 1 To UBound(table_names)
        Sheets(table_names(i)).select
        MsgBox "feuille " & table_names(i) & " sélectionnée"
    Next i
End Sub

Et oui en effet, tu as a raison (comment ne pourrait tu pas l'être), mais alors pourquoi lorsqu'on mentionne une feuille comme dans WorkSheets("ARC") on doit mettre des guillemets ? Car avec cette méthode elles ne sont pas présentes, et ça fonctionne très bien !
En tout cas merci beaucoup, mon code et bien plus propre maintenant !

on met les guillemets pour définir une chaine de caractères. Si on ne met pas les guillemets on prend le contenu de la variable

exemple

Sub test()
    BZT = "Bazar"
    MsgBox "on affiche le contenu de la variable vba BZT " & BZT
    MsgBox "on affiche la chaine de caractères BZT" & "BZT"
End Sub

Okay je comprends beaucoup mieux, je ne referais plus l'erreur, merci bien à vous !

Rechercher des sujets similaires à "mention variables concatenation"