Faire une action simple

Résolu
dudulleray -  
 dudulleray -
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. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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+
    0
  2. dudulleray
     
    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
    0
  3. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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+
    0
    1. dudulleray
       
      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
      0
  4. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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+
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. dudulleray
     
    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
    0
  7. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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+
    0
  8. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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+
    0
  9. dudulleray
     
    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
    
    0
  10. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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+
    0
    1. dudulleray
       
      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
      0
  11. dudulleray
     
    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
    0