Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

[Résolu] Aide modification du code

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Lone-wolf

XLDnaute Barbatruc
Bonjour à tous,

j'ai recréé un calendrier d'après un exemple trouvé sur le Forum. Seule différence, le fichier original utilises des boutons de commandes pour afficher les jours, et moi j'utilise des étiquettes. Le fichier original permet d'afficher ou de masquer les jours de la semaine selon le mois choisi.


Là ou ça cloche dans mon fichier est sur cette ligne: Erreur 1004 incompatibilité de type.

Code:
If Len(c.Name) = 12 And CInt(Right(c.Name, 1)) <= joursem Then


le code complet est ceui-ci:

Code:
Sub maj()
  date1 = CDate("01 " & Me.ComboBox1.Value & " " & Me.TextBox1.Value)
  date2 = date1
  joursem = Weekday(date1)
  For j = 2 To 43
    Set c = UserForm1.Controls(j)
      c.Visible = True
     If Len(c.Name) = 12 And CInt(Right(c.Name, 1)) <= joursem Then
      c.Visible = False
     Else
      If Month(date1) = Month(date2) Then
        c.Caption = Day(date1)
       Else
        c.Visible = False
      End If
      date1 = date1 + 1
     End If
  Next
End Sub

J'ai aussi essaié comme ceci: Set c = UserForm1.Controls("Label" & j) et ça ne vas pas non plus.
Le fichier original est Calendrier. J'ai mis les deux en PJ.


A+ 😎
 

Pièces jointes

Dernière édition:
Re : Aide modification du code

Bonjour
1° je n'ai pas d'erreur...
2° il faut comprendre le code:
Len(c.Name) c'est la longueur du nom de ton contrôle => ici label2 à label43
donc c'est 6 et non 12 qu'il faut mettre
CInt(Right(c.Name, 1) c'est la dernière lettre de ce contrôle convertit en chiffre soit 2 à 9 dans ce cas puisque associé à la condition de longueur 6
Cette ligne a pour but d'effacer les premiers contrôles si le premier jour de la semaine n'est pas un dimanche...

A+ François
 
Re : Aide modification du code

Bonsoir François,

j'ai mis à 6 avec la ligne (Set c = UserForm1.Controls("Label" & j) ) et le mois de décembre affiche correctement les jours, mais si je sélectionne un autre mois il n'y a rien qui change.

Avec Set c = UserForm1.Controls(j), les intitulés de la combo et de la textbox affiche 1 et 2 et sur changement du mois, là aussi les jours restent figés.


En modifiant les noms des autres contrôles (combo textbox et intitulés) avec UserForm1.Controls(j): Erreur 1004.




A+ 😎
 

Pièces jointes

  • Sans titre 2.jpg
    25.8 KB · Affichages: 52
  • Sans titre 2.jpg
    25.8 KB · Affichages: 57
Dernière édition:
Re : Aide modification du code

Bonsoir,

Dans UserForm_Activate, désactive à la fin "maj"

Ajoute :
Private Sub ComboBox1_Change()
maj
End Sub

Ainsi, l'affichage des mois va changer lors d'un changement dans le Combobox1

P.S. Je parle du classeur1



G
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
237
Réponses
3
Affichages
685
Réponses
35
Affichages
2 K
Réponses
3
Affichages
605
Réponses
1
Affichages
586
Compte Supprimé 979
C
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…