Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Passage de données d'un userform à un autre

4 réponses
Avatar
PYR
Bonsoir à tous.
Une petite question à soumettre à votre sagacité, moi je sèche.

Pour faire simple :
J'ai un userform1 dans lequel se trouve un label1 qui normalement devra
contenir une date.
Ne voulant pas saisir de date mais seulement sélectionner des dates
pré-définies, à côté du label1, j'ai un bouton de commande qui m'ouvre le
userform2 avec un beau calendrier.
Lorsque je clique sur une date du calendrier du userform2, je suis arrivé à
fermer le userform2 (sans problème) mais je n'arrive pas à renseigner le
label1 du userform1 avec la valeur de la date cliquée du userform2 avant
fermeture.

Pour être plus généraliste : comment arriver à récupérer d'un un userform1,
ce qui a été saisi, cliqué ou autre dans un userform2 (ouvert à partir du
userform1) ?

En vous remerciant pour vos idées.

4 réponses

Avatar
MichDenis
Bonjour Pierre,

Tu peux utiliser une variable que tu prends soin de définir dans
un module standard.

Public MaDate as String

Sur l'événement Clic du Calendar, tu initialises la variable :
MaDate = Me.Calendar1.Value

Et dans le formulaire contenant le Label :
'-------------------------
Private Sub UserForm_Activate()
Me.Label1.Caption = MaDate
End Sub
'-------------------------

Une autre façon de le faire directement, si les 2 formulaires
sont chargés (en mémoire vive), tu peux le faire en utilisant
une simple commande
Userform1.Label1.Caption = Userform2.Calendar1.value
en utilisant l'événement Clic du calendar1 dans l'userform2



"PYR" a écrit dans le message de groupe de discussion :
#
Bonsoir à tous.
Une petite question à soumettre à votre sagacité, moi je sèche.

Pour faire simple :
J'ai un userform1 dans lequel se trouve un label1 qui normalement devra
contenir une date.
Ne voulant pas saisir de date mais seulement sélectionner des dates
pré-définies, à côté du label1, j'ai un bouton de commande qui m'ouvre le
userform2 avec un beau calendrier.
Lorsque je clique sur une date du calendrier du userform2, je suis arrivé à
fermer le userform2 (sans problème) mais je n'arrive pas à renseigner le
label1 du userform1 avec la valeur de la date cliquée du userform2 avant
fermeture.

Pour être plus généraliste : comment arriver à récupérer d'un un userform1,
ce qui a été saisi, cliqué ou autre dans un userform2 (ouvert à partir du
userform1) ?

En vous remerciant pour vos idées.
Avatar
LE TROLL
Bonjour,

En complément de MichDenis, les publics n'acceptent pas les indices
variable(x), mais dans ton cas c'est parfait.
Sinon, il y a plein de façons de passer des informations entre forms, déjà
les variables publiques, mais encore les modules, qui sont des sortes de
forms publiques, les objets qui peuvent être appelé entre forms (mettre dans
un texteBox par exemple), ou encore une variable mémoire ou un fichier...

In fine, si tu utilises le Calendar, moi je l'ai enlevé de tous mes
programmes, c'est une source de plantage permanent à cause des dll qui sont
parfois mis à jour en force ou à cause de redondance et font que la dll
n'est plus la bonne et plante le calendrier, je déconseille fortement par
expérience l'utilisation des calendriers, je suis d'ailleurs arrivé à en
faire un pour cette raison, je peux passer le code, ou encore à en faire un
exe qui passe les données entre programmes par un fichier (je peux te passer
ça si tu veux), bref, ce que j'en dis... à toi de voir...

Cordialement ;o)
-
Logiciels, romans, contacts : http://irolog.free.fr
_______________________
.
.


"PYR" a écrit dans le message de
news:%
Bonsoir à tous.
Une petite question à soumettre à votre sagacité, moi je sèche.

