Variable VB Excel

Résolu
Salut à tous,

quelqu'un pourrait il me donner la syntaxe pour appeler une variable déclarée dans une procédure "Sub x()" et l'utiliser dans une procédure "Sub y()" ?
Je trouve pas ce que je cherche sur le net :/

Merci d'avance !

2 réponses

  1. Bonjour,

    La variable doit être déclaré à l'extérieur pour avoir une portée
    sur les 2 subs.

    Exemple type :
    Option Explicit
    
    Dim Z As String
    
    Sub XYZ()
    
        Call X
        Call y
        
    End Sub
    '
    
    Sub X()
    
        Z = "Message"
        
    End Sub
    '
    
    Sub y()
    
        MsgBox Z
    
    End Sub
    '
    

    Lupin
    0
    1. Je vois pas comment faire.
      Dans mon module, j'ai plusieurs "Sub", la premiere appelant les suivantes. La variable que je veux utiliser dans toutes les Sub correspondant à un compteur.
      Voici le détail :

      -----------------------------------------------------
      Sub X()
      For i=3 to 391
      Call Sub y
      Call Sub z
      next
      End Sub

      Sub y()
      Cells(i + 1).Activate
      Cells(1,1).Value = Cells(1,1) + ActiveCell.Value
      End Sub

      Sub z()
      Cells(i + 3).Activate
      Cells(1,2).Value = Cells(1,2) + ActiveCell.value
      End Sub
      -----------------------------------------------------

      Je voulais tout mettre dans une seule procédure mais je dépasse la taille des 65535 caractères maximum autorisés...
      0
  2. re:

    Dim I as Long
    
    Sub X() 
      For i=3 to 391 
        Call y 
        Call z 
      Next 
    End Sub 
    
    Sub y() 
      Cells(i + 1).Activate 
      Cells(1,1).Value = Cells(1,1) + ActiveCell.Value 
    End Sub 
    
    Sub z() 
      Cells(i + 3).Activate 
      Cells(1,2).Value = Cells(1,2) + ActiveCell.value 
    End Sub 
    '
    
    0
    1. Merci mais j'ai trouvé. J'ai juste passé i en parametre :

      ----------------------------------------------------------------
      Sub X()
      For i=3 to 391
      Call y(i)
      Call z(i)
      Next
      End Sub

      Sub y(i)
      Cells(i + 1).Activate
      Cells(1,1).Value = Cells(1,1) + ActiveCell.Value
      End Sub

      Sub z(i)
      Cells(i + 3).Activate
      Cells(1,2).Value = Cells(1,2) + ActiveCell.value
      End Sub
      ----------------------------------------------------------------

      Et ca marche :)

      merci pour ton temps passé à me répondre !
      0