Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2010 combobox et listfillrange

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Nulenvba

XLDnaute Nouveau
Nouveau sur ce forum, voila déjà ma première question.
Sur urne feuille nommée "facture", j'ai créer une combobox qui affiche la liste des clients qui se trouvent sur une autre fichier nommé "clients".Le nombre de ces clients évolue sans arrêt..
En supposant qu'il y ait 200 clients, j'ai indiqué, pour être tranquille, la formule suivante dans la case ListFillRange des propriétés de la combobox :[clients.xls]Feuil1!C2:C300
Ça n'est pas satisfaisant.
Comment faire pour que ListFillRange ne contienne que les clients existant avec une formule du genre
[clients.xls]feuil1!C2:C &[C65535].end(xlUp).row , formule que la case ListFillRange refuse obstinément.
Merci d'avance pour vos conseils.
 
Bonjour et bienvenue sur le forum,

Normalement c'est au demandeur de nous faire un classeur exemple de son problème, mais comme c'est votre premier fil et que je suis de bonne humeur, regardez dans le fichier joint, comment est définie le nom 'ListeClients' et comment listFillRange l'accepte et s'adaptera (il n'y a pas de macro dans le fichier)

Cordialement
 

Pièces jointes

Merci beaucoup pour cette réponse rapide.
Je n'ai pas bien compris votre introduction "Normalement c'est au demandeur de nous faire un classeur exemple de son problème "? Il fallait que je joigne une copie de mon classeur? J'ai l'impression que les conversations que j'ai consultées se présentaient de la même façon que la mienne?
En ce qui concerne votre exemple, c'est parfait ça fonctionne, mais comme je l'ai dit, je suis nul en VBA aussi je n'ai pas compris comment est défini le nom ListeClients. Si je place la liste de clients en colonne C, ça ne marche plus.
Est ce que ça fonctionnerais aussi si la liste clients était sur un autre classeur?
 
Bonjour,

Oui c'eût été mieux que vous joigniez un classeur exemple anonymisé à votre première demande.
Dans l'exemple que je vous ai donné, il n'y a pas de macro (vba) comme déjà dit précédemment. Le nom 'ListeClients' est un nom de plage de cellules définie par formule (décaler) dans le gestionnaire de noms (onglet formule/Gestionnaire de noms).
Si vous déplacez votre liste il vous faudra également redéfinir ce nom en fonction de sa nouvelle position dans votre classeur(quelqu'il soit).

Cordialement
 
Bonsoir le fil, le forum, Nulenvba (bienvenue sur XLSà, Roblochon

Nulenvba
Pour mieux comprendre l'introduction Roblochienne 😉
Un extrait de la charte du forum
5 – La possibilité de joindre des fichiers est donnée sur ce forum. Ne pas hésiter à utiliser cette fonction, tout en veillant que les données soient bidons et donc qu’aucune donnée confidentielle, nominative ne soit dans le fichier.
Et pour mieux comprendre les us et coutumes du forum, accès direct vers la dite charte
A lire ou relire car il semble que tu aies zappé le point 3 de celle-ci, non ? 😉
 
Bonjour,
Merci encore pour votre réponse rapide.
Je crois que j'ai bien choisi mon pseudo. Je ne comprends pas bien la fonction decaler que vous utilisez
DECALER(
référence Clients!$B$2 OK
Décalage nombre de lignes 1+Clients!$A$1 ? Une ligne?
;; donc on saute décalage nombre de colonnes?
hauteur MAX(Clients!$A$11
largeur NBVAL(Clients!$B$3:$B$100
Ne peut on pas utiliser= DECALER(Clients!$B$2;NBVAL(Clients!$B$2:$B$100)) ?
Enfin, si ma liste clients est dans un autre classeur, comment dois je créer le nom et sur quel classeur?
Je ne peux pas vous envoyer une copie de mes classeurs, il y a trop de liaisons entr'eux, si je les anonymise plus rien ne fonctionne.
un grand merci encore pour votre patience.
 
Bonjour le fil

Pour info
On ne joint jamais de copie intégrale d'un classeur.
La "coutume" c'est de créer exhilo un fichier excel allégé et sans données confidentielles dont la seule vocation est d'illustrer la problématique rencontrée.

C'est d'ailleurs ce qu'a fait Roblochon dans sa réponse.

Mais "l'usage", c'est que ce soit le demandeur qui prenne le temps de concocter son fichier exemple dès le message introductif de sa discussion 😉

NB: La solution de Roblochon (comme il l'indique est sans VBA, donc sans macro)
Il s'agit de la fameuse plage dynamique nommée
 
Bonjour,

Et encore, une fois, il n'y a pas de code vba dans cette histoire, vous pouvez continuer à être NullEnVba🙂.

Dans le fichier clients.xlsx le nom est définit ainsi:
"=DECALER(Clients!$B$2;1;;MAX(1;NBVAL(Clients!$B$2:$B$100)-1))
Explications:
1 Décalage d'une ligne pour éviter l'entête (B2)
2 calcul de la hauteur de plage par Nbval
cette fonction pouvant retourner 0 s'il n'y a aucune valeur entre B2:B100
on emploie Max(1;nbval(…)-1) pour retourner au moins une ligne
Le -1 est employé pour corriger le nombre de valeurs (entête comprise) de la colonne
Avec Max la formule retournera ainsi toujours au moins une cellule (la première sous l'entête), même vide
On pourrait très bien faire
=Decaler( $B$3;;Max(1;NBVAL($B3:$B$100))
Mais la cellule renvoyée s'il n'y avait aucune valeur en b3:b100 serait B4 et non plus B3.


Dans le fichier ListeClients.xlsx redéfinition du nom ListeClients (avec client.xlsx ouvert) :
=DECALER([Clients.xlsx]Clients!$B$2;1;;MAX(1;NBVAL([Clients.xlsx]Clients!$B$2:$B$100)-1))

Bon dimanche
 

Pièces jointes

Rebonjour Roblechon,
Je suis stupéfait de la rapidité de votre réponse et je vous en remercie.
Cette fois grâce à ces explications claires, je crois que j'ai bien compris.
Staple 1600 m'a tiré un peu les oreilles, mais promis, la prochaine fois que j'interviendrai je joindrai un fichier exemple
Encore merci.
Très cordialement.
 
Bonjour Roblochon
Çà y est, je possède bien la fonction DECALER. Je l'ai appliquée avec succès.
Encore merci.
Pour aller plus loin, j'ai essayé de faire la même chose en VBA ! Et là ça ne va pas du tout.
Cette fois, je joins deux classeurs, facture.xlsx qui contient les combobox et le code. et liste clients.xlsx.
Quelles sont les erreurs?
 

Pièces jointes

Bonjour,

Faites une recherche dans le forum sur 'Classeur Fermé', vous trouverez plein de solutions, notamment avec ADO (qui fonctionne aussi classeur ouvert).
Vous semblez ne pas avoir les bases en VBA pour le faire par macro. Je vous suggère donc de passer par des tutos qui vous donnerons un minimum de connaissances.
Et revenez avec vos tentatives et difficultés.
Bonnes recherches
 
Dernière édition:
Bonjour @JeanJean2018 et bienvenue sur le forum


Sans doute parc eque le fichier source de la liste des clients n'est pas ouvert en premier et que les références à ce fichier dans les noms sont remplacées par #REF!.

De toute façon, la façon de faire qu'à choisit l'initiateur de ce fil, n'est pas la meilleure pour ce genre de chose et pose souvent des problèmes.

Dans le fichier joint (facture.xlsm) qui interroge le fichier 'liste clients.xlsx' vous verrez une méthode d'interrogation d'un fichier externe, fermé ou non.

Le meilleur moyen d'avoir une réponse adéquate est de créer votre propre discussion, avec un fichier exemple anonymisé et sans données confidentielle ainsi que des explication détaillées de votre situation.

Cordialement
 

Pièces jointes

Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

C
Réponses
7
Affichages
20 K
@+Thierry
@
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…