Concaténation variable publique
Bonjour,
J'ai 5 variables publiques : SousPerimetre1 à SousPerimetre5, auxquelles j'ai déjà affecté des valeurs. Je voudrai leur donner la valeur nulle en fonction de la valeur de la case à cocher correspondante. Les cases à cocher sont nommées Case_1 à Case_5. J'ai essayé le code suivant :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| Private Sub Image_Valider_Click()
For i = 1 To 5
If Forms![03ChoixPerimetre].Controls("Case_" & i).Visible = True And _
Forms![03ChoixPerimetre].Controls("Case_" & i).Value = 0 Then
SousPerimetre & i = ""
End If
Next i
DoCmd.Close acForm, "03ChoixPerimetre"
DoCmd.OpenForm ("04ConstructionOuSuivi")
End Sub |
Il ne fonctionne pas, j'aimerai savoir si la concaténation est possible sur une variable publique. J'ai essayé les parenthèses, et plein d'autres choses mais rien ne fonctionne. Pouvoir concaténer des variables me serait utile dans d'autres codes également...
Une solution au Pb de concatenation de variable : créer un dictionnaire
J'ai vu plusieurs fils sur Developpez.com dont je me suis inspiré pour trouver cette solution pour un petit jeu romain que je construits (XII Scripta).
J'espère qu'il pourra vous aider. (Il y a d'autres posts qui posent des questions semblables, celui-ci me semble le plus approchant, la solution marche aussi en VBA Excel).
Donc, je me suis basé sur un dictionnaire via lequel je peux appeler chacune des variables par un libellé concaténé, voici le code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| 'Déclarations
Public VarDict 'Le fameux dictionnaire en fait un tableau
Public JetonsPotA As Integer 'nom de variable codifié en 2 parties
Public JetonsPotB As Integer 'autre nom de variable codifié en 2 parties
Public AleaJactaEst As Boolean 'Alea jacta est : Les dés sont jetés
Dim Lettre As String
'Initialisations
JetonsPotA = 15
JetonsPotB = 10
Lettre = "A"
'Création du "dictionnaire"
Set VarDict = CreateObject("Scripting.Dictionary")
VarDict.Add "AleaJactaEst", AleaJactaEst
VarDict.Add "JetonsPotA", JetonsPotA
VarDict.Add "JetonsPotB", JetonsPotB
'Message de test
MsgBox "Nombre de jetons dans le pot " & Lettre & " : " & VarDict("JetonsPot" & Lettre) |
>> Nombre de jetons dans le pot A : 15
A mon tour je pose une question est-il pertinent d'utiliser des noms de variable codifiés ? D'une manière générale, il y a-t-il une solution plus élégante, avec des tableaux par exemple ?