[Excel / VBA] Probleme selection index ComboBox

Résolu
cs_sql84 Messages postés 21 Date d'inscription mercredi 31 janvier 2007 Statut Membre Dernière intervention 24 novembre 2007 - 18 nov. 2007 à 13:24
cs_sql84 Messages postés 21 Date d'inscription mercredi 31 janvier 2007 Statut Membre 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.

6 réponses

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
18 nov. 2007 à 13:54
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 #   
3
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
18 nov. 2007 à 13:42
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 #   
0
cs_sql84 Messages postés 21 Date d'inscription mercredi 31 janvier 2007 Statut Membre Dernière intervention 24 novembre 2007
18 nov. 2007 à 13:51
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 !!
0
cs_sql84 Messages postés 21 Date d'inscription mercredi 31 janvier 2007 Statut Membre Dernière intervention 24 novembre 2007
18 nov. 2007 à 14:05
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_sql84 Messages postés 21 Date d'inscription mercredi 31 janvier 2007 Statut Membre Dernière intervention 24 novembre 2007
18 nov. 2007 à 14:14
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
0
cs_sql84 Messages postés 21 Date d'inscription mercredi 31 janvier 2007 Statut Membre Dernière intervention 24 novembre 2007
18 nov. 2007 à 14:27
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
0
Rejoignez-nous