Déclaration de variable VBA en Public
Fermé
hydracom
Messages postés
29
Date d'inscription
jeudi 24 avril 2008
Statut
Membre
Dernière intervention
15 juin 2010
-
27 mars 2009 à 11:15
Ben - 9 mars 2010 à 11:44
Ben - 9 mars 2010 à 11:44
A voir également:
- Déclaration de variable VBA en Public
- Déclaration de revenus - Guide
- Proximus public wifi password free - Forum Bbox Bouygues
- Ip public - Guide
- Impossible de créer le fichier de travail. vérifiez la variable d'environnement temp ✓ - Forum Word
9 réponses
leplot
Messages postés
191
Date d'inscription
lundi 1 décembre 2008
Statut
Membre
Dernière intervention
13 août 2015
131
27 mars 2009 à 11:42
27 mars 2009 à 11:42
Bonjour,
je ne suis pas un spécialiste et j'ai eu le même problème.
Je l'ai contourné en créant une zone dans le Userform . Cette zone n'est pas visible. Elle me sert à stocké la valeur de la variable provenant de la macro. Dans le Userform, j'utilise la zone.
Voici le code que j'ai au niveau du bouton de lancement d'un userform "SaisieDonnées" avec une variable pour savoir s'il s'agit d'une nouvelle ligne.
Load SaisieDonnées
SaisieDonnées.NouvelleLigne = True
SaisieDonnées.Show
==> chargement du userform, entrée de la valeur dans la zone "NouvelleLigne" et affichage du userform
Une autre solution est de stocké le résultat de la variable dans une cellule d'une feuille et d'avoir une zone du userform qui pointe sur cette cellule. Mais le principe est le même.
Par contre, si quelqu'un connaît une solution plus propre, je suis preneur.
je ne suis pas un spécialiste et j'ai eu le même problème.
Je l'ai contourné en créant une zone dans le Userform . Cette zone n'est pas visible. Elle me sert à stocké la valeur de la variable provenant de la macro. Dans le Userform, j'utilise la zone.
Voici le code que j'ai au niveau du bouton de lancement d'un userform "SaisieDonnées" avec une variable pour savoir s'il s'agit d'une nouvelle ligne.
Load SaisieDonnées
SaisieDonnées.NouvelleLigne = True
SaisieDonnées.Show
==> chargement du userform, entrée de la valeur dans la zone "NouvelleLigne" et affichage du userform
Une autre solution est de stocké le résultat de la variable dans une cellule d'une feuille et d'avoir une zone du userform qui pointe sur cette cellule. Mais le principe est le même.
Par contre, si quelqu'un connaît une solution plus propre, je suis preneur.
Bonjour à tous,
Après m'être également pris la tête, j'ai réussi à trouver la solution. Dans mon cas, j'ai besoin d'une variable mode (type String) qui va conditionner la suite du traitement par la macro. Je l'avais déclarée en public mais dans "ThisWorkbook", et cela ne fonctionnait pas (mes tests tournaient dans le vide et rien ne se passait).
La solution : déclarer les variables en public directement dans les modules !
Le plus propre seon moi : créer un module "Variables" qui contiendra toutes les variables suceptibles d'être utilisés par plusieurs procédures dans des modules/feuilles différentes.
J'espère vous avoir éclairés.
Cdt,
Supergaga
Après m'être également pris la tête, j'ai réussi à trouver la solution. Dans mon cas, j'ai besoin d'une variable mode (type String) qui va conditionner la suite du traitement par la macro. Je l'avais déclarée en public mais dans "ThisWorkbook", et cela ne fonctionnait pas (mes tests tournaient dans le vide et rien ne se passait).
La solution : déclarer les variables en public directement dans les modules !
Le plus propre seon moi : créer un module "Variables" qui contiendra toutes les variables suceptibles d'être utilisés par plusieurs procédures dans des modules/feuilles différentes.
J'espère vous avoir éclairés.
Cdt,
Supergaga
garion28
Messages postés
1545
Date d'inscription
mardi 16 juin 2009
Statut
Membre
Dernière intervention
3 avril 2011
406
4 mars 2010 à 09:19
4 mars 2010 à 09:19
dans ton module quelque soit le nom
tu tape en dehors d'une méthode (fonction ou procédure)
public dim strvar as string
ensuite tu peu faire appel a la variable strvar n'importe ou (a part directement dans les cellule du classeur puisque ca n'utilise pas de vba)
tu tape en dehors d'une méthode (fonction ou procédure)
public dim strvar as string
ensuite tu peu faire appel a la variable strvar n'importe ou (a part directement dans les cellule du classeur puisque ca n'utilise pas de vba)
" Public Dim sProfile_ID As String " ça me met ça en rouge ???
Est ce quand je crée mon module il n'y a qu'une ligne à mettre ? Juste ça ? Je suis débutant dsl :(
Est ce quand je crée mon module il n'y a qu'une ligne à mettre ? Juste ça ? Je suis débutant dsl :(
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
garion28
Messages postés
1545
Date d'inscription
mardi 16 juin 2009
Statut
Membre
Dernière intervention
3 avril 2011
406
4 mars 2010 à 09:44
4 mars 2010 à 09:44
ah oui autant pour moi, il ne faut pas mettre de dim, juste public strvar as string
Oui, c'est ce que je pensais ;)
Est ce que l'on déclare toute les variables à la suite de la même manière sans rien ajouter d'autre ???
Seulement des déclarations de variable dans le module ? Pas de End qqch ?
Est ce que l'on déclare toute les variables à la suite de la même manière sans rien ajouter d'autre ???
Seulement des déclarations de variable dans le module ? Pas de End qqch ?
garion28
Messages postés
1545
Date d'inscription
mardi 16 juin 2009
Statut
Membre
Dernière intervention
3 avril 2011
406
4 mars 2010 à 10:13
4 mars 2010 à 10:13
si tu met un end quelque chose ca veut dire que tu es dans une méthode (fonction ou procédure) ce qui veut dire que ton public var as string n'as rien a faire là ^^
les variables globales se déclare a part du programme
les variables globales se déclare a part du programme
Bonjour Garion ! Comme promis je reviens à toi :-)
Merci encore pour ton aide de la semaine dernière.. Voiçi une nouvelle question (tin tin tin):
Dans mon appli Access VB, la première chose que je récupère est le nom du user connécté, puis son profile avec un DLookup via le code suivant:
oProfileID = DLookup("[PROFILE_ID]", "tbl_Users", "[USER_NAME]= '" & Environ("USERNAME") & "'")
oFormID = DLookup("[Form_ID]", "tbl_Forms", "[Form_Name]= '" & Me.Name & "'")
Cependant, comme cette action doit impérativement être éxecuter à chaque ouverture de form de la base de données, j'aimerais faire en sorte de n'éxecuter ceci qu'une seule fois sur le premier form ouvert par le user et non à chaque ouverture d'un nouveau form. En quelque sorte garder cette info (ProfileID) en mémoire...
Ma question: COMMENT FAIRE ???
Merci par avance !!!
Merci encore pour ton aide de la semaine dernière.. Voiçi une nouvelle question (tin tin tin):
Dans mon appli Access VB, la première chose que je récupère est le nom du user connécté, puis son profile avec un DLookup via le code suivant:
oProfileID = DLookup("[PROFILE_ID]", "tbl_Users", "[USER_NAME]= '" & Environ("USERNAME") & "'")
oFormID = DLookup("[Form_ID]", "tbl_Forms", "[Form_Name]= '" & Me.Name & "'")
Cependant, comme cette action doit impérativement être éxecuter à chaque ouverture de form de la base de données, j'aimerais faire en sorte de n'éxecuter ceci qu'une seule fois sur le premier form ouvert par le user et non à chaque ouverture d'un nouveau form. En quelque sorte garder cette info (ProfileID) en mémoire...
Ma question: COMMENT FAIRE ???
Merci par avance !!!