Appel une variable depuis userform VBA excel

Fermé
jo - 1 août 2008 à 11:39
 HightFive - 17 nov. 2012 à 11:12
Bonjour,

Bonjour,

Je suis débutant sur VBA.
J'ai un petit problème et j'espère que quelqu'un pourra m'aider.
Mon pb concerne l'utilisation des variables.

Je souhaiterais faire appel à une variable comprise dans un module depuis un UserForm.

J'ai affecté dans ma procédure des variables à des cellules excel, ex: variable1 = Feuil1.cells(1,1).value
Mais pour chaque nouvelle procedure dans mon module, je doi redefinir cette même variable.
Comment éviter cela?
De plus, je souhaiterais, à l'activation d'un UserForm (UserForm_activate), inserer par defaut dans un textbox la valeur de cette variable.
Si je fais : textbox = Feuil1.cells(1,1).value ==> ca marche
textbox =varaible1 ==> ca ne marche pas

Comment faire?

Merci d'avance pour votre aide,

Jo
A voir également:

7 réponses

dandypunk Messages postés 831 Date d'inscription jeudi 3 janvier 2008 Statut Membre Dernière intervention 11 septembre 2011 83
1 août 2008 à 15:00
Il faut déclarer ta variable comme Public. Elle sera alors visible par toutes les parties du code.

Dans la partie Déclaration de ThisWorkBook, insère Public MaVariable As ...
3
Salut,
Il faut que tu récupères ta valeur et que tu la stocke dans une variable PUBLIQUE à l'ensemble de ton projet et non pas que tu identifie la variable à la cellule.
Pour cela, tu dois la définir dans une procédure publique (public sub() et non pas private sub()).
Une fois que ta variable aura récupérer ta valeur, tu pourras l'utiliser à l'endroit que tu voudras de ton application.
Cette technique marche parfaitement, bon courage !!
1
Merci pour votre solution vbfuté et dandypunk,


Par contre j'ai une autre question :
Est il possible a partir d'un userform de reprendre une procedure en cours ?
ex:
je lance une procedure
ma procedure debute par une boucle
sous condition un userform s'affiche
selon que je valide ou annule une action à partir de ce userform, je reprends ma boucle en cours à tel ou tel niveau de ma procedure.


Merci
jo
0
Alors je pense que c'est possible, et dans ce cas on fait une boucle dans une autre boucle. Je m'explique :

SI (MaCondition = vrai) ALORS
{ Lancement de l'userform
SI (MonAction = 1) ALORS
{Bloc d'instructions}
SINON
{Bloc d'instructions}
}
SINON
{Bloc d'instructions}.

Si je ne me trompes pas, c'est possible de cette manière.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Oui merci, ca marche de cette manière.

Par curiosité, est ce possible d'intégrer une procedure en cours?

Jo
0
Bonjour,
j'ai beau essayer, je n'arrive pas à utiliser la meme variable dans plusieurs userform....

J'ai bien placé ma "public CDest as string" dans la partie déclaration de thisworkbook
mais ca ne marche pas.... j'ai fait unt truc tout simple pour essayer:

*userform1:
Private Sub CommandButton1_Click()
CDest = "test"
UserForm2.Show
End Sub

l'info se met bien dans CDest
*userform2:
Private Sub UserForm_Activate()
TextBox1.Value = CDest
End Sub

Aucune info ne passe entre les deux... la variable CDest n'est remplie que dans la userform 1... :( :(
Ou est mon erreur?

merci d'avance
0
bonjour,

J'ai eu ce problème moi aussi, je pense qu'il n'est pas possible de mettre une variable public dans un userform. Tu peux le contourner en créant ta variable public dans un module standard(par exemble celui qui lancera ton userform) puis la réutiliser comme il te plaira dans chacun des userforms utilisés.

Je m'explique :

Tu as un premier module :

Public x as string
Sub macro1()
userform1.show
End Sub

Puis tes userforms :

*userform1:
Private Sub CommandButton1_Click()
x = "test"
UserForm2.Show
End Sub


*userform2:
Private Sub UserForm_Activate()
TextBox1.Value = x
End Sub
0