Appeler un Textbox à l'aide d'une variable

[Résolu/Fermé]
Signaler
Messages postés
300
Date d'inscription
vendredi 15 mars 2013
Statut
Membre
Dernière intervention
31 juillet 2018
-
Messages postés
12257
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
3 septembre 2021
-
Bonjour,

J'ai un petit soucis avec VBA, je souhaite partager une variable entre deux USF et afin de réutiliser cette variable dans une commande (je pense que c'est surtout ici que se trouve le problème).

Pour résumer, j'ai dans mon premier USF plusieurs textbox destinées à accueillir des dates, mon second USF est un calendrier où nous choisissons la date et la réimplantons dans le premier USF.
Jusqu'ici tout fonctionne très bien, le soucis est que pour que ma macro actuelle fonctionne, il me faut un USF calendrier pour chaque textbox destiné à acceuillir une date puisque je spécifie le nom de ma textbox dans l'USF calendrier. Je souhaite donc créer une variable afin de ne pas multiplier les USF calendrier (J'ai 10 textbox pouvant acceuillir des dates)

Voici ce que j'ai fais :

Dans un module j'ai declaré ma variable
Public date2 As Date
Public CaseDate As String


Dans mon premier USF j'ai créé un bouton à coté de chaque textbox pouvant accueillir une date sur ce modèle :
Sub Calendar1_Click()
CaseDate = Echeance1 'nom de ma textbox
Calendrier1.Show vbModeless
End Sub


Et enfin sur mon USF calendrier, je choisis de réimplanter la date selectionné :
   
'Traitement.Echeance1.value = date2 'ceci fonctionne mais je dois donc créer un USF calendrier pour chaque nom de textbox
Traitement.CaseDate.Value = date2 'Ceci ne fonctionne pas (il cherche qqch nommé CaseDate sur mon USF directement) mais cela me permettrait de tout gérer avec le meme calendrier.
   
   Traitement.Show vbModeless
    Unload Me


Je suis désolé, je m'y prend certainement très mal...
Merci d'avance pour votre aide.

2 réponses

Messages postés
12257
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
3 septembre 2021
2 654
Bonjour,

Essaye peut être :
Traitement.Controls(CaseDate).Value = date2

Si CaseDate est un String ça devrait le faire...
Messages postés
300
Date d'inscription
vendredi 15 mars 2013
Statut
Membre
Dernière intervention
31 juillet 2018
25
Bonjour Pikaju,

Merci pour ton aide.
En essayant ta solution, je me suis rendu compte d'un autre problème (qui existait déjà avant mais que je n'avais surement pas remarqué)...
En effet, avant d'executer cette ligne :
Traitement.Controls(CaseDate).Value = date2


VBA retourne sur mon USF "Traitement' et lance Userform_Initialize, ce qui me pause problème puisque cela reprend les valeurs de base de mon USF donc si des modifications ont été faite avant de choisir la date, tout est perdu... (et en l'occurence fait planter ma macro car il y'a une valeur qu'il n'arrive pas à récupérer). Est-il possible d'empêcher le lancement de cette procedure, et donc de voir si ta solution fonctionne ?

Merci d'avance,
Messages postés
12257
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
3 septembre 2021
2 654
Lorsque tu "passes" de ton Userform traitement à ton calendrier, comment "fermes"-tu Traitement?
UnLoad Traitement
ou
Traitement.Hide
Normalement traitement.Hide ne fait que masquer l'userform et donc ne relance pas Initialize. A vérifier toutefois.
Sinon ne ferme pas traitement et utilises les propriétés Modales de tes userform...
Messages postés
300
Date d'inscription
vendredi 15 mars 2013
Statut
Membre
Dernière intervention
31 juillet 2018
25
Là je suis perdu, mais alors complètement....

Au début je ne fermais aucun USF j'utilisais les propriétés modales (plutôt non modales) pour que Calendrier1, "passe au dessus" de traitement. sans rien fermer.
Mais ne connaissant pas toutes les particularités d'un USF non modale je me suis résigné à juste .hide mon "Traitement" ... Et enfin en désespoir de cause, j'ai essayé de Unload mon "Traitement".

