XL 2016 Affecter les valeurs de variables une seule fois sur x routines

Attila451

XLDnaute Occasionnel
Bonjour,
J'ai un fichier excel avec 3 routines, j'arrive a définir les variables sans les intégrer dans les routines, par contre, je suis obligé d'intégrer dans chaque routines les valeurs des variables. Comment procéder svp pour définir une seule fois les valeurs des variables pour que toutes les routines s'y réfèrent ?
Merci d'avance pour votre aide !
 

TooFatBoy

XLDnaute Barbatruc
Bonjour,

Tu peux passer tes variables, en tant que paramètres, à tes macros.
Tu le fais, soit par adresse, soit par valeur, selon si tu veux que ces variables soient, ou non, modifiées au retour des macros.

Tu peux aussi modifier la portée de tes variables, en les déclarant au bon endroit (par exemple en début de module si toutes les macros qui les utilisent sont dans le même module), ou en les déclarant carrément en global (sous Excel ça doit s'appeler "Public", je crois) pour qu'elles soient accessibles par toutes les macros.
 

Staple1600

XLDnaute Barbatruc
Bonjour

Pas sur d'avoir bien compris
Mais voici ce que j'ai pondu avec ce que j'ai compris ;)
VB:
Const Bazinga As String = "0061elpats"
Sub testA()
msgbox Bazinga
End Sub
Sub testB()
msgbox StrReverse(Bazinga)
End Sub
Sub testC()
msgbox StrConv(StrReverse(Bazinga), vbProperCase)
End Sub
 

jmfmarques

XLDnaute Accro
Bonjour
J'ai également des difficultés à comprendre ce qui ressemble à un appel téléphonique adressé à Paul pour lui demander son N° de téléphone .
Comment peut-on à la fois "définir" et utiliser depuis et dans 3 routines à la fois. Je ne vois personnellement qu'un moyen : que la première de ces trois procédures appelées "fasse le boulot" (d'initialisation de ces valeurs, à portée générale).
 

Attila451

XLDnaute Occasionnel
Bonsoir,
Désolé si ma demande n'est pas claire..
J'ai 3 macros qui effectuent des opérations sur un même fichier xl.
Le fichier a x colonnes.
Pour la 1ère macro, je défini dedans les variables et leur valeurs. Pareil pour la 2ème et la 3ème.
Si je créé une 4ème, une 5 ème macro, je vais encore rajouter dans les macros les variables et leur valeurs.
Ma demande est peut on definir hors des macros et en une seule fois les variables et leurs valeurs ?
Ex:

Dim xx as long
Dim yy as long

xx=2
yy= 3

macro1
macro2
macro3

L'exemple est simplifié mais si j'ai 15 variables, et que je modifie une valeur, je ne change qu'au début du module les variables et leur valeurs sans les changer dans toutes les macros.
Ca marche en définissant le type de variables, mais pas leurs valeurs que je suis obligé de mettre dans toutes les macros.
J'espère avoir été plus clair, merci d'avance.
 

TooFatBoy

XLDnaute Barbatruc
Il a répondu qu'il allait tester. ;)

Pour te détendre, oublier le confinement, oublier ce virus : pense au soleil, la mer, la plage...
photo-d-illustration-domaine-public-pixabay-1582929581.jpg
 

Attila451

XLDnaute Occasionnel
Bonsoir Staple1600,
Désolé pour l'angoisse, courage, c'est bientôt l'heure de l'apéro !
Désolé également pour l'exemple, mais je n'arrive pas à l'appliquer (meme sans avoir commencé l'apéro)..
Par contre, Marcel 32, j'ai essayé mais ça plante...
Je vais essayer d'être plus précis:
Je part d'un tableau excel qui à plus de 30 colonnes.
C'est un tableau que je partage avec un client et le tableau peut être "enrichi" de nouvelles colonnes.
Pour éviter de planter toutes mes macros j'utilise le nom de la colonne pour éviter que tout soit décalé si le client rajoute une colonne (par ex cells(numligori,depart) au lieu de cells(numligori,15).
J'ai une feuille "séquence" qui reprends toutes les étiquettes de colonne et avec une formule equiv,
j'ai les valeurs de toutes les colonnes. En utilisant les formules concatener je bricole toutes me variables, je définis leur valeurs et je n'ai plus qu'à copier coller dans un module.

Si je démarre une macro, comme toutes mes colonnes sont définies par des variables, j'ai une 30 aine de variable as long, et en dessous les 30 variables avec les valeurs des colonnes. Soit 60 lignes à peu près. Ca marche, là n'est pas le probleme.

Pour la 1ère macro, j'ai mes 60 lignes et en dessous le programme.
Pour la 2ème macro, j'ai à nouveau les 60 lignes et un autre programme
pour la 3ème re belotte et ainsi de suite.

Si le client rajoute une colonne, je vais dans mon bidouillage de séquence mais mon problème et que je dois coller toutes les variables et valeurs dans les 3 macros, comme j'en ai une 20aine... c'est pas super rapide...


Marcel, j'ai un bug :
Dim xx as long
Dim yy as long

Sub macro0
xx=2
yy= 3
End Sub

macro1
macro2
macro3


Si les valeurs des variables sont dans macro0, comment tu fais pour qu'elles fonctionnent dans macro1 ? Si j'insère call macro0 dans macro1, la macro0 est lue mais le endsub fait qu'elle ne peut plus être utilisée dans macro1 ?
Je ne comprends pas comment faire ?
 

TooFatBoy

XLDnaute Barbatruc
Si les valeurs des variables sont dans macro0, comment tu fais pour qu'elles fonctionnent dans macro1 ? Si j'insère call macro0 dans macro1, la macro0 est lue mais le endsub fait qu'elle ne peut plus être utilisée dans macro1 ?
Je ne comprends pas comment faire ?
Comme je l'ai dit au départ : si tes variables sont déclarées au début du module, elles sont utilisables dans toutes les macros du module.

Mais, comme d'hab, un petit fichier joint ne ferait probablement pas de mal. ;)
 

Discussions similaires

Statistiques des forums

Discussions
312 164
Messages
2 085 872
Membres
103 007
dernier inscrit
salma_hayek