XL 2010 Liste filtrée pour combobox à 1 ou x colonne(s) (Titre màj)

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

cathodique

XLDnaute Barbatruc
Bonjour,

Je fais appel aux férus de VBA (pas comme moi, Vbiste autodidacte du dimanche).

Au fil de mes recherches j'ai trouvé dans les ressources un fichier de @Dudu2 (ICI) très pratique.

Je voudrai appliquer son code à plusieurs ComboBox. Mais je ne sais pas utilisé les modules de classe.

J'ai pourtant suivi des tutos en vidéo (l'anglais n'étant pas mon fort) sans comprendre grand chose.

Dernièrement, @patricktoulon a eu la gentillesse de corriger un code trouver sur le net et a dédié une vidéo pour expliquer ce que sont les modules de Classe. J'ai compris dans l'ensemble le principe. Mais ça coince toujours lors de l'écriture du code. Petite cervelle restera petite cervelle😢😢

Je ne joins pas de fichier, vous le trouverez en suivant le lien.

Je vous en remercie par avance.

Bon dimanche.

nb: j'ai envoyé à @Dudu2 pour l'informer
 
Dernière édition:
Solution
re
oui j'ai fais cette erreur jean-marie a corrigé
je vous lais éviter de repasser tout les items en revu en cas de grande liste
perso je corrigerais comme ça
VB:
For i = .ListCount - 1 To Application.Max(.ListCount - 3, 0) Step -1
tout ton code et tes controls fonctionnent dans mon userform
Je ne sais pas faire la différence entre les éléments que tu cites et je n'ai pas envie de fouiller.
Je te crois sur parole. Mais je soupçonne chaque instance du "module UserForm" d'emporter plus d'éléments que nécessaire à la simple gestion de quelques Controls.

Je suis sur un problème de positionnement de Shape que je n'arrive pas à résoudre. Tu auras du grain à moudre sous peu 😛
 
Bonjour.
Ça parle de Module de classe et de ComboBox dans cette discussion, alors je rappelle qu'il y a ça disponible en téléchargement :
Je joins aussi un classeur équipé des modules de service nécessaires et qui n'a donc pas besoin du complément.
 

Pièces jointes

Je suis sur un problème de positionnement de Shape que je n'arrive pas à résoudre. Tu auras du grain à moudre sous peu
j'ai trouvé!!!!!!!!!!!!
c'est PointsToScreenPixels !!!!!!!!
coucou1.gif
diabolo.gif


LOL
 
Problème avec le code de @Dudu2, il plante lorsque le tableau alimentant la combobox contient une seule ligne ou vide (array=empty).
Lorsqu'il n'y a qu'un seul item pour la liste de la ComboBox ça ne plante pas.
Lorsqu'il n'y a aucun item pour la liste de la ComboBox ça n'a pas de sens d'envoyer une ComboBox et dans le fichier fourni ça plante avant l'appel aux fonctions sur le .DataBodyRange qui est Nothing et ne peut donc faire l'objet d'un traitement.

Edit: alors oui, je pourrais vérifier que la liste fournie n'est pas vide, mais bon...
 
C'est quoi ce charabia ???
Pour chaque New UserForm1 vous mobilisez de nouveaux emplacements mémoire réservés au fonctionnement de tous ses contrôles, même si vous ne les utilisez pas. Le module lui reste toujours unique.
@Dranreb l'art et la manière de dire les mêmes choses autrement
tout ce que tu charge c'est tout le code du module (oui je te l'accorde il y a forcement le référencement au object de la même manière que dans un module classe d'ailleurs, si tant est qu'il soit pris en compte dans l'instance(exemplaire) de la classe )

forcement les events encodé sont dans le module mais ce n'est que du code
 
Lorsqu'il n'y a qu'un seul item pour la liste de la ComboBox ça ne plante pas.
Lorsqu'il n'y a aucun item pour la liste de la ComboBox ça n'a pas de sens d'envoyer une ComboBox et dans le fichier fourni ça plante avant l'appel aux fonctions sur le .DataBodyRange qui est Nothing et ne peut donc faire l'objet d'un traitement.

Edit: alors oui, je pourrais vérifier que la liste fournie n'est pas vide, mais bon...
Messieurs, je vous remercie beaucoup de m'avoir répondu. Je me sens un peu 'out' (niveau).

@Dudu2 : Désolé, j'ai oublié de préciser qu'un tableau 1D (liste) est vide initialement. Je rajoute des données via cette combobox au fur et à mesure. Et, aux prochains tours je les retrouve dans la combobox ce qui m'éviterai de ressaisir la même chose avec peut-être des erreurs d'orthographe et éviter les doublons.

Ce que tu expliques est exact (Tableau3 est vide)
1712513150338.png

1712513213735.png


Merci beaucoup à vous tous.

Bonne soirée.
 
tout ce que tu charge c'est tout le code du module
Non, les exemplaires créés par New, ce sont des structures pour toutes les données définies par le module, y compris les contrôles dans le cas d'un UserForm, qu'on les utilise ensuite ou non. Le code n'est pas chargé par un New. Il est toujours là depuis l'initialisation du projet VBA, prêt à exécuter à tout moment une méthode portant sur tout exemplaire créé.
Sauf les objets créés par le maudit CreateObject. Ceux la entraine un chargement de complément de code (DLL notamment)
 
Dernière édition:
re
@cathodique voici un exemple de la mise en oeuvre de ma fonction filtre
3 combobox
  1. les 3 travaillent avec le même tableau(pour l'exemple il peut en être autrement)
  2. la, combo 1 filtre sur toutes les colonnes
  3. la combo 2 filtre sur la colonne 1
  4. la combo 3 filtre sur la colonne 2
et cela avec la même fonction
tape "patrick" dans les 3

et pour l'exemple je te l'ai fait dans le userform2 a l'identique mais avec les combos classées dans le userform

@Dranreb
Non, les exemplaires créés par New, ce sont des structures pour toutes les données définies par le module, qu'on les utilise ensuite ou non. Le code n'est pas chargé par un New. Il est toujours là depuis l'initialisation du projet VBA
comme je l'ai dit a @cp4 il faut faire la différence entre
1° dim cls as classe1'déclare le type
2° dim cls as new classe1'declare le type et crée l'instance(utilisable sans le "set" immédiatement dans une sub ou autre)
3° dim cls() as new classe1'cré un tableau non dimensionnée d'élément de type classe1

 

Pièces jointes

- 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
Retour