Fonction weekday

Bonjour à tous,

Je rencontre une grosse difficulté.

à mon travail, mscal.ocx n'est présent sur aucun de nos PC du coup la fonction weekday ne fonctionne pas.

Dans les références j'ai manquant : Microsoft Control Calendar 11.0

Nos informaticiens m'affirme qu'ils ne peuvent pas nous mettre cette bibliothèque pour x raisons. Du coup je dois m'en passer.

Par quoi puis-je la remplacer ?

Private Sub ComboBox2_Change()
Dim j As Long, joursj As Date

  joursj = MonthView1.Value

  With Sheets("Personnel")
    For j = 2 To .Range("A" & Rows.Count).End(xlUp).Row
      If .Range("A" & j) & " " & .Range("B" & j) = Me.ComboBox2 Then
        If Weekday(joursj) = 2 Then  'Lundi
          Me.TextBox1.Value = Format(.Range("G" & j), "HH:MM")
          Me.TextBox2.Value = Format(.Range("H" & j), "HH:MM")
        ElseIf Weekday(joursj) = 3 Then  'Mardi
          Me.TextBox1.Value = Format(.Range("I" & j), "HH:MM")
          Me.TextBox2.Value = Format(.Range("J" & j), "HH:MM")
        ElseIf Weekday(joursj) = 4 Then  'Mercredi
          Me.TextBox1.Value = Format(.Range("K" & j), "HH:MM")
          Me.TextBox2.Value = Format(.Range("L" & j), "HH:MM")
        ElseIf Weekday(joursj) = 5 Then  'Jeudi
          Me.TextBox1.Value = Format(.Range("M" & j), "HH:MM")
          Me.TextBox2.Value = Format(.Range("N" & j), "HH:MM")
        ElseIf Weekday(joursj) = 6 Then  'Vendredi
          Me.TextBox1.Value = Format(.Range("O" & j), "HH:MM")
          Me.TextBox2.Value = Format(.Range("P" & j), "HH:MM")
        ElseIf Weekday(joursj) = 7 Then  'Samedi
          Me.TextBox1.Value = Format(.Range("Q" & j), "HH:MM")
          Me.TextBox2.Value = Format(.Range("R" & j), "HH:MM")
        ElseIf Weekday(joursj) = 1 Then  'Dimanche
          Me.TextBox1.Value = Format(.Range("S" & j), "HH:MM")
          Me.TextBox2.Value = Format(.Range("T" & j), "HH:MM")
        End If
      End If
    Next j
  End With
End Sub

si je remplace

If Weekday(joursj)

par

If Application.WorksheetFunction.Weekday(joursj)

du coup j'utilise la fonction de la feuille et pas celle de vba mais est ce correct ?

Bonsoir,

Attention à ne pas faire de confusion...!

La fonction Weekday() ne te provoque aucun problème ...

Ce qui est en cause, c'est que tu dois utiliser l'objet Calendar ... qui, lui effectivement se trouve dans l'activex mscal.ocx ...

Donc, la solution se trouve du côté d'un nouveau calendrier ...

Bonsoir James007,

bah justement c'est là que c'est drôle.

C'est que je n'ai pas de calendrier dans ce fichier...

Autant pour moi j'ai repris le mauvais code...

