XL 2013 DECLARER UNE SEULE FOIS VARIABLES ET LEUR VALEUR SUR X MACROS

Attila451

XLDnaute Occasionnel
Bonjour,
Je n'arrive pas à trouver comment déclarer une seule fois les variables ET leur valeurs pour plusieurs macros:
Je prends l'exemple de 3 macros (j'ai mis les mêmes macros sur 3 modules pour expliquer au mieux mon besoin),
MODULE 1 et 2 ça marche mais module 3: ca plante.

MODULE 1: je déclare classiquement dans chaque macro les types de variables et leur valeur:

Sub SUP()

Dim L As Long
Dim v As Long
Dim R As Long
Dim ligne As Long

ligne = 2
L = 1
v = 2
R = 3

While Cells(ligne, L) <> ""
If Cells(ligne, v) > 10 Then
Cells(ligne, R) = "SUP"
End If

ligne = ligne + 1
Wend
End Sub

Sub INF()

Dim L As Long
Dim v As Long
Dim R As Long
Dim ligne As Long

ligne = 2
L = 1
v = 2
R = 3

While Cells(ligne, L) <> ""
If Cells(ligne, v) < 10 Then
Cells(ligne, R) = "INF"
End If

ligne = ligne + 1
Wend
End Sub

Sub efface()

Dim L As Long
Dim v As Long
Dim R As Long
Dim ligne As Long

ligne = 2
L = 1
v = 2
R = 3

While Cells(ligne, L) <> ""
Cells(ligne, R) = " "

ligne = ligne + 1
Wend


MODULE 2: Pour faire plus simple, je ne déclare en début de module que le type de variables pour éviter de le répéter dans toutes les macros, par contre, je déclare les valeurs des variables dans chaque macro:

Dim L As Long
Dim v As Long
Dim R As Long
Dim ligne As Long

Sub SUP()
ligne = 2
L = 1
v = 2
R = 3

While Cells(ligne, L) <> ""
If Cells(ligne, v) > 10 Then
Cells(ligne, R) = "SUP"
End If

ligne = ligne + 1
Wend
End Sub

Sub INF()
ligne = 2
L = 1
v = 2
R = 3

While Cells(ligne, L) <> ""
If Cells(ligne, v) < 10 Then
Cells(ligne, R) = "INF"
End If

ligne = ligne + 1
Wend
End Sub

Sub efface()
ligne = 2
L = 1
v = 2
R = 3

While Cells(ligne, L) <> ""
Cells(ligne, R) = " "
ligne = ligne + 1
Wend
End Sub

MODULE 3: c'est ce dont j'ai besoin: si j'ai à changer sur 50 macros les variables et leur valeur pourquoi on ne peut pas faire comme avec les type de variable et les saisir une seule fois en début de module ??

Dim L As Long
Dim v As Long
Dim R As Long
Dim ligne As Long

ligne = 2
L = 1
v = 2
R = 3

Sub SUP()

While Cells(ligne, L) <> ""
If Cells(ligne, v) > 10 Then
Cells(ligne, R) = "SUP"
End If

ligne = ligne + 1
Wend
End Sub

Sub INF()

While Cells(ligne, L) <> ""
If Cells(ligne, v) < 10 Then
Cells(ligne, R) = "INF"
End If

ligne = ligne + 1
Wend
End Sub

Sub efface()

While Cells(ligne, L) <> ""
Cells(ligne, R) = " "

ligne = ligne + 1
Wend
End Sub

J'ai "ERREUR D'INSTRUCTION".... sur le module 3, comment procéder svp ?
Merci d'avance pour votre aide !
 

Pièces jointes

  • Declarer_valeur.xlsm
    21.3 KB · Affichages: 6

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Attila,
Comme vos variables sont valables pour tous les modules, on peut les considérer comme étant des constantes. Si c'est le cas déclarez les en constantes publiques et affecter leur une valeur :
VB:
Public Const L As Long = 1
Public Const v As Long = 2
Public Const R As Long = 3
Public Const ligne As Long = 2
 

Attila451

XLDnaute Occasionnel
Bonjour,
Merci, j'ai trouvé cette solution de déclarer en constante par contre il y a juste " ligne" qui ne fonctionne pas car elle est incrémentée dans la routine. La solution fonctionne impeccablement sur un même module, par contre, si je déclare les constantes dans un module, si je lance une macro dans un autre module , j'ai le message "nom ambigu"... Et je n'ai pas encore trouvé comment le solutionner ...
Si vous aviez une piste, je suis preneur !
Merci d'avance.
 

Attila451

XLDnaute Occasionnel
Bonsoir,
Merci. Par contre, en saisissant les constantes dans un module, quand je lance une macro dans un autre module, les constantes ne sont pas reconnues, même en public. J'ai le message "nom ambigu".
Vous avez une idée pour y remedier ?
 

Statistiques des forums

Discussions
312 109
Messages
2 085 383
Membres
102 878
dernier inscrit
asmaa