Rechercher : dans
Par :

Déclaration de variable VBA en Public

Dernière réponse le 19 aoû 2009 à 13:39:13 hydracom, le 27 mar 2009 à 11:15:54 
 Signaler ce message aux modérateurs

Bonjour,

J'ai un petit soucis qui m'a pris 3 heures de prendre la tête >.<

J'ai une feuille Excel, sur laquelle j'ai un bouton macro de commande "Démarer".

En appuyant sur ce bouton, un userForm est affiché. Sur celui là il y a un menu déroulant (ComboBox) qui contient des noms des machines que je dois choisir ... et un autre bouton "Ajout de machine" qui permet d'ajouter dans la liste une autre machine en tapant son nom dans la case à coté de ce dernier.

Sachant que chaque fois quand j'appuie sur "Démarer", il va charger la liste du menu déroulant (ComboBox) avec les noms standards des machines. C'est à dire que si j'utilise seulement la commande .AddItem, il ne va pas tenir compte des noms ajoutés.

J'ai utilisé alors une matrice de 1 colonne et 20 lignes matrice(0 to 19)

-Avec le bouton "démarer", je charge des noms standards (il y en a 5) dans les 5 premières cases de la matrice.
-Puis j'utilise la commande .AddItem Matrice(i) si Matrice(i) <> "" pour le ComboBox dans UserForm
-Puis j'appelle une variable NouvelleMachine et vérifier si elle est vide, si NON VIDE je vais rajouter dans ma matrice, à la première case vide que je trouve, cette valeur.

-En fin, je fais afficher UserForm

+ Avec le bouton "Ajouter" sur UserForm, je donne à ma variable "NouvelleMachine" le nom qui est tapé par Utilisateur.
+ Je fais exécuter les autres opérations et je ferme UserForm.

Problème : La NouvelleMachine est une variable qui doit être connue à la fois par la Macro dans la Feuille Excel et à la fois par le macro dans l'UserForm. Je l'ai déclaré entant que Public au début de mon UserForm mais ça marche pas, non plus si je déclare en tant que public au début des codes de la Feuille Excel.

Et bien sur, quand je fais afficher NouvelleMachine, dans UserForm elle tient compte bien des noms entrés, mais elle est "" - Nothing dans la Feuille Excel.

Comment dois je faire ?

J'espère que vous pouvez comprendre le problème :-S car cé pas évident pour un étranger d'expliquer tout détaillé en français les algorithmes ...

Je vous remercie de votre attention :-)

Configuration: Windows XP
Firefox 3.0.7

Meilleures réponses pour « Déclaration de variable VBA en Public » dans :
VBA et les collections d'objets. VoirVBA et les collections d'objets Quand plusieurs (beaucoup de) contrôles sont mis sur une feuille ou un Userform il est parfois fastidieux d'écrire du code dans chaque évènement des contrôles. Ce Tuto vous permet de traiter vos contrôles comme...
VBScript - Les variables VoirLe concept de variable Une variable est un objet repéré par son nom, pouvant contenir des données, qui pourront être modifiées lors de l'exécution du programme. Il s'agit en fait d'une zone de la mémoire réservée pour le stockage d'une valeur. Les...
Javascript - Les variables VoirLe concept de variable Une variable est un objet repéré par son nom, pouvant contenir des données, qui pourront être modifiées lors de l'exécution du programme. En Javascript, les noms de variables peuvent être aussi long que l'on désire,...
Langage C - Les variables VoirLe concept de variable Une variable est un objet repéré par son nom, pouvant contenir des données, qui pourront être modifiées lors de l'exécution du programme. Les variables en langage C sont typées, c'est-à-dire que les données contenues dans...

1

leplot, le 27 mar 2009 à 11:42:37

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.
LePlot
_________________________________________________________________
N'oubliez pas de mettre le statut en Résolu lorsque la solution a été trouvée. Merci

Répondre à leplot

2

 supergaga, le 19 aoû 2009 à 13:39:13

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

Répondre à supergaga
Collection CommentÇaMarche.net