c'est pas Calendar1 c'est MonthView1 (j'ai corrigé dans le code)

J'ai la bibilothèque pour Monthview mais dans l'aide d'excel il parle de contrôle Calendar pour la fonction weekday()...

Bonsoir,

Je ne sais pas quel est le contrôle ActiveX que tu utilises ...

Si c'est Monthview qui manque à l'appel ... il n'est pas dans mscal.ocx ... mais dans mscomct2.ocx ...

Peut-être que "tes informaticiens" seront plus conciliants pour celui là ...

Pour être plus précis, la première fois j'ai utilisé Calendar, ça ne marchait pas, j'ai appeler les informaticien m'ont dis que ce n'était pas possible.

Du coup j'ai utilisé MonthView, lui il fonctionne je l'ai testé tout seul.

Mais dès que je mets ma macro avec weekday, j'ai le message "Manquant : Microsoft Control Calendar"

Pourtant aucun code calendar dans le fichier.

Bonjour,

Je ne pense pas que weekday() n'ait un quelconque rapport avec un calendrier.

Quand un contrôle est manquant c'est plein de fonctions qui apparaissent comme inconnues à tort.

Dans un classeur vide fais-toi une proc avec juste weekday() pour confirmer.

Et pour les calendriers tu seras toujours embêté selon les versions d'excel. Tu peux en mettre un fait dans un userform. Il y en a plusieurs sur le net.

eric

Bonjour à tous,

@eriiic,

Tu as parfaitement raison ...

Mais il semble bien, depuis le début du fil, qu'il soit "difficile" de savoir quel objet est utilisé dans la UserForm ...

Je voulais dire un userform de sélection qui reproduit un calendrier avec des boutons ou textbox etc, sans utiliser de contrôle type Calendar et compagnie.

eric

Bonjour,

Je me suis fait cette petite macro dans un fichier tout neuf ou j'ai juste placé les dates de ce mois dans la colonne A.

Je test ça cet après midi, pas de userform, aucun contrôle comme ça je serai fixé ^^

Sub TestWeekday()
Dim i As Integer
Dim j As Date

    With Sheets("Feuil1")
        For i = 2 To 30
        j = CDate(.Range("A" & i))
            If Weekday(j) = 2 Then
                .Range("B" & i) = "Lundi"
            ElseIf Weekday(j) = 3 Then
                .Range("B" & i) = "Mardi"
            ElseIf Weekday(j) = 4 Then
                .Range("B" & i) = "Mercredi"
            ElseIf Weekday(j) = 5 Then
                .Range("B" & i) = "Jeudi"
            ElseIf Weekday(j) = 6 Then
                .Range("B" & i) = "Vendredi"
            ElseIf Weekday(j) = 7 Then
                .Range("B" & i) = "Samedi"
            ElseIf Weekday(j) = 1 Then
                .Range("B" & i) = "Dimanche"
            End If
        Next i
    End With
End Sub

Si ça fonctionne, je remplacerai le contrôle MonthView par une textbox ou on saisie la date ou comme ériiic le stipule, un calendrier tout fait

Re,

Avec le second argument de weekday() ... tu as la possibilité de retrouver l'ordre "naturel" des jours de la semaine ...

Bonjour,

ou bien :

Sub TestWeekday()
    Dim c As Range
    For Each c In Sheets("Feuil1").[A2:A30]
        c.Offset(, 1) = Application.Proper(Format(CDate(c), "dddd"))
    Next c
End Sub

Mais si c'est ça le but pourquoi ne pas utiliser le format personnalisé jjjj jj/mm/aaaa qui te donne "mercredi 01/01/2014" en colonne A ?

eric

Bonsoir,

J'ai fait les test et weekday fonctionne parfaitement.

En revanche j'ai trouvé un objets calendar de taille microscopique qui trainait et comme l'objet n'était pas reconnu, il n'apparaissait pas...

Ce qui m'a induit en erreur c'est l'aide vba

Si la valeur de la propriété Calendar est Grégorien, le nombre entier renvoyé représente le jour Grégorien de la semaine pour l'argument date. S'il s'agit d'un calendrier Hijri, le nombre entier renvoyé représente le jour Hijri de la semaine pour l'argument date. Dans le cas des dates Hijri, l'argument number est une expression numérique pouvant représenter une date et/ou heure comprise entre le 1/1/100 (2 août 718 pour le calendrier Grégorien) et le 4/3/9666 (31 décembre 9999 pour le calendrier Grégorien).

Bonsoir,

Content que tu aies finalement pu trouver la solution à ton problème ...

Oui en fait propriété Calendar et objet Calendar ne sont pas pareil.

Comme j'étais vert que mon objet calendrier ne fonctionne pas pas je pense que je me suis embrouillé tout seul en ne prenant pas suffisamment de recule.

En tout cas merci à vous 2.

James007 a écrit :

Avec le second argument de weekday() ... tu as la possibilité de retrouver l'ordre "naturel" des jours de la semaine ...

Au moins j'aurais appris des choses à cause de mon erreur
Rechercher des sujets similaires à "fonction weekday"