[VB6] Passer une variable entre 2 formulaires

CrazyBhy Messages postés 1 Statut Membre -  
 lullierjon -
Bonjour,
Je débute en Access/VB, et je suis devant l'impasse face à un tout petit problème!
Alors, j'ai deux formulaires, dans la première, il y a un bouton qui exécute en lui cliquant dessus une série d'instructions puis il passe au formulaire suivant!
Au deuxième formulaire, j'ai besoin de la valeur d'une variable présente au premier formulaire!
Est-ce que je peux la récupérer?
J'ai essayé d'ajouter Public à la déclaration de la variable, mais c'était inadmissible vu que l'instruction est sous "Private Sub Commande66_Click()"
J'ai aussi de créer un module pour créer la variable publique, ça trouvait la variable partout ou je la demande, mais il donne toujours la valeur 0 et non pas la valeur renvoyé par le dernier formulaire utilisé!

Merci d'avance...

3 réponses

  1. Polux31 Messages postés 7219 Statut Membre 1 204
     
    Bonjour,

    Pour qu'une variable soit "public", il faut la déclarée en entête de module. Elle sera visible par tous les modules du programme pour peu qu'elle soit initialisée ...

    'Formulaire1
    Option Explicit
    
    Public maVariable As String
    
    Private Sub Commande66_Click()
       'Initialisation de la variable public
       maVariable = "Bonjour le monde"
       '...
       Formulaire2.Show
    End Sub


    Pour accéder à maVariable

    'Formulaire2
    Option Explicit
    
    Sub Formulaire2_Initialize
       TextBox1.Text = Formulaire1.maVariable
       '...
    End Sub


    ;o)
    5
    1. lullierjon
       
      Depuis le temps que je cherche...
      Un grand bravo et surtout un énorme merci pour cette ligne :
      Formulaire1.maVariable


      Je n'avais pas pensé à rappeler le nom du formulaire !
      Au top
      0
  2. frechnie Messages postés 12 Statut Membre
     
    Slt, pour récupéré la valeur de la variable il faut l'affecter dans un label ou un textbox et faire un truc de ce genre:
    'Dans le formulaire 1
    Label.caption=variable ou TxtBox.Text=variable
    ensuite
    'Dans le formulaire 2
    variable=Form1.Label.caption ou variable=TxtBox.Text
    C'est efficace mais pas très professionnel
    0
  3. coconuts_n Messages postés 16 Date d'inscription   Statut Membre Dernière intervention   1
     
    Bonjour,

    J'ai un problème assez silimaire. J'ai des données dans une feuille excel et je veux créer une box qui s'affichent dès le démarrage pour signaler des relances à effectuer avec des boutons "suivant" et "sortir". Cliquer sur suivant, donne la relance suivante et cliquer sur sortir arrête la macro.

    Dans un fichier excel, j'ai mis dans "ThisWorkBook" :

    Sub Workbook_Open()
    Call Module2.Ouverture_Relance
    DoEvents
    End Sub

    Ensuite, j'utilise un premier formulaire lancé à partir du module 2 :

    Option Explicit

    Public Numéro_Aliment As Long
    Public Date_Dernier_Mail, Date_Derniere_Rép As Date
    Public z As Integer
    Public msg As String
    Public continuer as Boolean

    Sub Ouverture_Relance()

    z = 9 'on commence à la ligne 9
    Do

    If Cells(z, 53).Value = "Mail à envoyer" Then
    Numéro_Aliment = Cells(z, 1).Value
    Date_Dernier_Mail = Cells(z, 54).Value
    Date_Derniere_Rép = Cells(z, 51).Value
    msg = "L'aliment " & Numéro_Aliment & " est à relancer. Dernier mail envoyé par l'entreprise le " & Date_Dernier_Mail & ". Dernière réponse du client le " & Date_Derniere_Rép

    Messageform.Show 'ouvre une box contenant la phrase "msg" et contenant les boutons "suivant" et "sortir"

    If Continuer = False Then
    Exit Sub
    End If
    z = z + 1
    End If
    Loop Until z - 8 > Cells(1, 4).Value 'critère de fin

    MsgBox ("Il n'y a plus de relances à faire")

    Else
    End If
    End Sub

    Dans le feuille d'un userform j'ai mis:

    Option Explicit

    Sub UserForm_Initialize()
    Label1.Caption = msg

    End Sub

    Voilà! Le problème arrive quand il y a plusieurs relances à effectuer. La box qui s'affiche contient le bon message pour le premier lot mais pour les autres lots, le message reste inchangé. J'ai essayé de mettre autre chose que "initialize", comme activate mais j'ai rien trouvé qui marche.

    Merci d'avance =)
    0