VBA variables d'un userform dans un module
Steve
-
EBasta Messages postés 37 Statut Membre -
EBasta Messages postés 37 Statut Membre -
Bonjour,
Je vous explique mon problème, c'est sûrement simple mais ... :s
Donc voilà, je suis actuellement en stage dans une société où l'on me demande de créer un serveur pour un appareil de mesure avec le matériel et les logiciels dont ils disposaient, rien d'autre, liste des logiciels :
-Office
c'est tout oui lol donc en cherchant un peu j'ai découvert les macros d'excel, ...
et je me suis lancé dans la programmations d'un module effectuant ce qu'ils me demandaient, et j'ai réussi, je reçois les valeurs de l'appareil, les affiche, les traite, ...
le problème c'est qu'au démarrage de la macro, je souhaite que l'utilisateur puisse indiquer sur quel port COM est branché l'appareil, j'ai donc réalisé un petit userform, et je veux que quand l'oppérateur choisis par exemple com1, la variable valcom soit égale à 1, (c un exemple) donc je réussi mais là où je bloque c'est pour envoyer la variable vers le module une fois l'userform fermé ou meme avant ce n'est pas important, (j'ai des difficultés à fermer le userform, si vs avez des conseils ...) donc voilà mon problème c'est juste ça, l'explication est peut-etre longue désolé j'essayai d'etre precis.
Je vs remercie. (j'ai cherché partout avant de poser la question mais étrangement je ne trouve pas.)
Je vous explique mon problème, c'est sûrement simple mais ... :s
Donc voilà, je suis actuellement en stage dans une société où l'on me demande de créer un serveur pour un appareil de mesure avec le matériel et les logiciels dont ils disposaient, rien d'autre, liste des logiciels :
-Office
c'est tout oui lol donc en cherchant un peu j'ai découvert les macros d'excel, ...
et je me suis lancé dans la programmations d'un module effectuant ce qu'ils me demandaient, et j'ai réussi, je reçois les valeurs de l'appareil, les affiche, les traite, ...
le problème c'est qu'au démarrage de la macro, je souhaite que l'utilisateur puisse indiquer sur quel port COM est branché l'appareil, j'ai donc réalisé un petit userform, et je veux que quand l'oppérateur choisis par exemple com1, la variable valcom soit égale à 1, (c un exemple) donc je réussi mais là où je bloque c'est pour envoyer la variable vers le module une fois l'userform fermé ou meme avant ce n'est pas important, (j'ai des difficultés à fermer le userform, si vs avez des conseils ...) donc voilà mon problème c'est juste ça, l'explication est peut-etre longue désolé j'essayai d'etre precis.
Je vs remercie. (j'ai cherché partout avant de poser la question mais étrangement je ne trouve pas.)
Configuration: Windows Vista Internet Explorer 7.0
3 réponses
-
-
Ca y est je teste,
je vous montre une partie du code :'Utilisations touches clavier Private Declare Function GetAsyncKeyState Lib "user32.dll" (ByVal vkey As Long) As Integer Public valcom As Single 'je l'ai mise ici pour testet c'est bien ça ? Sub OLE_Demo() 'déclarations '(1 To 99) numero de test Dim objServerResult As Object Dim vntResult(1 To 99) As Variant Dim vntMin(1 To 99) As Variant Dim vntMax(1 To 99) As Variant Dim vntMnem(1 To 99) As Variant Dim vntTestPass(1 To 99) As Variant Dim vntAllPAss As Variant Dim vntPol(1 To 99) As Variant Dim vntNumberOfTests As Variant Dim vntUnit(1 To 99) As Variant UserForm2.Show Do Loop Until (valcom = 1) 'ce n'est pas ce que je veux faire mais c'est un test simple qui me permet de savoir si ça fonctionne Cells(4, 1) = UserForm2.ComboBox1.Value
pour ce qui est du userform, pour tester je vais faire très simple aussi, juste le clique sur un bouton par exemple :
Private Sub CommandButton1_Click() valcom = 1 End Sub
une declaration nécessaire ici je pense non ?
comme ça ?
Public valcom As Single Private Sub CommandButton1_Click() valcom = 1 End Sub
bon et bien voilà, ça ne fonctionne pas vraiment, ça va surement vous sembler logique mais désolé je n'ai jamais programmé de cette façon.
MERCI-
Public valcom as single n'est à définir qu'une seule fois. Sinon, il va y avoir conflit ! Le premier a bien été placé.
Définir des variables ainsi permet de garder leur valeur pour tout le projet et entre les différents Sub, Function et Userform... mais il faut éviter de trop en placer : cela prend trop de mémoire. Pour cette raison, j'ai mis un Single au lieu d'un Interger, largement suffisant pour un définir les ports COM.
-
-
Bonjour,
Pour envoyer une variable dans d'autres modules, il existe en gros 2 façons :
- comme c'est sous Excel, venir copier la valeur de la variable dans une cellule du classeur,
- définir la varible comme Public à tout le projet : A l'extérieur de tout Sub, il suffit d'écrire...
Public valcom as Single
Il existe aussi les passages de paramètres, mais c'est plus restrictif...
Pour fermer un formulaire, c'est juste...
Unloab NomFormulaire
J'espère avoir un peu aidé !