Faire une action simple

Résolu
Bonjour a toutes et tous, forum

config>Windows 7 / Excel 2007</config>

J'ai un UserForm1 et 14 checkboxs N° de 1 à 14 et 14 Labels N° 100 à 113

je souhaiterai svp en vba pouvoir déclencher une action (une seule fois par mois)

disons un code qui détecte que tous les 15 de chaque mois ferait automatiquement

(1) Effacer et remettre en bleu le fond des 14 Labels

(2) Décocher les 14 Checkboxs

Je vous remercie de votre temps ainsi que de votre aide
Bonne après midi a tous

Cdlt Ray

10 réponses

  1. Contributeur
    Bonjour,
    Un bouton sur ton UserForm et le code ci-dessous
    Private Sub CommandButton1_Click()
    Dim ctl As Control
        For Each ctl In Me.Controls
            If TypeOf ctl Is MSForms.Label Then
                ctl.BackColor = &HC0C000
            ElseIf TypeOf ctl Is MSForms.CheckBox Then
                ctl.Value = False
            End If
            
        Next ctl
    End Sub

    A+
    1. Salut lermite222

      Merci beaucoup pour ta réponse et le code

      Mais serait'il possible de faire exécuter ton code automatiquement, c'est a dire

      qu'une seule fois par mois, par ex le 15 de chaque mois où eventuellement le

      premier de chaque mois.

      Merci a toi et bonne après midi

      a plus tard

      Cdlt Ray
      1. Contributeur
        Bizarre ta question..
        Ton classeur reste ouvert 24hr/24 ?
        Normalement quand tu ouvre ton classeur et que tu appel l'UF il est "vierge" ??
        A+
        1. Re

          des que j'ouvre mon fichier l'UF s'ouvre aussitot et affiche tous les controls etc etc

          et sur la Feuil1 (Compte) qui me sert de banque de données que je renseigne via

          des TexTBoxs

          quand les comptes du mois sont bouclés, je voulais effacer automatiquement quelques

          controls, pour l'instant je fais manuellement cette action tous les 1 er de chaque mois

          mais avec un boutondans UF

          Mais automatiquement quand j'ouvre le fichier détecter
          nous sommes le premier du mois j'efface les controls demandés

          on ne peut pas dire a excel de faire ça ?????

          c'est quoi la difficulté ???

          j'ai vu qu'avec tout ce qui concerne les dates, jours ,aujoudhui, datedif ,etc etc on peux faire beaucoup de choses et faire un truc une fois par mois a une date arrèter non !!!!!!

          Merci a plus tard
      2. Contributeur
        Mais oui... ont peu faire ça.
        Le problème n'est pas là, j'explique.
        Tu ouvre le classeur.. Ont est le 1er tout se met à blanc.
        Tu travail.. tu ferme l'UF,.. tu le réouvre.. tout est de nouveau à blanc, si c'est comme ça que tu veux...
        dans le Initialize de l'UF
        'Dans le code de l'UF
        Option Explicit
        
        Private Sub ClearUF()
        Dim ctl As Control
            For Each ctl In Me.Controls
                If TypeOf ctl Is MSForms.Label Then
                    ctl.BackColor = &HC0C000
                ElseIf TypeOf ctl Is MSForms.CheckBox Then
                    ctl.Value = False
                End If
            Next ctl
        End Sub
        
        Private Sub UserForm_Initialize()
            If Day(Date) = 15 And Not Vider Then
                ClearUF
                Vider = True
            End If
        End Sub

        Dans un module général
        'Dans Module1
        Option Explicit
        Dim Vider As Boolean 'pour pas vider chaque fois.

        A+
        1. RE merci pour le code

          c'est presque ça LOL

          Sur mon UF il y a pleins de controls divers

          je veux svp juste effacer le 15 de chaque mois

          (1) Remettre en couleur bleu le fond de 14 Labels de 100 à 113

          (2) Remettre a "False" 14 Checkboxs 1 à 14

          et on ne touche a rien d'autres sur l'UF

          Voila j'espère que c'est plus clair, pas facile d'expliquer, je fais des efforts

          j'ai encore pèter une neurone là LOL

          Bon merci pour ton aide

          Cdlt Ray
          1. Contributeur
            Pas compliquer non plus.. :DD
            Dans les contrôles que tu veux traiter ( les checkBox et label) tu met 10 dans la propriété Tag.
            et tu ajoute la ligne..
            For Each ctl In Me.Controls
                If Ctl.Tag = 10 Then
                    If TypeOf ctl Is MSForms.Label Then
                        ctl.BackColor = &HC0C000
                    ElseIf TypeOf ctl Is MSForms.CheckBox Then
                        ctl.Value = False
                    End If
                End if
            Next ctl

            A+
            1. Contributeur
              Ou plus simple,
              Dans le Tag des label tu met 10 et dans le Tag des checkBox tu met 11
              Le code devient..
               For Each Ctl In Me.Controls
                  If Ctl.Tag = 10 Then
                      Ctl.BackColor = &HC0C000
                  ElseIf Ctl.Tag = 11 Then
                      Ctl.Value = False
                  End If
                Next Ctl

              A+
              1. Salut lermite222

                Mais non je ne suis pas compliqué, c'est juste que ça marche comme voulu
                pour les controls c'est bon, mais la détection du 15 de chaque mois

                c'est pas bon j'ai placer les codes comme tu m'a dit, voir déplacer au cas où

                mais le code me renvoie la date du jour le 24 et exécute quand mème l'effacement des controls, j'ai également modifier la date j'ai mis le 20 et toujours mème soucis

                voila je te dit a plus tard bonne journée

                Ray

                Private Sub UserForm_Initialize()
                    If Day(Date) = 15 And Not Vider Then
                        'ClearUF           ' On n'efface pas UF juste les controls
                        Vider = True
                    End If
                End Sub
                
                1. Contributeur
                  met un stop et relance l'UF
                  Private Sub UserForm_Initialize()
                  Stop
                      If Day(Date) = 15 And Not Vider Then
                          'ClearUF           ' On n'efface pas UF juste les controls
                          Vider = True
                      End If
                  End Sub

                  Quand tu arrive sur le stop
                  dans la fenêtre Exécution (Ctrl+G) tape
                  Print Day(Date)
                  valide par ENTER
                  Ça devrait te renvoyer le N° du jour.. donc
                  Si ont est pas le 15 beh.. y fait rien
                  Si vraiment tu trouve pas poste ton classeur sur Cjoint.com
                  A+
                  1. Salut Lermite222

                    j'ai fait comme tu me dit, j'ai copier le résultat voir et le soucis est toujours la

                    Print day(date)
                    24
                    ça devrai rien faire hé bien non

                    Merci pour ta réponse
                2. Re salut lermite

                  C'est bon j'ai trouver, autant pour moi, j'ai mal placer les codes que tu a fait
                  je ne peux pas t'expliquer ça serai trop long
                  les codes fonctionnent très bien désolé, mais c'est comme ca qu'on apprends aussi

                  En tout cas content d'avoir été compliqué LOL maintenant c'est ok

                  je te remercie beaucoup pour ton aide et ta patience

                  Si ça te dit, j'ai d'autres soucis, allez un effort svp

                  je cherche, je creuse, je me débrouille, et j'avance quand mème

                  A bientot et encore mille fois merci

                  Cordialement Raymond