[Excel / VBA] Probleme selection index ComboBox [Résolu]

Messages postés
21
Date d'inscription
mercredi 31 janvier 2007
Dernière intervention
24 novembre 2007
- - Dernière réponse : cs_sql84
Messages postés
21
Date d'inscription
mercredi 31 janvier 2007
Dernière intervention
24 novembre 2007
- 18 nov. 2007 à 14:27
Bonjour la communauté,

J'ai un petit soucie concernant la selection d'un index dans un ComboBox, je vous explique en quelques mots de quoi il retourne.
j'ai sur une feuille de calcul les dates. en A1:A31 j'ai les jours, en B1:B12 j'ai les mois et en C1:C94 j'ai les années de 2007 à 2100
jusque là pas de problème.
Dans VB j'ai créer un UserForm avec 3 ComboBox (2, 3, 4) dans chacun d'entres eux j'alloue une plage définie sur ma feuille de calcul :
ComboBox2.RowSource = "dates!A1:A31"
ComboBox3.RowSource = "dates!B1:B31"
ComboBox4.RowSource = "dates!C1:C94"
jusque là pas de problème, lorsque je lance le UserForm, mes Combo contiennent bien les valeurs de mes plages.
Maintenant dans le cas d'une modification d'enregistrement, j'ai créer un autre UserForm pour pouvoir modifier les enregistrements présents. je souhaite donc préselectionner l'index des ComboBox pour afficher la date inscrite dans l'enregistrement
j'ai fait une procedure qui permet de récupérer une date (11/15/2007 par exemple) et d'extraire le mois, le jour et l'année dans 3 variables. je me sert ensuite de ces valeurs pour préselectionner l'index du Combo comme suit :
' Afficher le jour
UserForm11.ComboBox2.ListIndex = JourDate - 1
' Affiche le mois
UserForm11.ComboBox3.ListIndex = MoisDate - 1
' Affiche l'annee
UserForm11.ComboBox4.ListIndex = AnneeDate
' Affiche le formulaire
UserForm11.Show

Lorsque je lance le UserForm mon ComboBox2 et 3 ont bien les valeurs préselectionnées (15 pour le jour, 11 pour le mois)
par contre le ComboBox4 qui doit afficher l'année reste sans valeur et j'ai une erreur qui me plante le programme :

Erreur d'execution '380'
Impossible de définir la propriété ListIndex. Valeur de propriete non valide

losque j'analyse le résultat du debuggage je constate que ma propriete listIndex est à -1
 MsgBox(UserForm11.ComboBox4.ListIndex)
Ma question est la suivante, avez vous une idée de ce qui provoque cela, et si oui avez vous une solution ?

Par avance je remercie toutes les bonnes volontés de leurs aides.
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
Messages postés
7745
Date d'inscription
mercredi 1 septembre 2004
Dernière intervention
24 septembre 2014
3
Merci
Tout simplement : UserForm11.ComboBox4.ListIndex = AnneeDate-2007

Puisque pour l'année 2007 tu veux l'index 0
Pour l'année 2100 tu auras l'index 2100-2007=93

---- Sevyc64  (alias Casy) ---- <hr size ="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #   

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de cs_casy
Messages postés
7745
Date d'inscription
mercredi 1 septembre 2004
Dernière intervention
24 septembre 2014
0
Merci
Que vaut ta valeur AnneeDate pour 2007 ??? Normalement elle devrait valoir 0 puisque cela correspond à l'index 0 de ta combo

---- Sevyc64  (alias Casy) ---- # LE PARTAGE EST NOTRE FORCE #   
Commenter la réponse de cs_casy
Messages postés
21
Date d'inscription
mercredi 31 janvier 2007
Dernière intervention
24 novembre 2007
0
Merci
Salut,
ma valeur vaut 2007
puisque c'es le resultat de ma prodecure pour récuperer le jour, le mois et l'année
JourDate vaut 15
MoisDate vaut 11
AnneeDate vaut 2007
mais je vient de comprendre...
mes listes de dates pour les jours et les mois commence à 1
alors que pour les année cela commence à 2007
en fait avec ce code j'alloue la valeur de la case 2007 ? n'est-ce pas ?
ComboBox4.ListIndex = AnneeDate
auriez vous une solution à me proposer pour regler cela ?
Et encore Merci !!
Commenter la réponse de cs_sql84
Messages postés
21
Date d'inscription
mercredi 31 janvier 2007
Dernière intervention
24 novembre 2007
0
Merci
re,
oui effectivement,
tu me conseille de revoir l'allocation de la plage de 
ComboBox4.RowSource = "dates!C1:C94"
à
ComboBox4.RowSource = "dates!C1:C93" ?
je vais essayer
Commenter la réponse de cs_sql84
Messages postés
21
Date d'inscription
mercredi 31 janvier 2007
Dernière intervention
24 novembre 2007
0
Merci
Haaa
excuse j'avais pas vu la première ligne
Tout simplement : UserForm11.ComboBox4.ListIndex = AnneeDate-2007
je vient de comprendre dans ce cas l'index sera 0 et mon index sera bon
pour 2008 l'index sera 1 et ainsi de suite
au TOP t'es vraiment un gourou !

je vient de tester, j'ai bien l'index dans ma variable AnneeDate, mais le problème persiste (même erreur)
cela ne viendrais t-il pas que ma variable est un String ?
Dim AnneeDate as String
Commenter la réponse de cs_sql84
Messages postés
21
Date d'inscription
mercredi 31 janvier 2007
Dernière intervention
24 novembre 2007
0
Merci
Re
merci votre solution etait la bonne j'ai simplement changer le typage de mes variables
JourDate
MoisDate
AnneeDate
en Integer au lieu de String

Un grand merci pour votre aide précieuse
Commenter la réponse de cs_sql84

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.