[Résolu] Aide modification du code

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+ :cool:
 

Pièces jointes

  • Calendrier.zip
    31.1 KB · Affichages: 54
  • Calendrier.zip
    31.1 KB · Affichages: 50
  • Calendrier.zip
    31.1 KB · Affichages: 55
Dernière édition:

fanfan38

XLDnaute Barbatruc
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
 

Lone-wolf

XLDnaute Barbatruc
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.


Sans titre 2.jpg


A+ :cool:
 

Pièces jointes

  • Sans titre 2.jpg
    Sans titre 2.jpg
    25.8 KB · Affichages: 48
  • Sans titre 2.jpg
    Sans titre 2.jpg
    25.8 KB · Affichages: 54
Dernière édition:

Gelinotte

XLDnaute Accro
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:

Discussions similaires

Réponses
19
Affichages
2 K
Réponses
11
Affichages
1 K
Réponses
8
Affichages
676

Statistiques des forums

Discussions
312 377
Messages
2 087 736
Membres
103 655
dernier inscrit
MOUNIRACH16