Utiliser les resultats de variables dans plusieurs macros

Bonjour le Forum,

Je voudrais utiliser les résultats de variables dans plusieurs macros, exemple:

Dim Var 'je déclare la variable

Private Sub Variables()
Var = 10 'je donne une valeur à la variable
End Sub

Private Sub Macro1()
Un =Var +1 'je reprends la valeur de la variable et je l'utilise
End Sub

Private Sub Macro2()
Deux = Var + 2  'je reprends la valeur de la variable et je l'utilise
End Sub

Mais comment faire

Si je mets

Var = 10

en dehors de toute macro, ça ne fonctionne pas

Si je mets

Call Variables

, ça ne fonctionne pas

Si je mets

Var = 10

, dans une macro, ça fonctionne dans la macro, mais pas dans l'autre.

Je ne veux pas déclarer les mêmes variables à toutes les macros.

Merci d'avance

Bonjour,

voici un exemple:

Public Enum Coeff
    Coeff_2 = 2
    Coeff_3 = 3
    Coeff_4 = 4
End Enum

Sub Test()
    MsgBox 500 * Coeff.Coeff_2 'Résultat = 1000
End Sub

Bonjour Jaco, bonjour le forum,

Pour qu'une variable puisse être utilisée dans tout le projet VBA il faut la déclarer publique (Public) en tête d'un module standard (Pas une UserForm ou un composant Objet (Feuil1(Feuil1) par exemple ou ThisWorkbook).

Par exemple, en haut du Module1 tu déclares ta variable :

Public Var As Integer

puis tu l'initialises via la procédure Macro1 du Module1

Sub Macro1()
Var = 10
End sub

Tu ajoutes un module : Module2 avec la procédure Macro2

Sub Macro2()
MsgBox "la valeur de la variable est : " & Var
End Sub

Lance la Macro1 du Module1 puis la Macro2 du Module2...

[Édition]

Bonjour Sab, nos posts se sont croisés...

Merci Thau Thème pour ta réponse, mais cela ne fonctionne pas (encore) chez moi.

J'ai fais 2 versions.

1/Tout dans la même macro, ça fonctionne

Dim essai
Dim Prem_Lign
Dim Dern_Lign
Dim OnglConf
Dim Prem_Col
Dim Dern_Col
Dim Cell

    Sub Variables()

    Set OnglConf = Sheets("Configuration")
    Set Cell = OnglConf.Range("B3")

    essai = Cell.Value
    Prem_Lign = 9
    Dern_Lign = 200

    Prem_Col = "A"
    Dern_Col = "Q"

MsgBox "la valeur de la variable est : " & essai
End Sub

2/ En 2 macro, ça ne fonctionne plus.

 Public essai As Integer
    Public Prem_Lign As Integer
    Public Dern_Lign As Integer
    Public OnglConf As Integer
    Public Prem_Col As Integer
    Public Dern_Col As Integer
    Public Cell As Integer

    Sub Variables()

    Set OnglConf = Sheets("Configuration")
    Set Cell = OnglConf.Range("B3")

    essai = Cell.Value
    Prem_Lign = 9
    Dern_Lign = 200

    Prem_Col = "A"
    Dern_Col = "Q"

    End Sub

Sub Macro2()
MsgBox "la valeur de la variable est : " & essai
End Sub

Est-ce un problème de déclaration de variables (des fois, il y a des nombre, et des fois c'est du texte)?

ou de programmation ?

Merci d'avance

Bonjour,

Dans la seconde version, les types de données sont incorrects :

déclarés en Integer

    Public Prem_Col As Integer
    Public Dern_Col As Integer

On y met des caractères :

  Prem_Col = "A"
   Dern_Col = "Q"

De même, la variable "essai" est déclarée en "Integer"

Si en B3, on écrit "TOTO", plantage assuré

A retester après ces modifications.

Cordialement

Bouben

Bonjour,

il faut que ta sub Variables ait été appelée si tu veux que les initialisations aient été faites :

Sub Macro2()
Variables ' initialistion variables
MsgBox "la valeur de la variable est : " & essai
End Sub

eric

Bonjour à tous,

une autre possibilité,

par exemple pour permettre l'utilisation de la variable sh dans tout le project:

'dans le haut du Module1
Public sh As Worksheet  'déclaration

'sur la page code de ThisWorkbook
Sub Workbook_Open()
   Set sh = Worksheets("Feuil1")  'défénition
End Sub

'sur n'importe laquelle des pages code (module ou userform)
Sub Test()
x = sh.Range("A1").Value
End Sub

Bonsoir, Salut à tous !

Si tu exposais quel est le besoin, pour commencer ! Tu auras alors une bonne chance d'avoir des réponses ciblées et utiles !

Cordialement.

Bonsoir,

un essai de compréhension :

232test-loureed.xlsm (17.03 Ko)

bien lire les commentaires

@ bientôt

LouReeD

Edit : correction d'une valeur dans un des message box...

Pour info :

si vous recliquez sur "Allons y !" les valeurs des variables ne seront plus en accord avec les messages des boxes car Ma_Variable continue de garder sa dernière valeur à 30, du coup au deuxième message Essai = Ma_Variable +10 = 40 ! au lieu des 20 du "premier tour"... etc... etc...

@ bientôt

LouReeD

Bonjour le fi, bonjour le forum,

Il me semble qui si Jaco avait lu le lien du premier post de SabV et tenu compte de la remarque de Môssieur FERRAND, ce fil serait résolument résolu depuis mignonne lurette...

Bonjour ThauThème, bonjour à tous,

Entièrement d'accord !

Avant de commencer à écrire la première ligne de VBA, il faut maîtriser la notion de variable.

Pleins de tutos là-dessus, et ces notions sont générales, indépendamment du langage de programmation !

Sinon, c'est comme prendre le volant sans avoir ouvert le code de la route !

L'autoroute du VBA est remplie de chauffards !

)

DANGER

Bouben

Effectivement, si j'avais bien regardé les réponses, j'aurais peut-être pu résoudre mon problème plus tôt

Quoi qu'il en soit, grâce à toutes vos indications j'ai réussi

à tous.

Rechercher des sujets similaires à "utiliser resultats variables macros"