Pré-sélectionner une valeur dans une liste déroulante

Chico64

XLDnaute Junior
Bonjour à Tous,

Mon soucis :

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


Merci à vous.
Chico
 

James007

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

A +
 

skoobi

XLDnaute Barbatruc
Re : Pré-sélectionner une valeur dans une liste déroulante

Bonsoir Chico 64,

J'aimerais récupérer la date du jour , la convertir en numéro de semaine
Voici une fonction VBA à mettre dans un module:
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
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.
Ok mais dans ce cas pourquoi fais-tu un AddItem sur le combobox:confused:.

A te relire.

Edit: Bonjour James007.
 
Dernière édition:

Chico64

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

Vous remerciant.
Chico
 

skoobi

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

Chico64

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

Vous remerciant
Cdlt
Chico
 

Chico64

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

skoobi

XLDnaute Barbatruc
Re : Pré-sélectionner une valeur dans une liste déroulante

Re bonjour,

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
Vous remerciant
Cdlt
Chico

Il suffit de mettre la semaine dans le format désiré au moment de la création de la liste:
Code:
CB2.AddItem [B][COLOR=Blue]Format(i, "00")[/COLOR][/B]

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
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 à
Code:
CB2.ListIndex = 0
Voici l'adaptation:
Code:
CBY.ListIndex = annee [B][COLOR=Blue]- 2006[/COLOR][/B]

Bonne soirée.
 

Chico64

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

Chico.
 

Discussions similaires

Réponses
8
Affichages
441

Statistiques des forums

Discussions
312 239
Messages
2 086 508
Membres
103 238
dernier inscrit
ds776001