Si ta date provient du combobox, elle est considérée comme du texte...tu peux faire ceci :
La fonction de conversion Cdate() prend les séparateurs et les formats de date définis dans le panneau de configuration
'-------------------------------------------- Sub formule()
Dim LaDate As Long, X As Integer
If Me.combobox1.ListIndex <> -1 Then LaDate = CLng(CDate(Me.combobox1.Value))
X = Evaluate("INT((" & LaDate & "-(DATE(YEAR(" & _ LaDate & "-WEEKDAY(" & LaDate & _ "-1)+4),1,3)-WEEKDAY(DATE(YEAR(" & _ LaDate & "-WEEKDAY(" & LaDate & "-1)+4),1,3)))+5)/7)") MsgBox "Numéro de la semaine : " & X End If
End Sub '--------------------------------------------
MichD --------------------------------------------------------------- "Apitos" a écrit dans le message de groupe de discussion :
Salut,
Voila :
http://cjoint.com/?BFtwNqEaGmy
Si ta date provient du combobox, elle est considérée comme du texte...tu peux faire ceci :
La fonction de conversion Cdate() prend les séparateurs et les formats de date définis
dans le panneau de configuration
'--------------------------------------------
Sub formule()
Dim LaDate As Long, X As Integer
If Me.combobox1.ListIndex <> -1 Then
LaDate = CLng(CDate(Me.combobox1.Value))
X = Evaluate("INT((" & LaDate & "-(DATE(YEAR(" & _
LaDate & "-WEEKDAY(" & LaDate & _
"-1)+4),1,3)-WEEKDAY(DATE(YEAR(" & _
LaDate & "-WEEKDAY(" & LaDate & "-1)+4),1,3)))+5)/7)")
MsgBox "Numéro de la semaine : " & X
End If
End Sub
'--------------------------------------------
MichD
---------------------------------------------------------------
"Apitos" a écrit dans le message de groupe de discussion :
1df5dd1b-e662-4543-ba5b-fe86a6c3b2ef@googlegroups.com...
Si ta date provient du combobox, elle est considérée comme du texte...tu peux faire ceci :
La fonction de conversion Cdate() prend les séparateurs et les formats de date définis dans le panneau de configuration
'-------------------------------------------- Sub formule()
Dim LaDate As Long, X As Integer
If Me.combobox1.ListIndex <> -1 Then LaDate = CLng(CDate(Me.combobox1.Value))
X = Evaluate("INT((" & LaDate & "-(DATE(YEAR(" & _ LaDate & "-WEEKDAY(" & LaDate & _ "-1)+4),1,3)-WEEKDAY(DATE(YEAR(" & _ LaDate & "-WEEKDAY(" & LaDate & "-1)+4),1,3)))+5)/7)") MsgBox "Numéro de la semaine : " & X End If
End Sub '--------------------------------------------
MichD --------------------------------------------------------------- "Apitos" a écrit dans le message de groupe de discussion :
Salut,
Voila :
http://cjoint.com/?BFtwNqEaGmy
Apitos
Bonsoir Denis,
Si ta date provient du combobox, elle est considérée comme du texte
La date vient de la feuille colonne F et G et non pas du ComboBox.
Et selon le numéro de la semaine, la date de début (Colonne F) est affi chée dans ComboBox1 comme valeur par défaut et la date de fin (Colonne G) est affichée dans ComboBox2 comme valeur par défaut.
Bonsoir Denis,
Si ta date provient du combobox, elle est considérée comme du texte
La date vient de la feuille colonne F et G et non pas du ComboBox.
Et selon le numéro de la semaine, la date de début (Colonne F) est affi chée dans ComboBox1 comme valeur par défaut et la date de fin (Colonne G) est affichée dans ComboBox2 comme valeur par défaut.
Si ta date provient du combobox, elle est considérée comme du texte
La date vient de la feuille colonne F et G et non pas du ComboBox.
Et selon le numéro de la semaine, la date de début (Colonne F) est affi chée dans ComboBox1 comme valeur par défaut et la date de fin (Colonne G) est affichée dans ComboBox2 comme valeur par défaut.
h2so4
bonsoir,
ta macro test, utilise la fonction format qui donne un format texte. tu devrais l'adapter ainsi :
Sub test() Dim x As Date, Result As String Dim LastLg As Long, n As Byte n = 1 [E2].CurrentRegion.ClearContents [E1] = "N° Semaine": [F1] = "Du": [G1] = "Au" For x = "1/1/" & Year(Now) To "31/12/" & Year(Now) If Format(x, "dddd") = "mercredi" Then LastLg = [E65000].End(xlUp).Row + 1 Range("E" & LastLg) = n Range("F" & LastLg) = x Range("F" & LastLg).NumberFormat = "dd.mm.yyyy" Range("G" & LastLg) = x + 6 Range("G" & LastLg).NumberFormat = "dd.mm.yyyy" n = n + 1 End If Next End Sub
bonsoir,
ta macro test, utilise la fonction format qui donne un format texte.
tu devrais l'adapter ainsi :
Sub test()
Dim x As Date, Result As String
Dim LastLg As Long, n As Byte
n = 1
[E2].CurrentRegion.ClearContents
[E1] = "N° Semaine": [F1] = "Du": [G1] = "Au"
For x = "1/1/" & Year(Now) To "31/12/" & Year(Now)
If Format(x, "dddd") = "mercredi" Then
LastLg = [E65000].End(xlUp).Row + 1
Range("E" & LastLg) = n
Range("F" & LastLg) = x
Range("F" & LastLg).NumberFormat = "dd.mm.yyyy"
Range("G" & LastLg) = x + 6
Range("G" & LastLg).NumberFormat = "dd.mm.yyyy"
n = n + 1
End If
Next
End Sub
ta macro test, utilise la fonction format qui donne un format texte. tu devrais l'adapter ainsi :
Sub test() Dim x As Date, Result As String Dim LastLg As Long, n As Byte n = 1 [E2].CurrentRegion.ClearContents [E1] = "N° Semaine": [F1] = "Du": [G1] = "Au" For x = "1/1/" & Year(Now) To "31/12/" & Year(Now) If Format(x, "dddd") = "mercredi" Then LastLg = [E65000].End(xlUp).Row + 1 Range("E" & LastLg) = n Range("F" & LastLg) = x Range("F" & LastLg).NumberFormat = "dd.mm.yyyy" Range("G" & LastLg) = x + 6 Range("G" & LastLg).NumberFormat = "dd.mm.yyyy" n = n + 1 End If Next End Sub
MichD
Je ne peux pas faire plus!
Tu as la syntaxe de la fonction dans la feuille de calcul ou dans l'interface de l'éditeur de code avec un exemple quant à la façon de l'utiliser.
h2so4 :: le probleme du format de la date est reglé.
Reste que les combobox ( 1 et 2 ) affichent un numéro de serie au lieu de la date dans le code suivant :
'--------------------- Private Sub UserForm_Initialize() Dim Mois As Long, i As Long, Semaine As Long Dim DateTest As Date
Mois = Month(Date): DateTest = Now()
'-- Trouver le numéro de la semaine Semaine = Format(DateTest, "ww", vbWednesday, vbFirstFourDays)
'-- Afficher l'élément correspondant à semaine - 1 '-- Mais affiche 41080 au lieu du 20/06/2012 ? ComboBox1.ListIndex = Semaine - 1 'début de la semaine en cours ComboBox2.ListIndex = Semaine - 1 'fin de la semaine en cours
For i = 1 To Mois ComboBox3.AddItem MonthName(i) Next i ComboBox3.ListIndex = Mois - 1
End Sub '---------------------
Bonsoir h2so4, Denis,
h2so4 :: le probleme du format de la date est reglé.
Reste que les combobox ( 1 et 2 ) affichent un numéro de serie au lieu de la date dans le code suivant :
'---------------------
Private Sub UserForm_Initialize()
Dim Mois As Long, i As Long, Semaine As Long
Dim DateTest As Date
Mois = Month(Date): DateTest = Now()
'-- Trouver le numéro de la semaine
Semaine = Format(DateTest, "ww", vbWednesday, vbFirstFourDays)
'-- Afficher l'élément correspondant à semaine - 1
'-- Mais affiche 41080 au lieu du 20/06/2012 ?
ComboBox1.ListIndex = Semaine - 1 'début de la semaine en cours
ComboBox2.ListIndex = Semaine - 1 'fin de la semaine en cours
For i = 1 To Mois
ComboBox3.AddItem MonthName(i)
Next i
ComboBox3.ListIndex = Mois - 1
h2so4 :: le probleme du format de la date est reglé.
Reste que les combobox ( 1 et 2 ) affichent un numéro de serie au lieu de la date dans le code suivant :
'--------------------- Private Sub UserForm_Initialize() Dim Mois As Long, i As Long, Semaine As Long Dim DateTest As Date
Mois = Month(Date): DateTest = Now()
'-- Trouver le numéro de la semaine Semaine = Format(DateTest, "ww", vbWednesday, vbFirstFourDays)
'-- Afficher l'élément correspondant à semaine - 1 '-- Mais affiche 41080 au lieu du 20/06/2012 ? ComboBox1.ListIndex = Semaine - 1 'début de la semaine en cours ComboBox2.ListIndex = Semaine - 1 'fin de la semaine en cours
For i = 1 To Mois ComboBox3.AddItem MonthName(i) Next i ComboBox3.ListIndex = Mois - 1
End Sub '---------------------
Apitos
Les ComboBox sont remplies par des plages nommées dans RowSource.
ComboBox1 par la plage nommée "Du" : þuil1!$F$2:$F$53
ComboBox2 par la plage nommée "Au" : þuil1!$G$2:$G$53
Les ComboBox sont remplies par des plages nommées dans RowSource.
ComboBox1 par la plage nommée "Du" : =Feuil1!$F$2:$F$53
ComboBox2 par la plage nommée "Au" : =Feuil1!$G$2:$G$53
Les ComboBox sont remplies par des plages nommées dans RowSource.
ComboBox1 par la plage nommée "Du" : þuil1!$F$2:$F$53
ComboBox2 par la plage nommée "Au" : þuil1!$G$2:$G$53
MichD
Si tu cherches à extraire le numéro de la semaine à partir de la date émanant d'un combobox, tu as un exemple sous les yeux
En fait pour que ça fonctionne il s'agit de transformer la date du combobox en valeur numérique. Pour ce faire, on peut utiliser les fonctions de conversion :
LaDate = CLng(CDate(Me.combobox1.Value))
La formule "Evaulate(.....)" requiert une date exprimée en valeur numérique pour bien fonctionner.
'----------------------------------------- Sub formule()
Dim LaDate As Long, X As Integer
If Me.combobox1.ListIndex <> -1 Then LaDate = CLng(CDate(Me.combobox1.Value))
X = Evaluate("INT((" & LaDate & "-(DATE(YEAR(" & _ LaDate & "-WEEKDAY(" & LaDate & _ "-1)+4),1,3)-WEEKDAY(DATE(YEAR(" & _ LaDate & "-WEEKDAY(" & LaDate & "-1)+4),1,3)))+5)/7)") MsgBox "Numéro de la semaine : " & X End If
End Sub '-----------------------------------------
MichD --------------------------------------------------------------- "Apitos" a écrit dans le message de groupe de discussion :
Bonsoir h2so4, Denis,
h2so4 :: le probleme du format de la date est reglé.
Reste que les combobox ( 1 et 2 ) affichent un numéro de serie au lieu de la date dans le code suivant :
'--------------------- Private Sub UserForm_Initialize() Dim Mois As Long, i As Long, Semaine As Long Dim DateTest As Date
Mois = Month(Date): DateTest = Now()
'-- Trouver le numéro de la semaine Semaine = Format(DateTest, "ww", vbWednesday, vbFirstFourDays)
'-- Afficher l'élément correspondant à semaine - 1 '-- Mais affiche 41080 au lieu du 20/06/2012 ? ComboBox1.ListIndex = Semaine - 1 'début de la semaine en cours ComboBox2.ListIndex = Semaine - 1 'fin de la semaine en cours
For i = 1 To Mois ComboBox3.AddItem MonthName(i) Next i ComboBox3.ListIndex = Mois - 1
End Sub '---------------------
Si tu cherches à extraire le numéro de la semaine à partir de la date émanant d'un
combobox,
tu as un exemple sous les yeux
En fait pour que ça fonctionne il s'agit de transformer la date du combobox en valeur
numérique.
Pour ce faire, on peut utiliser les fonctions de conversion :
LaDate = CLng(CDate(Me.combobox1.Value))
La formule "Evaulate(.....)" requiert une date exprimée en valeur numérique pour bien
fonctionner.
'-----------------------------------------
Sub formule()
Dim LaDate As Long, X As Integer
If Me.combobox1.ListIndex <> -1 Then
LaDate = CLng(CDate(Me.combobox1.Value))
X = Evaluate("INT((" & LaDate & "-(DATE(YEAR(" & _
LaDate & "-WEEKDAY(" & LaDate & _
"-1)+4),1,3)-WEEKDAY(DATE(YEAR(" & _
LaDate & "-WEEKDAY(" & LaDate & "-1)+4),1,3)))+5)/7)")
MsgBox "Numéro de la semaine : " & X
End If
End Sub
'-----------------------------------------
MichD
---------------------------------------------------------------
"Apitos" a écrit dans le message de groupe de discussion :
f17ef591-eeeb-4ebc-a6ee-1efd46e0cde2@googlegroups.com...
Bonsoir h2so4, Denis,
h2so4 :: le probleme du format de la date est reglé.
Reste que les combobox ( 1 et 2 ) affichent un numéro de serie au lieu de la date dans le
code suivant :
'---------------------
Private Sub UserForm_Initialize()
Dim Mois As Long, i As Long, Semaine As Long
Dim DateTest As Date
Mois = Month(Date): DateTest = Now()
'-- Trouver le numéro de la semaine
Semaine = Format(DateTest, "ww", vbWednesday, vbFirstFourDays)
'-- Afficher l'élément correspondant à semaine - 1
'-- Mais affiche 41080 au lieu du 20/06/2012 ?
ComboBox1.ListIndex = Semaine - 1 'début de la semaine en cours
ComboBox2.ListIndex = Semaine - 1 'fin de la semaine en cours
For i = 1 To Mois
ComboBox3.AddItem MonthName(i)
Next i
ComboBox3.ListIndex = Mois - 1
Si tu cherches à extraire le numéro de la semaine à partir de la date émanant d'un combobox, tu as un exemple sous les yeux
En fait pour que ça fonctionne il s'agit de transformer la date du combobox en valeur numérique. Pour ce faire, on peut utiliser les fonctions de conversion :
LaDate = CLng(CDate(Me.combobox1.Value))
La formule "Evaulate(.....)" requiert une date exprimée en valeur numérique pour bien fonctionner.
'----------------------------------------- Sub formule()
Dim LaDate As Long, X As Integer
If Me.combobox1.ListIndex <> -1 Then LaDate = CLng(CDate(Me.combobox1.Value))
X = Evaluate("INT((" & LaDate & "-(DATE(YEAR(" & _ LaDate & "-WEEKDAY(" & LaDate & _ "-1)+4),1,3)-WEEKDAY(DATE(YEAR(" & _ LaDate & "-WEEKDAY(" & LaDate & "-1)+4),1,3)))+5)/7)") MsgBox "Numéro de la semaine : " & X End If
End Sub '-----------------------------------------
MichD --------------------------------------------------------------- "Apitos" a écrit dans le message de groupe de discussion :
Bonsoir h2so4, Denis,
h2so4 :: le probleme du format de la date est reglé.
Reste que les combobox ( 1 et 2 ) affichent un numéro de serie au lieu de la date dans le code suivant :
'--------------------- Private Sub UserForm_Initialize() Dim Mois As Long, i As Long, Semaine As Long Dim DateTest As Date
Mois = Month(Date): DateTest = Now()
'-- Trouver le numéro de la semaine Semaine = Format(DateTest, "ww", vbWednesday, vbFirstFourDays)
'-- Afficher l'élément correspondant à semaine - 1 '-- Mais affiche 41080 au lieu du 20/06/2012 ? ComboBox1.ListIndex = Semaine - 1 'début de la semaine en cours ComboBox2.ListIndex = Semaine - 1 'fin de la semaine en cours
For i = 1 To Mois ComboBox3.AddItem MonthName(i) Next i ComboBox3.ListIndex = Mois - 1
End Sub '---------------------
Apitos
Bonjour Denis,
Si tu cherches à extraire le numéro de la semaine à partir de la da te émanant d'un combobox,
Non, ce n'est pas ça.
Le numéro de la semaine est déjà défini par cette ligne :
'-- Trouver le numéro de la semaine Semaine = Format(DateTest, "ww", vbWednesday, vbFirstFourDays)
Maintenant, je cherche à afficher une date dans le Combobox et non un num éro de série.
Cette date est issue de la plage F2:F23 et G2:G23
'-------------------------- '-- Afficher l'élément correspondant à semaine - 1 '-- Mais le problème que ça affiche 41080 au lieu du 20/06/2012 ? ComboBox1.ListIndex = Semaine - 1 'début de la semaine en cours ComboBox2.ListIndex = Semaine - 1 'fin de la semaine en cours '---------------------------
Bonjour Denis,
Si tu cherches à extraire le numéro de la semaine à partir de la da te émanant d'un
combobox,
Non, ce n'est pas ça.
Le numéro de la semaine est déjà défini par cette ligne :
'-- Trouver le numéro de la semaine
Semaine = Format(DateTest, "ww", vbWednesday, vbFirstFourDays)
Maintenant, je cherche à afficher une date dans le Combobox et non un num éro de série.
Cette date est issue de la plage F2:F23 et G2:G23
'--------------------------
'-- Afficher l'élément correspondant à semaine - 1
'-- Mais le problème que ça affiche 41080 au lieu du 20/06/2012 ?
ComboBox1.ListIndex = Semaine - 1 'début de la semaine en cours
ComboBox2.ListIndex = Semaine - 1 'fin de la semaine en cours
'---------------------------
Si tu cherches à extraire le numéro de la semaine à partir de la da te émanant d'un combobox,
Non, ce n'est pas ça.
Le numéro de la semaine est déjà défini par cette ligne :
'-- Trouver le numéro de la semaine Semaine = Format(DateTest, "ww", vbWednesday, vbFirstFourDays)
Maintenant, je cherche à afficher une date dans le Combobox et non un num éro de série.
Cette date est issue de la plage F2:F23 et G2:G23
'-------------------------- '-- Afficher l'élément correspondant à semaine - 1 '-- Mais le problème que ça affiche 41080 au lieu du 20/06/2012 ? ComboBox1.ListIndex = Semaine - 1 'début de la semaine en cours ComboBox2.ListIndex = Semaine - 1 'fin de la semaine en cours '---------------------------
Apitos
Bonsoir,
J'ai annulé lÂ’alimentation des CombobBox depuis la propriété RowSou rce avec des plages nommées, et je l'ai remplacé par l'alimentation dir ecte depuis la feuille :
'----------------------------------------- With Sheets("Base") For i = 8 To .Range("J65536").End(xlUp).Row ComboBox1 = .Range("J" & i) If ComboBox1.ListIndex = -1 Then ComboBox1.AddItem .Range("J" & i) ComboBox2 = .Range("K" & i) If ComboBox2.ListIndex = -1 Then ComboBox2.AddItem .Range("K" & i) Next i End With '------------------------
Et maintenant, l'affichage dans les deux ComboBox est une date et non pas u n numéro de série.
Mais j'aimerais savoir pourquoi avec la priorité RowSource ça ne marcha it pas et avec un remplissage directe de la feuille marche ?
Merci.
Bonsoir,
J'ai annulé lÂ’alimentation des CombobBox depuis la propriété RowSou rce avec des plages nommées, et je l'ai remplacé par l'alimentation dir ecte depuis la feuille :
'-----------------------------------------
With Sheets("Base")
For i = 8 To .Range("J65536").End(xlUp).Row
ComboBox1 = .Range("J" & i)
If ComboBox1.ListIndex = -1 Then ComboBox1.AddItem .Range("J" & i)
ComboBox2 = .Range("K" & i)
If ComboBox2.ListIndex = -1 Then ComboBox2.AddItem .Range("K" & i)
Next i
End With
'------------------------
Et maintenant, l'affichage dans les deux ComboBox est une date et non pas u n numéro de série.
Mais j'aimerais savoir pourquoi avec la priorité RowSource ça ne marcha it pas et avec un remplissage directe de la feuille marche ?
J'ai annulé lÂ’alimentation des CombobBox depuis la propriété RowSou rce avec des plages nommées, et je l'ai remplacé par l'alimentation dir ecte depuis la feuille :
'----------------------------------------- With Sheets("Base") For i = 8 To .Range("J65536").End(xlUp).Row ComboBox1 = .Range("J" & i) If ComboBox1.ListIndex = -1 Then ComboBox1.AddItem .Range("J" & i) ComboBox2 = .Range("K" & i) If ComboBox2.ListIndex = -1 Then ComboBox2.AddItem .Range("K" & i) Next i End With '------------------------
Et maintenant, l'affichage dans les deux ComboBox est une date et non pas u n numéro de série.
Mais j'aimerais savoir pourquoi avec la priorité RowSource ça ne marcha it pas et avec un remplissage directe de la feuille marche ?
Merci.
Fredo P.
Eh si je ne me trompe! ComboBox1 = Format(.Range("J" & i),"dd/mm/yy")
"Apitos" a écrit dans le message de news:
Bonsoir,
J'ai annulé l’alimentation des CombobBox depuis la propriété RowSource avec des plages nommées, et je l'ai remplacé par l'alimentation directe depuis la feuille :
'----------------------------------------- With Sheets("Base") For i = 8 To .Range("J65536").End(xlUp).Row ComboBox1 = Format(.Range("J" & i),"dd/mm/yy") If ComboBox1.ListIndex = -1 Then ComboBox1.AddItem .Range("J" & i) ComboBox2 = .Range("K" & i) If ComboBox2.ListIndex = -1 Then ComboBox2.AddItem .Range("K" & i) Next i End With '------------------------
Et maintenant, l'affichage dans les deux ComboBox est une date et non pas un numéro de série.
Mais j'aimerais savoir pourquoi avec la priorité RowSource ça ne marchait pas et avec un remplissage directe de la feuille marche ?
Merci.
Eh si je ne me trompe!
ComboBox1 = Format(.Range("J" & i),"dd/mm/yy")
"Apitos" <apitos@gmail.com> a écrit dans le message de news:
9c2a3834-f90e-4b3d-bcea-5c9ef86d8628@googlegroups.com...
Bonsoir,
J'ai annulé l’alimentation des CombobBox depuis la propriété RowSource avec
des plages nommées, et je l'ai remplacé par l'alimentation directe depuis la
feuille :
'-----------------------------------------
With Sheets("Base")
For i = 8 To .Range("J65536").End(xlUp).Row
ComboBox1 = Format(.Range("J" & i),"dd/mm/yy")
If ComboBox1.ListIndex = -1 Then ComboBox1.AddItem .Range("J" &
i)
ComboBox2 = .Range("K" & i)
If ComboBox2.ListIndex = -1 Then ComboBox2.AddItem .Range("K" &
i)
Next i
End With
'------------------------
Et maintenant, l'affichage dans les deux ComboBox est une date et non pas un
numéro de série.
Mais j'aimerais savoir pourquoi avec la priorité RowSource ça ne marchait
pas et avec un remplissage directe de la feuille marche ?
Eh si je ne me trompe! ComboBox1 = Format(.Range("J" & i),"dd/mm/yy")
"Apitos" a écrit dans le message de news:
Bonsoir,
J'ai annulé l’alimentation des CombobBox depuis la propriété RowSource avec des plages nommées, et je l'ai remplacé par l'alimentation directe depuis la feuille :
'----------------------------------------- With Sheets("Base") For i = 8 To .Range("J65536").End(xlUp).Row ComboBox1 = Format(.Range("J" & i),"dd/mm/yy") If ComboBox1.ListIndex = -1 Then ComboBox1.AddItem .Range("J" & i) ComboBox2 = .Range("K" & i) If ComboBox2.ListIndex = -1 Then ComboBox2.AddItem .Range("K" & i) Next i End With '------------------------
Et maintenant, l'affichage dans les deux ComboBox est une date et non pas un numéro de série.
Mais j'aimerais savoir pourquoi avec la priorité RowSource ça ne marchait pas et avec un remplissage directe de la feuille marche ?