Dans les 3 cas, au moment d'executer cette ligne
Traitement.Controls(CaseDate).Value = date2

VBA relance l'initialisation de traitement.

Je ne comprends vraiment pas pourquoi cette procedure se relance à chaque fois...

En lien l'USF complet, je ne sais pas si cela pourra t'aider. Pour ma part, je ne comprend pas 90% de ces procedures car l'USF n'est pas de moi et j'ai gardé le code dans l'état.
http://cjoint.com/data3/3HgpcBZSioi.htm

PS : Ma question n'a plus rien à voir avec le sujet d'origine désolé.
Edit : Erreur dans le lien.
Messages postés
12257
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
3 septembre 2021
2 654
Pourrais tu plutôt me passer le classeur, même sans données... avec les 2 userforms et leurs codes...
Messages postés
300
Date d'inscription
vendredi 15 mars 2013
Statut
Membre
Dernière intervention
31 juillet 2018
25
J'ai retiré quelques données, mais je t'ai laissé deux exemples et les quelques données de base pour que le fichier soit utilisable.

Je m'excuse par avance, car il risque de te brûler les yeux... notamment au niveau du code que j'ai créé moi-même, des formules ou même de la mise en page...

Encore merci pour ton aide.

http://cjoint.com/data3/3Hgpzfp92mU.htm
Messages postés
12257
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
3 septembre 2021
2 654
Regarde ton fichier en retour.
Je t'ai fait les4 premiers boutons "+". Ils fonctionnent bien.
Par contre, Calendar est le nom d'un contrôle VBA. J'ai donc renommé tes boutons Calendrier...
Messages postés
300
Date d'inscription
vendredi 15 mars 2013
Statut
Membre
Dernière intervention
31 juillet 2018
25
Bonjour Pikaju,

Effectivement, l'implantation de la date se fait sans soucis.
Mais si tu essayes de modifier le texte avant (ex : je change la description de l'incident, je met une date d'échéance puis je valide --> mes modifications dans la description ne sont pas prise en compte, car l'USF s'est initialiser lors de l'utilisation du calendrier (regarde en step by step)

Par contre, je n'arrive pas à utiliser le fichier que tu m'as envoyé dès que je clique sur un + il me met un "Compil Error: Method or data member not found" sur le calendrier1 alors qu'il est bien là avec le bon nom (Je deteste la version d'Excel que nous avons au boulot, j'ai souvent des erreurs sans explication comme ça alors que je ne les ai pas à la maison)

Encore merci, pour ton aide.
Messages postés
12257
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
3 septembre 2021
2 654
Salut,

"Compil Error: Method or data member not found"

Ma faute, ma très grande faute....
J'ai nommé un bouton de commande Calendrier1 tout comme l'userform... Passe bien en renommant l'userform Calendrier.

Par contre, je n'arrive pas à reproduire le second bug. Pour moi tout va bien...

Le fichier avec quelques modifications (notamment dans le module 1)
https://www.cjoint.com/?DHhihUymFko
Messages postés
300
Date d'inscription
vendredi 15 mars 2013
Statut
Membre
Dernière intervention
31 juillet 2018
25
Ok pour la solution du premier bug... Je n'avais meme pas remarqué je manque vraiment de pratique...

Pour ce qui est du second bug, j'ai réussi à le solutionner avec une nouvelle variable pour me faire passer outre la procedure initialize, donc cela ne me posera plus de soucis.

Merci d'avoir retravailler un peu mon module 1, j'avais effectivement eu quelques difficultés pour le créer (en même temps j'avais pas initialisé ma variable...).

Je pense que tous les problèmes évoqués ont été solutionnés... Merci beaucoup.

Puis-je me permettre d'abuser de ta bonté en te demandant de jetter un oeil à un autre de mes soucis ici ? Ou dois-je recréer un sujet adapté (qui pourra peut-être aider d'autres personnes) ?
Il s'agit principalement d'alimentation/affichage dans les textbox (le format de la date, et faire en sorte qu'il y est des menus déroulants dépendants).

Encore merci.
Messages postés
12257
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
3 septembre 2021
2 654
Le mieux est de créer un nouveau sujet.
Je le suivrais avec plaisir.
De rien.
A tout de suite alors...