Faire une action simple

Résolu/Fermé
dudulleray - 23 mai 2012 à 13:57
 dudulleray - 24 mai 2012 à 17:36
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
A voir également:

10 réponses

lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
23 mai 2012 à 15:05
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
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
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
23 mai 2012 à 15:52
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
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
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
23 mai 2012 à 17:36
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
24 mai 2012 à 04:03
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
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
24 mai 2012 à 04:08
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
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
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
24 mai 2012 à 16:55
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
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
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