VBA variables d'un userform dans un module

Fermé
Steve - 23 mai 2007 à 19:17
EBasta Messages postés 37 Date d'inscription mercredi 16 mai 2007 Statut Membre Dernière intervention 25 mai 2007 - 25 mai 2007 à 09:17
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.)

3 réponses

Merci beaucoup, je teste ça dans la journée et vous redonne très vite des nouvelles.
1
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
0
EBasta Messages postés 37 Date d'inscription mercredi 16 mai 2007 Statut Membre Dernière intervention 25 mai 2007 31
25 mai 2007 à 09:17
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.
0
EBasta Messages postés 37 Date d'inscription mercredi 16 mai 2007 Statut Membre Dernière intervention 25 mai 2007 31
24 mai 2007 à 10:09
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é !
-1