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

Remplissage de Combobox, assez particulier

  • Initiateur de la discussion Initiateur de la discussion Chloulou
  • 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 !

Chloulou

XLDnaute Occasionnel
Bonjour le forum, bonjour à tous

j'ai besoin d'un coup de pouce pour corriger un bout de code qui ne fait pas ce que je souhaite..

Après avoir glaner divers infos sur le forum pour remplir, trier et supprimer les doublons d'une combobox, j'ai un problème car mes infos ne sont pas uniques dans chaque cellules, je m'explique:

une cellule possède des sauts de ligne, à chaque suat de ligne on a une info,
donc mes combobox doivent se remplir avec ces infos pour permettre d'utiliser le filtre personnalisé avec l'opérateur : Contient

Le problème, c'esqt que je dois donc chercher les sauts de ligne dans la chaine de caractère, chr(10) et ensuite insérer les valeurs des morceaux de chaines dans la collection qui alimente ma combobox...

ca marche , mais pas complètement, car si le caractère chr(10) est absent problème : il n'y a pas d'insertion d'info, aussi si on a chr(10) je n'arrive pas à insérer l'info de la dernière ligne car pas de chr(10) à la fin de la ligne

bref, un fichier joint avec des données et mon code, pas de pb les infos sont pas confidentielles
 

Pièces jointes

Re : Remplissage de Combobox, assez particulier

Bonjour à tous,

Je vais peut-etre un peu vite mais si j'ai bien compris le problème, utilise la solution suivante (à adapter à ton programme).

S = Range("C2").Value
TabSt = Split(S, Chr(10))

Tu obtiens ainsi dans le tableau TabSt chacune des valeur séparée par chr(10).

UBound(TabSt) te donne le nombre d'éléments - 1

Tu fais appel à ces valeurs avec TabSt(i)

J'espère avoir répondu à ton problème

Bon courage
 
Re : Remplissage de Combobox, assez particulier

je suis impressionné que vous conaissiez aussi bien les fonctions de traitement de chaines de caractères en VBA, je connaissias pas SPLIT : pas mal du tout, Heureux de faire sa connaissance 😛!!!

Au début j'avais meme essayer , pour voir on sait jamais :

Code:
 For each chr(10) in cel.value
next chr(10)

mais bon bien évidemment ce n'est pas possible.

Mecri pour la découverte de cette nouvelle fonction et le coup de pouce pour ce remplissage atypique

@+
 
Dernière édition:
Re : Remplissage de Combobox, assez particulier

Re le forum, le fil et tous le monde

en fait j ai encore un ptit soucis, bien que tout fonctionne : en fait la combobox a toujours des valeurs qui ne sont pas présentes dans mes colonnes... bizzare

vous auriez une idée sur le problème?

merci d'avance
 
Re : Remplissage de Combobox, assez particulier

Je suis de retour,

Essaie de t'inspirer de ce code.

J'ai trouvé ton code un peu compliqué pour remplir tes combobox, mais tu avais peut-être tes raisons??

Celui-ci suffit pour éviter les doublons et charger les éléments.

Pour info, l'opposé de "split" c'est "Joint", très pratique également.

Sub essai()
ComboBox1.Clear
Call Charger(ComboBox1, Range("A2:A5"))
End Sub

Sub Charger(ByRef Comb As ComboBox, ByRef Liste As Range)
Dim ObjCollect As New Collection
Dim Element As String

On Error Resume Next
For Each cell In Liste
If Trim(cell.Value) <> "" Then
Tabs = Split(cell.Value, Chr(10))
For x = 0 To UBound(Tabs)
Element = Tabs(x)
ObjCollect.Add Element, key:=CStr(Element)
Next x
End If
Next cell
MsgBox ObjCollect.Count
For Each itm In ObjCollect
Comb.AddItem itm
Next
End Sub
 
Re : Remplissage de Combobox, assez particulier

re bonjour Chloulou Smotty

pour ma part j'ais repris ce que j'avais commis
il est vrai un brin plus complexe mais qui fait le tri alphabetique
et je n'ais trouvé en supplement que
des differences d'orthographe (parachèvement parchèvement)
des espaces en plus
des cellules vides
j'ai modifié ma procedure pour annuler les espaces et les cellules vides
 

Pièces jointes

Re : Remplissage de Combobox, assez particulier

Re Smotty, Pierre Jean,

merci encore de suivre ce fil et de le compléter avec toutes vous idées.

En fait, avec ta procédure PierreJean j'ai toujours, quand je la copie dans ma fonction, des items qui ne sont plus dans ma colonne : comme si il y avait des cellules qui pendant un moment avaient contenus des infos que j'ai eu à modifier mais la combobox n'aurait pas été réinitialisée. ca garde en "memoire" les anciennes valeurs : par exemple quand j'ai corrigé les fautes de frappe, la combo garde les entrées avec les fautes alors qu'elles n'existent plus....

MERCI au forum d'être un lieu d'échange de connaissances et de compétences...
 
Dernière édition:
Re : Remplissage de Combobox, assez particulier

Encore moi!!

Vite fait avant de partir...

A priori il manque un clear du combo en début de procédure pour la remise à zéro avant le chargement.
 
Re : Remplissage de Combobox, assez particulier

bonjour Chloulou Smotty

sauf erreur de ma part

la macro remplircombobox1 n'etant appelée que par l'Userform_initialize la mise a 0 de la combobox n'est pas necessaire

par ailleurs j'ai beau chercher je ne vois pas de donnée en exces dans les combobox

peux-tu nous mettre un exemple en precisant la ou les données excedentaires
 
Re : Remplissage de Combobox, assez particulier

me voilà

J'ai trouvé!! (j'espère que je ne m'emballe pas trop vite)

En fait il faut bien mettre un combobox.clear dans la procédure avant le chargement du combo car elle est également appelée quand on click sur le bouton "RAZ".
 
Re : Remplissage de Combobox, assez particulier

... voilà ce qui manquait (à priori)

en fait je viens de m'apercevoir qu'elle n'est pas appelée....
Dans la logique, un click sur "RAZ" devrait faire combo.clear sur chacun d'eux et faire appel à la procédure de chargement des combos
 
Re : Remplissage de Combobox, assez particulier

dernier message, j'y vais au compte goutte.

Mettre dans la procédure du bouton "RAZ":

Call Userform_Initialize
et pour me répéter mettre avant le chargement du combo un:
combo.clear

et ça suffira

A bientôt
 
- 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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…