Listbox erreur sur les colonnes

Bonjour le forum,

D'une base de données, j'essaie d'extraire les données en comparant le contenu de textbox pour les placer dans une listbox.

Après la colonne 3 de la listbox, j'essuie un message d'erreur comme quoi la propriété de la colonne ne peut être définie.

Je ne trouve pas l'origine de cette erreur.

Dans mon exemple, appuyer sur le bouton recherche et taper un caractère dans la textbox "1eres lettres". Vous devriez être conduit directement sur la ligne en erreur.

Merci pour le coup de main.

ddetp

19listbox.xlsm (39.04 Ko)

Bonsoir,

je cale sur l'erreur...

par contre il y en a une autre : vous prenez les colonnes de 1 à 6 du tableau mais les intitulés sont en correspondance des colonnes 7 à 9...

Sinon j'ai la même erreur que vous, en mettant j-2 la valeur BTS s'inscrit bien en colonne 3 donc l'erreur ne vient pas du type de donnée.

Ensuite j'ai rajouté une ligne pour forcer la listebox1 à 6 colonnes suite au clear, mais ça ne marche pas non plus...

Désolé

@ bientôt

LouReeD

Bonsoir,

Je m'y suis aussi essayé 2 fois, et ça veut pas avancer !

Elle intervient systématiquement à j=4 (les 3 premières colonnes s'affichent).

J'ai pensé au décalage des colonnes recherchées et essayé diverses combinaisons (sans succès) mais de toute façon cela ne devrait pas provoquer d'erreur d'exécution.

On doit passer dessus sans voir...

Faut laisser décanter.

Bon week-end.

Faut croire que je fonctionne mieux au milieu de la nuit ! (je le savais déjà mais c'était pour les idées nouvelles et quelques autres petites choses, pas pour le débogage...)

En tout cas voilà la ligne fautive :

a = Range("A5:C" & [A65000].End(xlUp).Row)

dans Initialize, à remplacer :

a = Range("A5:F" & [A65000].End(xlUp).Row) 

au moins jusqu'à F à toi de voir si tu en mets plus (ta base a 9 colonnes, tu en as mis 8 dans dans ListBox, tu en as dimensionné 6...)

D'autre part, si comme je le pense ce sont les dates que tu veux mettre dans les 3 colonnes de la ListBox, il faut revoir ta ligne d'affectation :

.Column(j - 1, .ListCount - 1) = Tbl(i, j + ((j - 1) \ 3) * 3)

Mon petit ajout à l'indice du tableau fait que pour j= 1 à 3 on ira toujours chercher les colonnes 1 à 3 mais j= 4 à 6, on ira prendre les colonnes 7 à 9.

Ta procédure ListBox_Click bogue aussi : variable Ln non définie... (comme tu es en option Explicit)

Bonne continuation.

Ferrand

Bonjour,

Tu déclares : a = Range("A5:C" & [A65000].End(xlUp).Row) 'base de donnees 1

donc seulement 3 colonnes et tu veux en écrire 6, d'où le bogue.

En changeant pour : a = Range("A5:F" & [A65000].End(xlUp).Row) 'base de donnees 1

Il n'y a plus d'erreur ... sauf sur un autre point ... les lignes ne s'ajoutent pas, la première est constamment écrasée.

Gelinotte.

Bonjour gelinotte ! Tu arrives après la bataille !!!

Bonjour,

Oui, il faut que je prenne l'habitude de rafraîchir l'écran avant d'écrire

Gelinotte

bonjour à tous,

Merci pour vos réflexions quand bien même en simultanées.

Effectivement l'erreur vient d'ici.

J'ai moi aussi après plusieurs essais compris l'erreur.

Je n'utilise qu'un tableau ce qui règle le problème.

En revanche, j'ai dans ma listbox un curseur de déplacement horizontal à l'initialisation de l'userform.

J'aurai bien aimé l'éviter. Si vous avez une idée.

Le fichier modifié en fichier joint.

cordialement

ddetp

17listbox.xlsm (39.04 Ko)

bonjour

change ton userform_initialise comme cela :

Private Sub UserForm_Initialize()
Rche.Width = 490 'longueur de l'userform
Me.ListBox1.Width = 470 'longueur listbox
a = Range("A5:I" & [A65000].End(xlUp).Row) 'base de donnees 1
Me.ListBox1.List = a
End Sub

Par contre je serais curieux de savoir dans quel contexte tu utilise cela ?? car cela pourrais eventuellement aider mon CTX aussi

Fred

Bonjour Fred,

Je ne souhaite afficher que les trois premières colonnes à l'initialisation.

C'est ce qui m'avait conduit initialement à déclarer deux tableaux. Le premier sur 3 colonnes et le deuxième sur 9 colonnes d'où le bug et mon message.

Sinon pour répondre à ta question, je me suis créé un fichier pour la gestion du travail en hauteur car mon lycée est plateforme de formation.

Nous devons tenir un registre des formés d'où la encore cette page qui me permet de voir si certains élèves dans le cadre de leur formation scolaire ne sont pas formés deux fois en moins de 3ans.

Mais aussi de faire des statistiques sur les formations.

Si ton ctx est intéressé par le fichier on verra comment lui transmettre.

cordialement

ddetp /ddept / ctx dans l'âme

Re bonjour

Dans mon établissement il n'y a pas de formation travail en Hauteur .... donc cela ne intéressera peut-être pas...

Pour revenir a ta demande, j'ai (a priori) bien lu tes messages précédents.

Si tu veux afficher les 6 colonnes (nom prenom + date N + classe + annexe 3 +annexe 4 + annexe 5) et dans ce cas si tu met une fenêtre trop petite dans le userform initialise tu auras forcement une barre de défilement horizontale. si tu ne la veut pas il faut que ta fenêtre soit suffisamment grande pour tout afficher

enfin en ce qui me concerne la nouvelle demande n'est pas claire

fred

re

Ce que je veux dire c'est que le tableau tel qu'il est constitué ne permet pas de selectionner les colonnes comme tu le dis.

si je fais

a = Union(Range("A5:D" & [A65000].End(xlUp).Row), Range("g5:I" & [A65000].End(xlUp).Row))

j'ai l'erreur 380 au moment de l'écriture des données dans la listbox.

Est-ce que tu aurais une méthode à me proposer?

cordialement

Re

c'est un truc du genre que tu cherches ??

Private Sub UserForm_Initialize()
Rche.Width = 290 'longueur de l'userform
Me.ListBox1.Width = 270 'longueur listbox
a = Range("A5:C" & [A65000].End(xlUp).Row & ",F5:H" & [A65000].End(xlUp).Row) 'base de donnees 1
Me.ListBox1.List = a
End Sub

colonnes a adaptées si c'est pas les bonnes car dans ton code tu cherche la colonne I qui est vide dans ton fichier....

Edit : La solution proposée précédemment ne fonctionne pas mais en utilisant des colonnes temporaire oui :

Private Sub UserForm_Initialize()
Rche.Width = 290 'longueur de l'userform
Me.ListBox1.Width = 270 'longueur listbox
Range("A5:C" & [A65000].End(xlUp).Row & ",F5:H" & [A65000].End(xlUp).Row).Copy [AA1] 'base de donnees 1
a = Range("AA1:AF" & [AA65000].End(xlUp).Row) 'base de donnees 1
[AA:AF].Delete
Me.ListBox1.List = a
End Sub

Fred

Excellente idée!

Je m'en veux de ne pas y avoir pensé

Le fichier en PJ pour ceux que ça intéressent. J'ai ajouté une clé pour la précision de la recherche.

Merci à tous ceux qui m'ont consacré du temps.

ddetp

20listbox-v2.xlsm (50.19 Ko)

Des fois on ne pense pas à des solutions tellement simples.... j'en ai déjà fait les frais aussi dans la passé et probablement dans le futur aussi...

a+

Fred

Rechercher des sujets similaires à "listbox erreur colonnes"