Combobox et plages discontigues

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
 
R

Robert

Guest
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
 
J

jean-paul

Guest
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
 
R

Robert

Guest
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
 
J

jean-paul

Guest
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
 

Discussions similaires

Statistiques des forums

Discussions
312 749
Messages
2 091 645
Membres
105 010
dernier inscrit
sam333