J'ai créé une liste déroulante avec le numéro de semaine d'une année (sous ce format la : de 01 à 52)
J'aimerais récupérer la date du jour , la convertir en numéro de semaine et Pré-sélectionner la valeur de la semaine dans la liste déroulante.
Comme cela l'utilisateur à la date 24/03/2009, la liste déroulante s'affichera avec le numero de semaine 13 mais je souhaiterais que les autres valeures (semaines) de cette liste déroulante ne soient pas supprimées.
Code:
Dim i
datduJour = Date
... ( je ne sais pas après )
...
...
For i = 1 To 52
Select Case i
Case 1: CB2.AddItem "01"
Case 2: CB2.AddItem "02"
Case 3: CB2.AddItem "03"
Case 4: CB2.AddItem "04"
Case 5: CB2.AddItem "05"
Case 6: CB2.AddItem "06"
Case 7: CB2.AddItem "07"
Case 8: CB2.AddItem "08"
Case 9: CB2.AddItem "09"
Case Else: CB2.AddItem i
End Select
Next
Re : Pré-sélectionner une valeur dans une liste déroulante
Bonjour,
Pour répondre à ta question ... celle du titre du post :
Code:
.ListIndex
Mais il semble que ta question soit en réalité très différente ... comment trouver le numéro de la semaine en fonction d'une date ...
Je t'encourage à effectuer une recherche sur le forum ... ce sujet a déjà été abordé et résolu ... des dizaines de fois ...
Function SemaineX(Ndate As Date)
'cette fonction donne la semaine de la date choisie suivant la norme européenne.
resultat1 = (Ndate - 2) Mod 7
annee = Year(Ndate - resultat1 + 3)
jour1 = DateSerial(annee, 1, 1)
resultat2 = (jour1 + 1) Mod 7
SemaineX = Int((Ndate - jour1 + resultat2 + 4) / 7)
End Function
Que tu exploites par exemple comme ceci dans ton code:
Code:
datduJour = Date
NumSemaine = SemaineX(datduJour)
et Pré-sélectionner la valeur de la semaine dans la liste déroulante.
Re : Pré-sélectionner une valeur dans une liste déroulante
Bonsoir,
Je vous remercie.
Je vous explique:
J'ai inséré au départ ce code dans un UserForm_Initialize() afin de remplir la liste déroulante.
Puis j'ai pensé qu'il serait mieux pour l'utilisateur au lieu de chercher la semaine désirée dans les 52 semaines de la liste déroulante de l'aider un peu. Donc c'est pour ca que je me suis dit si je récupére la date du jour que je la convertis en numero de semaine et bien avec ce numero de semaine je pourrais présélectionner la semaine dans la liste déroulante .
J'ai fait un AddItem pour ajouter les valeurs à la liste déroulante mais peut etre que ce n'est pas AddItem qu'il faut utiliser ?
Code:
Private Sub UserForm_Initialize()
For i = 1 To 52
Select Case i
Case 1: CB2.AddItem "01"
Case 2: CB2.AddItem "02"
Case 3: CB2.AddItem "03"
Case 4: CB2.AddItem "04"
Case 5: CB2.AddItem "05"
Case 6: CB2.AddItem "06"
Case 7: CB2.AddItem "07"
Case 8: CB2.AddItem "08"
Case 9: CB2.AddItem "09"
Case Else: CB2.AddItem i
End Select
Next
End Sub
Re : Pré-sélectionner une valeur dans une liste déroulante
Re,
Essaye plutôt ceci (en gardant la fonction que je t'ai donné dans mon précédent message dans un module):
Code:
Private Sub UserForm_Initialize()
Dim i As Long, datduJour As Date, NumSemaine As Integer
For i = 1 To 52
CB2.AddItem i
Next
datduJour = Date
NumSemaine = SemaineX(datduJour)
CB2.ListIndex = NumSemaine - 1
End Sub
Re : Pré-sélectionner une valeur dans une liste déroulante
Bonjour,
Merci cela fonctionne très bien !!!!
Mais j'ai probablement un futur probleme, dans ma liste déroulante je suis obligé pour la suite de ma macro d'avoir pour numéro de semaine 01,02,03,04,05,06,07,08,09 puis 10, .... (comme j'avais montré dans mon code)
Code:
For i = 1 To 52
Select Case i
Case 1: CB2.AddItem "01"
Case 2: CB2.AddItem "02"
Case 3: CB2.AddItem "03"
Case 4: CB2.AddItem "04"
Case 5: CB2.AddItem "05"
Case 6: CB2.AddItem "06"
Case 7: CB2.AddItem "07"
Case 8: CB2.AddItem "08"
Case 9: CB2.AddItem "09"
Case Else: CB2.AddItem i
End Select
Next
Le soucis, si la date du jour est le 12 janvier 2010 est ce que cela va toujours fonctionner et me sélectionner le numero de semaine 03 dans la liste déroulante, car j'ai peur que la fonction que vous avez créé me donne le numero de semaine 3 et ne trouve pas correspondance dans la liste déroulante.
Code:
Function SemaineX(Ndate As Date)
'Cette fonction donne la semaine de la date choisie suivant la norme européenne.
resultat1 = (Ndate - 2) Mod 7
annee = Year(Ndate - resultat1 + 3)
jour1 = DateSerial(annee, 1, 1)
resultat2 = (jour1 + 1) Mod 7
SemaineX = Int((Ndate - jour1 + resultat2 + 4) / 7)
End Function
Re : Pré-sélectionner une valeur dans une liste déroulante
Re,
Dans le meme UserForm, j'ai une autre liste déroulante pour l'année et je souhaiterais comme pour l'autre liste déroulante de cette meme discution qu'il y ait une pré-sélection sur l'année en cours donc 2009, j'ai ecris le code mais probleme !
Merci de m'aider également
Cdlt.
Chico
Code:
'Permet de remplir la liste déroulante des années de l'année 2006 à 2016 à modifier si besoin est !!!
For i = 2006 To 2016
CBY.AddItem i
Next
annee = Year(Date)
CBY.ListIndex = annee
Mais j'ai probablement un futur probleme, dans ma liste déroulante je suis obligé pour la suite de ma macro d'avoir pour numéro de semaine 01,02,03,04,05,06,07,08,09 puis 10, .... (comme j'avais montré dans mon code)
Code:
For i = 1 To 52
Select Case i
Case 1: CB2.AddItem "01"
Case 2: CB2.AddItem "02"
Case 3: CB2.AddItem "03"
Case 4: CB2.AddItem "04"
Case 5: CB2.AddItem "05"
Case 6: CB2.AddItem "06"
Case 7: CB2.AddItem "07"
Case 8: CB2.AddItem "08"
Case 9: CB2.AddItem "09"
Case Else: CB2.AddItem i
End Select
Next
Le soucis, si la date du jour est le 12 janvier 2010 est ce que cela va toujours fonctionner et me sélectionner le numero de semaine 03 dans la liste déroulante, car j'ai peur que la fonction que vous avez créé me donne le numero de semaine 3 et ne trouve pas correspondance dans la liste déroulante.
Code:
Function SemaineX(Ndate As Date)
'Cette fonction donne la semaine de la date choisie suivant la norme européenne.
resultat1 = (Ndate - 2) Mod 7
annee = Year(Ndate - resultat1 + 3)
jour1 = DateSerial(annee, 1, 1)
resultat2 = (jour1 + 1) Mod 7
SemaineX = Int((Ndate - jour1 + resultat2 + 4) / 7)
End Function
Dans le meme UserForm, j'ai une autre liste déroulante pour l'année et je souhaiterais comme pour l'autre liste déroulante de cette meme discution qu'il y ait une pré-sélection sur l'année en cours donc 2009, j'ai ecris le code mais probleme !
Merci de m'aider également
Cdlt.
Chico
Code:
'Permet de remplir la liste déroulante des années de l'année 2006 à 2016 à modifier si besoin est !!!
For i = 2006 To 2016
CBY.AddItem i
Next
annee = Year(Date)
CBY.ListIndex = annee
Tu utilises mal ListIndex. ListIndex identifie l'élément actuellement sélectionné dans un contrôle Combobox. Et le premier élément aura toujours comme index 0. Donc 2006 correspondra à
Re : Pré-sélectionner une valeur dans une liste déroulante
Bonjour Skoobi,
Grand merci à toi,
Maintenant je comprends comment fonctionne une liste déroulante et également un grand merci pour ce format !!!
Si j'ai bien compris ce code :
Code:
CB2.AddItem Format(i, "00")
remplace celui ci-dessous:
Code:
For i = 1 To 52
Select Case i
Case 1: CB2.AddItem "01"
Case 2: CB2.AddItem "02"
Case 3: CB2.AddItem "03"
Case 4: CB2.AddItem "04"
Case 5: CB2.AddItem "05"
Case 6: CB2.AddItem "06"
Case 7: CB2.AddItem "07"
Case 8: CB2.AddItem "08"
Case 9: CB2.AddItem "09"
Case Else: CB2.AddItem i
End Select
Next