Drop Down récalcitrant
Le
Gil HASCH
Bonjour à tous
Mon problème du jour est l'utilisation d'un Drop Down dans
une feuille pour aider à la saisie de certaines valeurs
sélectionnables parmi une liste prédéterminée.
A l'ouverture du classeur, je rends le Drop Down invisible
J'intercepte le clic droit sans problème.
Je contrôle pour être sûr que la cellule active se trouve
bien dans la zone autorisée pour la saisie.
J'ajuste les dimensions de la Drop Down à celles de la
cellule active.
J'initialise - en principe mais c'est là où j'ai un
problème- la liste avec le contenu de cellules dans une
autre feuille en définissant sa propriété FillRange.
Je rends la Drop Down visible avec sa propriété ListIndex
= 0.
Une fois la valeur sélectionnée dans la liste, j'inscris
dans la cellule active la valeur correspondante et je
rends à nouveau invisible la Drop Down.
J'intercepte également tous les évènements de
SélectionChange de la feuille pour rendre invisible la
Drop Down. De cette manière si je clique dans une autre
cellule, cela fait disparaître la Drop Down.
Dans un autre classeur ça marche impeccable mais dans
celui-là : Impossible de remplir la DropDown avec la liste
des valeurs souhaitées : la colonne 3 de la
feuille "Groupes et Fonctions Production" de la LigneDébut
à la LigneFin.
ThisWorkbook.Sheets("Feuille des Productions").DropDowns
("Drop Down 3").ListFillRange = "Groupes et Fonctions
Production!R" & LigneDébut & "C3:R" & LigneFin & "C3"
Cette instruction ne provoque aucun message d'erreur mais
la DropDown est vide
L'instruction suivante destinée à initialiser la Drop Down
sans aucune valeur prédéterminée provoque l'arrêt du
programme sur un message d'erreur
ThisWorkbook.Sheets("Feuille des Productions").DropDowns
("Drop Down 3").ListIndex = 0
Même si je l'enlève, j'ai une Drop Down vide.
Elle apparaît et disparaît comme il faut mais elle est
désespérément vide.
Auriez-vous une idée?
Entre parenthèses si j'ai choisi cette méthode c'est que
je dois choisir une valeur parmi une liste mais qu'en plus
d'inscrire cette valeur choisie dans la cellule active, il
y a d'autres valeurs à inscrire dans les colonnes
suivantes de la même ligne en fonction de la valeur
choisie.
J'ai essayé de remplir la Drop Down par la méthode des
Clear et AddItem mais devant le nombre de messages
d'erreur j'ai arrêté bien vite.
Mon problème du jour est l'utilisation d'un Drop Down dans
une feuille pour aider à la saisie de certaines valeurs
sélectionnables parmi une liste prédéterminée.
A l'ouverture du classeur, je rends le Drop Down invisible
J'intercepte le clic droit sans problème.
Je contrôle pour être sûr que la cellule active se trouve
bien dans la zone autorisée pour la saisie.
J'ajuste les dimensions de la Drop Down à celles de la
cellule active.
J'initialise - en principe mais c'est là où j'ai un
problème- la liste avec le contenu de cellules dans une
autre feuille en définissant sa propriété FillRange.
Je rends la Drop Down visible avec sa propriété ListIndex
= 0.
Une fois la valeur sélectionnée dans la liste, j'inscris
dans la cellule active la valeur correspondante et je
rends à nouveau invisible la Drop Down.
J'intercepte également tous les évènements de
SélectionChange de la feuille pour rendre invisible la
Drop Down. De cette manière si je clique dans une autre
cellule, cela fait disparaître la Drop Down.
Dans un autre classeur ça marche impeccable mais dans
celui-là : Impossible de remplir la DropDown avec la liste
des valeurs souhaitées : la colonne 3 de la
feuille "Groupes et Fonctions Production" de la LigneDébut
à la LigneFin.
ThisWorkbook.Sheets("Feuille des Productions").DropDowns
("Drop Down 3").ListFillRange = "Groupes et Fonctions
Production!R" & LigneDébut & "C3:R" & LigneFin & "C3"
Cette instruction ne provoque aucun message d'erreur mais
la DropDown est vide
L'instruction suivante destinée à initialiser la Drop Down
sans aucune valeur prédéterminée provoque l'arrêt du
programme sur un message d'erreur
ThisWorkbook.Sheets("Feuille des Productions").DropDowns
("Drop Down 3").ListIndex = 0
Même si je l'enlève, j'ai une Drop Down vide.
Elle apparaît et disparaît comme il faut mais elle est
désespérément vide.
Auriez-vous une idée?
Entre parenthèses si j'ai choisi cette méthode c'est que
je dois choisir une valeur parmi une liste mais qu'en plus
d'inscrire cette valeur choisie dans la cellule active, il
y a d'autres valeurs à inscrire dans les colonnes
suivantes de la même ligne en fonction de la valeur
choisie.
J'ai essayé de remplir la Drop Down par la méthode des
Clear et AddItem mais devant le nombre de messages
d'erreur j'ai arrêté bien vite.

Poser une question


Dans l'explorateur d'objet d'excel 2002, je n'ai pas de 'Dropdowns'. C'est peut-etre là le problème
? Quelle version d'excel utilise tu ?
j-p
références de type R1C1, essaye avec :
ThisWorkbook.Sheets("Feuille des Productions").DropDowns
("Drop Down 3").ListFillRange = "Groupes et Fonctions
Production!C" & LigneDébut & ":C" & LigneFin
j-p
Il n'y a toujours pas de message d'erreur sur la ligne en
question mais sur la ligne suivante :
ThisWorkbook.Sheets("Feuille des Productions").DropDowns
("Drop Down 3").ListIndex = 0
Si j'enlève cette dernière ligne, il n'y a plus d'arrêt
sur erreur mais la liste est toujours vide.
En fait je pense que l'erreur vient du fait que je
n'arrive pas à lui attribuer cette propriété ListFillRange
et que si la liste est vide, je n'arrive pas à mettre à 0
la ListIndex.
Mais l'incompréhensible c'est qu'aucun message ne vient
m'avertir de l'échec sur ListFillRange.
Après avoir tout essayé il m'a fallu entourer le nom de la
feuille avec deux' et utiliser le mode lettres pour
l'adresse comme tu le suggérais
ThisWorkbook.Sheets("Feuille des Productions").DropDowns
("Drop Down 3").ListFillRange = "'Groupes et Fonctions
Production'!C" & Début & ":C" & fin
Merci pour avoir résolu une bonne partie du blème
Je n'ai pas vérifié si on s'en sort avec des fonctions
comme INDIRECT et ADDRESS, mais a priori c'est une
meilleure idée de donner un nom au champ où se trouve la
liste des valeurs.
Ensuite, ListFillRange = NomChamp
Une combobox accepte que le champ de valeurs ne soit pas
dans la même feuille. Les versions précédentes, ça remonte
à un peu plus de trois ans que j'ai joué avec, mais ça me
paraît cohérent que ça marche aussi.
Bon alors par la même occasion, j'ai saisi le nom de champ
dans la boîte de propriétés, ça m'intéresserait que
quelqu'un me raffraichisse l'esprit sur la syntaxe VB,
pour faire la même chose.
Parce que j'ai dit ListFillRange = NomChamp, OK mais il
reste à dire, pour une combobox créée sous Excel 2000, de
quel objet ListFillRange est une propriété ...