Microsoft 365 pb avec selection dans liste

rafi93

XLDnaute Occasionnel
bonjour à tous

je rame depuis plusieurs jours sur un problème de sélection dans une liste : liste déroulante, saisir "a" et ne proposer que les items contenant "a".

Merinos m'a déjà bien aidé en me communiquant cette solution :
https://excel-downloads.com/threads...-automatique-sur-liste.20073666/post-20563166

mais je n'arrive pas à l'adapter pour déplacer la liste des items vers une nouvelle feuille qui soit différente de celle de la combobox

curieusement,
1/ quand je démarre avec le fichier de demo (ci joint) tel quel, càd la combobox et la liste d'items dans la même feuille, ça fonctionne correctement
2/ je deplace la liste d'items vers une autre feuille, ça marche encore
3/ j'enregistre et ferme le fichier, puis le réouvre : ça ne marche plus !!!

je suppose que c'est peut être à cause de la déclaration Byval pour Target, qui reste en mémoire après avoir déplacé la liste.

mais alors, comment faire pour que ça fonctionne pour de bon ??

merci !
 

Pièces jointes

  • combobox lié à liste 1.1 (2).xlsm
    28.5 KB · Affichages: 3

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Rafi,
Pour le transfert de la table j'ai fait :
VB:
a = Application.Transpose([clients])
et ça marche quelque soit l'endroit où se trouve la table.
[edit] ou encore :
VB:
a = Application.Transpose(Sheets("Feuil1").Range("clients").Value)
en précisant la feuille.
 
Dernière édition:

rafi93

XLDnaute Occasionnel
effectivement...

décidement, je ne me ferai jamais à la syntaxe vba

pourquoi ne peut on pas mettre Tableau2[clients] (avec ou sans guillemets), qui oblige à déclarer un nouveau nom juste pour ça ?
il y a une règle de syntaxe particulière ou c'est juste "comme ça" ?
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re,
Vus pouvez utiliser cette syntaxe :
VB:
a = Application.Transpose([Tableau2[clients]])
qui semble marcher.
Mais je préfère toujours nommer les plages, c'est pour ça que je vous ai fait cette proposition.
ou c'est juste "comme ça" ?
Quelquefois .... :)

Par ex, j'ai vu que "a = Application.Transpose(Range("clients").Value)" dans une macro classique marche très bien.
Dans un Worksheet_SelectionChange, cette même ligne donne le tableau "a" vide. :rolleyes:

Bill a quelquefois un humour qui nous échappe.
 

rafi93

XLDnaute Occasionnel
Re,
Vus pouvez utiliser cette syntaxe :
VB:
a = Application.Transpose([Tableau2[clients]])
qui semble marcher.
Mais je préfère toujours nommer les plages, c'est pour ça que je vous ai fait cette proposition.

Quelquefois .... :)

Par ex, j'ai vu que "a = Application.Transpose(Range("clients").Value)" dans une macro classique marche très bien.
Dans un Worksheet_SelectionChange, cette même ligne donne le tableau "a" vide. :rolleyes:

Bill a quelquefois un humour qui nous échappe.
ah OK
dans mon a = Application.Transpose([Tableau2[clients]]), c'est juste qu'il me manquait le 2eme ]:confused:

concernant le nommage Tableau2[clients], c'est en fait déjà un nom assez clair

merci encore !
on m'avait bien dit que VB n'était pas très orthodoxe, je vois pourquoi...
 

Discussions similaires

Réponses
8
Affichages
528
Réponses
21
Affichages
2 K