Pour faire simple :
J'ai un userform1 dans lequel se trouve un label1 qui normalement devra
contenir une date.
Ne voulant pas saisir de date mais seulement sélectionner des dates
pré-définies, à côté du label1, j'ai un bouton de commande qui m'ouvre le
userform2 avec un beau calendrier.
Lorsque je clique sur une date du calendrier du userform2, je suis arrivé
à fermer le userform2 (sans problème) mais je n'arrive pas à renseigner le
label1 du userform1 avec la valeur de la date cliquée du userform2 avant
fermeture.

Pour être plus généraliste : comment arriver à récupérer d'un un
userform1, ce qui a été saisi, cliqué ou autre dans un userform2 (ouvert à
partir du userform1) ?

En vous remerciant pour vos idées.


Avatar
MichDenis
Tu peux utiliser ceci dans le thisworkbook pour charger
les bibliothèques.
Deux cas où cette méthode ne sera pas efficace :
A ) Le fichier source (ocx ou dll) n'est pas présent sur la machine
Dans le cas de la bibliothèque "Calendrier" elle s'installe sur la
machine en installant l'application "Access".

B ) Microsoft a modifié le nom de la bibliothèque
On peut lire ce nom dans l'explorateur d'objet lorsque la bibliothèque
est chargée dans la liste déroulante "Toutes les bibliothèques"
Dans le cas de la bibliothèque "Calendrier" son nom est : "MSACAL"
Le fait que Microsoft met à jour le fichier d'une version d'office à l'autre,
ne change en rien l'exécution de la procédure sauf si Microsoft modifie
dans la mise à jour de la bibliothèque, le NOM de cette dernière.
Je n'ai pas vérifié si MSACAL est demeuré le même entre la version 1997 et 2007.

'-------------------------------------------
Private Sub Workbook_Open()

On Error Resume Next
'Ajoute la bibliothèque "Microsoft Forms 2.0 Object Library"
ThisWorkbook.VBProject.References.AddFromGuid _
GUID:="{0D452EE1-E08F-101A-852E-02608C4D0BB4}", major:=2, minor:=0

'Ajoute la bibliothèque "Microsoft Forms 2.0 Object Library"
ThisWorkbook.VBProject.References.AddFromGuid _
GUID:="{8E27C92E-1264-101C-8A2F-040224009C02}", major:=7, minor:=0

End Sub
'-------------------------------------------
Une information additionnelle, si tu utilises cette façon de faire pour
charger la référence émanant de l'ajout d'un contrôle supplémentaire
(Exemple : Calendar) à la boîte d'outils formulaire (userform), le code
s'exécutera normalement sur une nouvelle machine. Cependant, la procédure
ne permet pas d'ajouter le contrôle "Calendar", l'icône, dans la boîte à outils
du formulaire. D'ailleurs, je ne connais pas de code VBA capable de
faire ce travail.
Avatar
PYR
Bonsoir MichDenis et LE TROLL.

Merci pour vos suggestions.
Je vais voir ce que je peux avec tous vos conseils.

J'avais trouvé une solution qui était de passer la valeur cliquée du
Userform2 dans une cellule de ma feuille et de la récupérer dans le
Userform1 => ça ne me convenait pas trop mais au moins ça me dépannait.

Donc, je vais adapter mon travail avec vos idées.

Merci encore


"PYR" a écrit dans le message de
news:%
Bonsoir à tous.
Une petite question à soumettre à votre sagacité, moi je sèche.

Pour faire simple :
J'ai un userform1 dans lequel se trouve un label1 qui normalement devra
contenir une date.
Ne voulant pas saisir de date mais seulement sélectionner des dates
pré-définies, à côté du label1, j'ai un bouton de commande qui m'ouvre le
userform2 avec un beau calendrier.
Lorsque je clique sur une date du calendrier du userform2, je suis arrivé
à fermer le userform2 (sans problème) mais je n'arrive pas à renseigner le
label1 du userform1 avec la valeur de la date cliquée du userform2 avant
fermeture.

Pour être plus généraliste : comment arriver à récupérer d'un un
userform1, ce qui a été saisi, cliqué ou autre dans un userform2 (ouvert à
partir du userform1) ?

En vous remerciant pour vos idées.