Boucle sur textBox et bouton de commande

Bonjour tout le monde,

je bloque sur un point depuis deux jours

j'ai 10 CommandButton_DatEchLigEnc de 1 à 10 chaque bouton affiche un calendrier

à coté j'ai 10 TextBox_EchEncLig de 1 à 10

quand je clique sur CommandButton_DatEchLigEnc1 le calendrier s'affiche puis je clique sur une date

ce que je souhaite c'est que cette date soit inscrite dans le textbox approprié c.a.d TextBox_EchEncLig1

donc au lieur d'écrire un code pour chaque bouton et pour chaque textbox je souhaite faire une boucle

merci d'avance

voici mon code

dans une classe Classe_GroupeDates je met ce code

Option Explicit
Public WithEvents BoutonCalendrier As MSForms.CommandButton

Public WithEvents ZoneSaisieTexte As MSForms.TextBox

Private Sub BoutonCalendrier_Click()

    AffichageCalendrier BoutonCalendrier
    RemplissageZoneTexte ZoneSaisieTexte

End Sub

dans un module je met

Sub AffichageCalendrier(ListeBoutons As MSForms.CommandButton)
      UserForm_Calendrier.Show
End Sub

Sub RemplissageZoneTexte(ListeTexteBox As MSForms.TextBox)

     If Dat <> "" Then ListeTexteBox.Value = Dat

End Sub

et dans mon USF

Dim ListeGroupeBoutons(1 To 12) As New Classe_GroupeDates

Dim ListeTexteBox(1 To 12) As New Classe_GroupeDates

Private Sub UserForm_Initialize()

   Dim Ctrl As Control
   Dim I As Integer

   I = 1
   J = 1
   For Each Ctrl In Me.Controls
        If TypeName(Ctrl) = "CommandButton" And Ctrl.Name = "CommandButton_DatEchLigEnc" & I Then

             Set ListeGroupeBoutons(I).BoutonCalendrier = Ctrl
             I = I + 1

       End If

      If TypeName(Ctrl) = "TextBox" And Ctrl.Name = "TextBox_EchEncLig" & I Then

          Set ListeTexteBox(I).ZoneSaisieTexte = Ctrl

         J = J + 1

    End If

Next Ctrl
Set Ctrl = Nothing

End Sub

bonjour,

Fournir le classeur SVP

A+

8test.xlsm (28.33 Ko)

je souhaite exécuter USF1

merci d'avance

Bonjour THCH et

Une petite présentation ICI serait la bienvenue

Si vous ne l'avez pas encore fait, je vous invite à lire la charte du forum [A LIRE AVANT DE POSTER]
qui vous aidera dans vos demandes et réponses sur ce forum

Concernant votre demande, perso, je ne peux la traiter car l'USF contient semble t'il un DTpicker
Mais d'autres pourront

Merci de votre participation

Cordialement

bonjour,

Une possibilité en pièce jointe.

A+

14test-vg.xlsm (31.03 Ko)

Bonjour,

j'ai exécuter ton fichier mais rien ne se passe

j'exécute le USF1 appuis sur le bouton calendrier rien ne se passe le calendrier reste affiché

C'est un DTPicker, il faut cliquer sur la flèche à droite pour afficher le calendrier puis choisir et cliquer une date.Alors la date se transfère et le calendrier disparait...

A+

excuse mois mais de quelle flèche

Bonjour c'est bon j'ai trouvé en fait dans votre code il fallait mettre calender1_clic et non pas change

merci pour votre aide

galopin01

j'ai avancé dans mon code , j'ai ajouter deux textBox date_deb et date_fin avec deux bouton calendrier bouton_deb et bouton_fin

est la j'ai trouver un problème avec ton code car l'affectation de la liste des textbox se fait dans le USF calendrier

alors je ne vois pas comment faire avec les dates deb et fin pour utiliser le même USF calendrier

encore plus ce même USF calendrier je l'utilise dans tous mes USF pour la saisie des dates

Le problème est que tu as utilisé une routine peu pratique : Tu es obligé de créer un bouton par textbox.

Le programmeur un peu averti ne fait jamais ça surtout s'il y a plusieurs date... On fait en sorte que ce soit le clic sur le TextBox qui lance le Calendrier...

Et tu les as ajouté OU ? ces TextBox et ces boutons

Voici un Exemple

7test-vg2.xlsm (40.97 Ko)

...mais ça ne concerne pas l'hypothèse des date de début et date de fin ou il faut un bouton par TextBox.

...sinon fournir le classeur SVP

A+

Je t'ai fait un modèle sans bouton pour appeler le calendrier: YAKA cliquer dans le TextBox pour ouvrir le calendrier. C'est plus simple !

Bon j'ai aussi simplifié le nom des TextBox et celui des usf parce que moi les noms à rallonge c'est pas mon truc...

A+

13test-vg4.xlsm (40.37 Ko)

Bonjour

merci pour vos réponses

j'ai testé le dernier fichier envoyé j'ai un message d'erreur "variable non définie" au niveau du USF calendrier

Private Sub Calendar1_Click()
uCall.Controls("tb" & Me.Tag) = Calendar1.Value
Unload Me
End Sub

D'abord ça devrait pas être Click mais Change ensuite tu as testé le fichier ou tu n'as recopié que la moitié sur ton classeur ?

uCall est déclaré en tête de Module1

Après... 2007 ça commence à dater hein. Chez moi ça marche impec, avec une "brouette", ça je peux pas te dire...

Aujourd'hui les DTPicker sont quasiment abandonnés au profit de calendriers embarqués qui n'ont pas de problème de version puisque le calendrier est dans le classeur lui-même. Donc même si tu donnes ton classeur à un collègue ou si tu changes de bécane pas de souçi à se faire puisque c'est le calendrier du classeur qui travaille. Tandis que là tu es étroitement dépendant de ta version d'Office et des dll...

A+

merci ca marche en fait je suis passé par USF directement sans passé par la feuille 1

comme je débute avec excel vba comment vous faite pour bouton GO car quand je passe par GO je n'ai pas d’erreur par contre si j’exécute directement le UF j'ai une erreur

Remarque: le principe de faire un bouton calendrier devant chaque textbox date et ne pas afficher le calendrier au clic c'est que dans la pratique parfois tu as besoin d'une date très ancienne alors au lieu de chercher dans le calendrier je la saisie directement

merci infiniment pour votre aide

juste une petite question: est ce que les evenement _AfterUpdate() fonctionne dans les classes

Les boutons Go passent par un lanceur les Sub ShwUSF1 et ShwUSF2. Si tu lances le usf directement tu n'exécutes pas cette macro donc tu ne charge ni le Tag ni le uCall.

Tous les évènements des contrôles sont disponibles dans les classes.

Les DTPicker ne sont pas pratiques c'est sans doute pourquoi ils ont été rapidement abandonnés par Microsoft.

Pour les dates anciennes les calendriers embarqués sont plus pratiques car certains permettent une saisie clavier. Personnellement j'utilise un algorithme qui permet de ne saisir que les chiffres.

Ex : 19081949 et qui vérifie ou non la validité selon que c'est une date de naissance ou des dates de jours ouvrés. et ensuite formate selon le besoin. Les classes font ça aussi... !

A+

c'est bon et merci

je souhaite laisser l'utilisateur saisie lui même la date , mais est ce que les TextBox_AfterUpdate() je peux les mettre dans une classe car j'ai essayé et ça ne marche pas

A+

Rechercher des sujets similaires à "boucle textbox bouton commande"