Appel d'une même procédure mais avec différentes variables
Bonjour le forum,
Je sèche un peu concernant les variables...
J'ai un Userform qui comporte 5 Labels.
Chaque Label doit incrémenter sa propre variable et ensuite lancer une procédure en fonction de cette variable
Exemple :
Sub LabActivite_Click()
VarActivite = VarActivite + 1
if VarActivite = 1 then
'procedure1 a effectuer
elseif VarActivite = 2 then
'procedure2 à effectuer
VarActivite = 0
End if
'Suite de la procédure (identique pour tous)
End Sub
Sub LabSecteur_Click()
VarSecteur = VarSecteur + 1
if VarSecteur = 1 then
'procedure1 a effectuer
elseif VarSecteur = 2 then
'procedure2 à effectuer
VarSecteur = 0
End if
'Suite de la procédure (identique pour tous)
End Sub
Chaque Label a donc le même code mais pas avec la même variable. Ils ont donc tous quasiment le même long code et je souhaiterais raccourcir tout ça en mettant toute la procédure dans un module à part, du genre :
[code]Sub LabActivite_Click()
VarLabel = Var & "Activite"
Call Procedure
End Sub
Sub LabSecteur_Click()
VarLabel = Var & "Secteur"
Call Procedure
End Sub
Sub Procedure()
if VarLabel = 1 then
'procedure1 a effectuer
elseif VarLabel = 2 then
'procedure2 à effectuer
VarLabel = 0
End if
'Suite de la procédure (identique pour tous)
End Sub
Savez-vous si cela est possible ?
Merci à tous !
Bonjour,
Tu as plusieurs possibilités, voilà 3 exemples :
Sub Test()
Dim VarTxt As String
VarTxt = "Truc"
Call ProcDependante(VarTxt)
End Sub
Sub ProcDependante(LaVariable As String)
Select Case LaVariable
Case "Truc"
'procedure1 a effectuer
Case "Machin"
'procedure2 à effectuer
End Select
'Suite de la procédure (identique pour tous)
End Sub
Sub Test()
Dim VarTxt As String
VarTxt = "Truc"
Select Case VarTxt
Case "Truc"
Call Procedure1
Case "Machin"
Call Procedure2
End Select
'Suite de la procédure (identique pour tous)
End Sub
Sub Procedure1
'procedure1 a effectuer
End Sub
Sub Procedure2
'procedure2 a effectuer
End Sub
Dim VarTxt As String
Sub Test()
VarTxt = "Truc"
Call ProcDependante()
End Sub
Sub ProcDependante()
Select Case VarTxt
Case "Truc"
'procedure1 a effectuer
Case "Machin"
'procedure2 à effectuer
End Select
'Suite de la procédure (identique pour tous)
End Sub
Bonjour Pedro22,
Merci pour ces 3 propositions, je vais voir si c'est adaptable à mon code.
J'ai juste peur que cela n'agrandisse encore mon code au lieu de justement l'alléger.
Et merci pour la rapidité !
Je me permet de reposer ma question mais de manière différente:
Admettons que j'ai 1 variable par Label
Option Explicit
Global VarActivite as Byte 'variable unique pour chaque label
Global Nom1 as String
Global Nom2 as String
Global VarTotal as byte
Sub LabelActivite_Click()
VarActivité = 5'Variable différente dans chaque label
Nom1 = "Var"
Nom2= "Activite"
VarTotal = Nom1 & Nom2 'cette variable doit ensuite être utilisée dans une même grosse procédure et doit faire référence à la variable du bon label
Call GrosseProcedure 'qui utilisera VarTotal
End Sub
Cette instruction me renvoie pour VarTotal le mot "VarActivité" or je voudrais que ça me renvoie la valeur 5.
Le fait de "concaténer" Nom1 et Nom2 ne me renvoie pas la variable VarActivité. Excel ne comprend pas que je cherche à récupérer une variable différente en fonction du label sur lequel je clique...
Le Label LabActivité utilise VarActivité
Le Label LabSecteur utilise VarSecteur
Le Label LabEtat utilise VarEtat
etc
Comment est-il donc possible de créer une variable générale qui récupère la variable du label qui a été cliqué ?