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.)
A voir également:
- Vba userform variable
- Excel compter cellule couleur sans vba - Guide
- Impossible de créer le fichier de travail. vérifiez la variable d'environnement temp ✓ - Forum Word
- L'indice n'appartient pas à la sélection vba - Forum VB / VBA
- Dépassement de capacité vba ✓ - Forum Excel
- Vba récupérer valeur cellule ✓ - Forum VB / VBA
3 réponses
Ca y est je teste,
je vous montre une partie du code :
pour ce qui est du userform, pour tester je vais faire très simple aussi, juste le clique sur un bouton par exemple :
une declaration nécessaire ici je pense non ?
comme ça ?
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
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.
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é !
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é !