Passage de variables Excel-Vba

  • Initiateur de la discussion Ludo-ly
  • Date de début
L

Ludo-ly

Guest
Bonjour à tous,

Après avoir lu plusieurs "posts" sur ce forum, j'ai eu beau suivre certaine indications mais cela ne résoud pas mon problème que voici :

J'ai un bouton sur une feuille Excel qui lance une procédure principale "Public Sub Traitement01" qui elle-même ouvre un formulaire "Public Sub Form01".

Pourquoi "Public" car je voudrais que les variables utilisées dans la procédure du formulaire (Form01) soient disponibles dans la procédure principale (Traitement01), enfin la valeur de ces variables.

Cela ne fonctionne pas. J'ai, par exemple, voulu annuler toutes les procédures en cours à partir du bouton "Annuler_Form01" de "Form01" (car soit dit en passant je n'ai trouvé aucune fonction qui le permette sauf celle qui ferme Excel), et pour cela j'ai utiliser la variable booléenne "Annuler_procedure" de façon à ce que si sa valeur est "True", je réalise dans "Traitement01" un "Exit Sub".

Hélas, le contenu de la variable "Annuler_procedure" n'est pas conservé à la fermeture du formulaire (2 tests effectués avec "Unload Form01" et "Form01.Hide"). J'ai aussi tenter une déclaration de la variable en Static dans "Traitement01", pas mieux, et une déclaration hors procédure en Public, idem.

Si quelqu'un pouvait me fournir une astuce ou me mettre sur la voie d'une autre façon de procéder, ...

Merci d'avance.
 
A

antoine

Guest
salut

ch'uis en pleine digestion donc je suis pas sur d'avoir saisi toute la substance de ton message. Mais je crois que ce que tu veut c'est pouvoir avoir des variables qui ont une porté au niveau projet ? ( et pas procedure )
si oui, alors il faut que tu les dimensione dans "général" et dans un module. ( apparament tu as déja le module, et bien dimensione ta variable comme ça au tout début du module ( avant le premier public_sub )

Public TaVariable as TonTypeDeVariable

Vala, ta variable est appelable de partout.
 
L

Ludo-ly

Guest
Merci Antoine,

Tu as compris effectivement ce que je voulais faire sauf sur un point, c'est le contenu de la variable que je veux pouvoir utiliser dans tous le projet.

J'avais déjà essayé de faire une déclaration de la variable au niveau public et dès la première procédure Vba appelée.

Il y a effectivement un mieux, au lieu d'avoir un contenu de variable vide, j'ai sa valeur par défaut (dans le cas d'un booléen "False") mais cette valeur n'est pas modifiée par la sous-procédure (qui lui donne la valeur "True") incluse dans le formulaire appelé par la procédure principale.

Quelqu'un a-t-il une autre solution ?

Je vous join un exemple.
 

Pièces jointes

  • Test_Import_Access.zip
    23.1 KB · Affichages: 135
P

Pascal76

Guest
salut

Si tu déclares bien ta variable public avant la procédure dans un module tu récupères bien sa valeur comme antoine te l'a dit.

Toi tu l'as déclaré public dans une feuille et pas dans un module.

Bon courage

Pascal
 
L

Ludo-ly

Guest
Salut Antoine,

Je te remercie, cela fonctionne bien avec un module.

Je n'avais pas pris en compte la différence entre module et feuille ou formulaire.

Par contre, tu ne saurais pas s'il y a une fonction qui permet d'arrêter toutes les procédures sans sortir d'Excel ?

Ludo.
 
A

antoine

Guest
si si
c'est fort pratique d'ailleurs

utilise "exit" ou "exist sub" selon les cas. concrétement il arrete la procédure quand il arrive là. donc tout le code qui suit n'est pas exécuté
 
L

Ludo-ly

Guest
Merci Antoine,

C'est donc ce que j'utilise déjà et qui fonctionne maintenant, grâce à votre aide, en utilisat le passage de variable publique déclaré dans un module qui permet de savoir si dans mon projet le bouton Annuler a été cliqué.

Ludo.
 

Discussions similaires

Réponses
21
Affichages
322

Statistiques des forums

Discussions
312 361
Messages
2 087 617
Membres
103 607
dernier inscrit
lolo1970