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

Combobox et plages discontigues

  • Initiateur de la discussion Initiateur de la discussion jean-paul
  • Date de début Date de début

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 !

J

jean-paul

Guest
Bonjour

J'ai une user form avec une combobox. L'alimentation de cette dernière doit se faire avec des plages non contigues et sur 10 colonnes

Code rentré et qui ne fonctionne pas

dim plage as range
sheets("t_base").select
range("d_base").select
x=2
while range("a" & x)<>""
if range("a" & x)=val (c_seance) then
set plage =intersect(range("a" & x &":b" & x ),range("d" & x & ":k" & x)
for each cl in range
l_entreprise.additem cl.value
next
x=x+1
end if

d'avance merci
 
Bonsoir Jean-Paul, bonsoir le forum,

Je vois plusieurs anomalies dans ton code :

1/ quelle que soit la valeur de x, l'intersection de ax:bx et dx:kx sera toujours vide... donc plage is Nothing, donc Combobox vide...
2/ il me semble qu'il faille utiliser Application.Intersect et non pas Intersect tout seul (mais il se peut que je me plante sur ce coup là).
3/ ensuite tu écris "for each cl in range" et il me semble que for each cl in plage[/] serait plus approprié...

Normalement quand ton code est mal écris il provoque un bug et la boite de dialogue te propose le Débogage qui te surligne de jaune la ligne erronée.

À plus,

Robert
 
Bonjour et merci

En effet avec application.intersect, Plage is nothing.
Je ne comprends pas pourquoi ?
Pourtant il me semble que application.intersect(range("a" & x & ":b" & x),range("d" & x & ":k" & x)) est correct en écriture.
Car x est initialisée avant le while à 2

Que veux dire le [/] que vous metter après for each cl in plage

Ne serait-il pas possible d'avoir une plage non continue quand on veut alimenter une combobox hormis peut-être la possibilité d'alimenter la combobox colonne par colonne et non globalement.

D'avance merci

Jean-Paul
 
Salut Jean-Paul, salut le forum,

Désolé pour le [/], c'est que je me suis planté en voulant enlever le gras du texte. N'en tiens pas compte. Sinon Intersect veut dire Intersection c'est à dire les cellule en commun. Tu n'auras jamais de cellules en commun entre les plages ax:bx et dx:kx. Je pense que ce que tu veux c'est la Réunion de ces plages. Si c'est cela alors:
set plage = Range("a" & x & ":b" & x & ",d" & x & ":k" & x) devrait convenir.

À plus,

Robert
 
Salut à Robert et aux autres

Apparament il n'est pas possible d'alimenter une combobox ou une listebox avec row source dans le cas d'éléments de cellules non contigues.

Je suis passé par nom.additem et alimentation colonne par colonne avec nom.list (nom.listindex, 0 à9 si 10 colonnes).

Lors de la fermeture d'un classeur sans userform la sauvegarde est rapide. Dès l'utilisation de 1 ou plusieurs userform la sauvegarde est plus longue.
Existe-il un moyen d'accélèrer la fermeture ?

D'avance merci
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
3
Affichages
841
  • Question Question
Microsoft 365 Probléme VBA
Réponses
8
Affichages
455
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…