Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Variable conservé d'une macro à l'autre?

  • Initiateur de la discussion Initiateur de la discussion Excel-lent
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Excel-lent

XLDnaute Barbatruc
Bonjour à tous,

Comment faire pour conserver le contenu d'une variable d'une macro à l'autre.

Concret :
J'ai les 2 macros ci-dessous (sur la même feuille)

Sub Coucou()

Dim ColonneActive as Integer

ColonneActive = 5
Coucou2
...
End sub

Sub Coucou2()

Cells(4, ColonneActive).Select
Selection.Copy
...
End sub

Excel bug sur la ligne "Cells(4, ColonneActive).Select"

Lorsque je place mon curseur sur "ColonneActive", il apparait en commentaire "ColonneActive = vide"

Où me suis-je trompé?

Merci d'avance
 
Re : Variable conservé d'une macro à l'autre?

Bonjour,

Une des solutions :

Code:
Sub Coucou()

Dim ColonneActive As Integer

ColonneActive = 5
Coucou2(ColonneActive)
...
End sub

Sub Coucou2(Colonne As Integer)

Cells(4, Colonne).Select
Selection.Copy
...
End sub
 
Re : Variable conservé d'une macro à l'autre?

Bonjour,

Il faut déclarer ta variable en global



Global ma_var

Sub toto1()
ma_var = "J'ai de la mémoire"
End Sub

Sub toto2()
MsgBox ma_var
End Sub
 
Re : Variable conservé d'une macro à l'autre?

Bonjour tous le monde,

Place ceci en tout début de code, avant les macros :

Code:
Public ColonneActive As Integer

Sinon regarde ce lien qui pointe sur le site de Didier (myDearfriend!)
Ici
Cela traite de la déclaration et de la portée des variables.

A+
 
Re : Variable conservé d'une macro à l'autre?

Bonjour Excel-lent, bonjour le forum,

Problème de portée (durée de vie de la variable). Si tu la déclares à l'intérieur de la procédure elle "meurt" à la fin de celle ci. Tu dois la déclarer non pas dans la procédure mais en haut du module (pour un module) ou en haut d'un d'un composant (feuil ou userform). Si tu veux que ta variable sois accessible partout dans ton projet (procédure, feuilles et userform) il faut la déclarer publique : Public ColonneActive as Integer.

Regarde le code ci-dessous :

Code:
Dim mes As String
 
Sub Macro1()
mes = "coucou"
MsgBox mes
Call Macro2
End Sub
 
 
Sub Macro2()
Dim mes2 As String
mes2 = "re" & mes
MsgBox mes2
End Sub

mes sert au deux macros mes2 uniquement à la Macro2.

Édition :
Bonjour Raja, Pyrof, Bptr... on s'est croisé. Global ! Voilà c'est le mot que je voulais dire et que Pyrof a eu la gentillesse de me souffler...
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
7
Affichages
349
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…