Filtre textuel sans enregistreur macro

Bonjour à tous,

cela fait plusieurs jours que je galère sur une macro qui est basé essentiellement sur de la mise en forme, du tri et du filtrage de données.

Cela peut vous paraître basique mais me concernant je suis en phase d'apprentissage VBA pour me faliciter la vie au boulot.

Quotidiennement j'ai un fichier type que je reçois et que je dois traiter.

Ma difficulté repose essentiellement sur le filtrage.

Je souhaite via un bouton (ça j'arrive à le faire) lancer une macro qui automatise suivant la règle ci-dessous:

Colonne A (3 champs possibles) = Filtre textuel sur 1 critère (Contient AAA)

Colonne C (5 champs possibles) = Filtre textuel Sur 4 critères (Contient BBB ou CCC ou DDD ou EEE)

Colonne F (N champs possibles) = Filtre textuel sur 6 à 7 critères (Contient FFF ou EEEE ou NNN ....)

Dans l’immédiat j'aimerais déjà aboutir mes filtres textuels VBA et ceux sans l'enregistreur.

J'espère avoir été assez clair

Merci par avance pour votre aide !

Salut Wawanne,

Décidément, je passe mon temps aujourd'hui à vous apprendre le b.a.-ba du bon forumeur...

Donc, c'est clair dans le concept mais insoluble sans un fichier respectant la structure de ton fichier "réel" et des explications plus détaillées.

Un bon réflexe à acquérir à chaque demande :

A+

Salut curulis57,

Je pensais avoir été clair

Je vais essayer d'être le plus explicite possible en simplifiant mon projet

J'ai un tableau contenant 5 colonnes et xlignes (En enlevant l'entête x varie de 0 à 20000)

En pièce jointe j'ai transmis un fichier représentatif

Colonne A= Villes

Colonne B= Appareil

Colonne C= Source (origine du signalement de la défaillance de l'appareil)

Colonne D= Description de la défaillance

Colonne E= Commentaire (éventuels)

Le projet repose sur un UserForm_Projet

1) Choix de la ville (liste déroulante UserForm_Projet). 3 villes dans mon cas

- Choix de 1 ou 2 ou toutes les villes

2) Choix de l'appareil (liste déroulante UserForm_Projet)

- Choix de 1 ou 2 ou 3 ou etc... ou touts les appareils

3) Choix de la source (Liste déroulante UserForm_Projet). 5 sources dans mon cas

- Choix de 1 ou 2 ou 3 ou 4 ou toutes les sources

4) Macro "DEMARRER" (bouton dans UserForm_Projet)

Cette macro devra balayer la colonne D en recherchant toutes les cellules comportant des 'morceaux' de mots (par exemple "decl", "Conda")

J'ai une liste de 8 'morceaux' de mots que je souhaite utiliser pour le filtre.

Si la cellule contient un des 8 'morceaux' de mots afficher la ligne complète

Sinon supprimer la ligne

J'espère que cela vous paraitra plus claire

Merci pour votre aide,

@+++

12base-projet.xlsm (11.35 Ko)

Salut Wawanne,

encore une fois, tes explications ne sont pas complètes, histoire de lever tous les doutes!

Tu dis :

J'ai une liste de 8 'morceaux' de mots que je souhaite utiliser pour le filtre.

Si la cellule contient un des 8 'morceaux' de mots afficher la ligne complète

Sinon supprimer la ligne

  • où est cette liste ?
  • si la ligne est supprimée, le reste est affiché, non ?
  • ou alors, il faut afficher ailleurs (où?) les lignes sélectionnées en fonction des critères de la Userform ?

Tu donnerais ces instructions à quelqu'un de ton boulot avec ces deux mots de ta liste et exigence de résultat, toi ?

La Userform, c'est pour nous aussi ?

A+

Bonjour,

1- Liste des 'morceaux' de mots: "Conda", "isol", "Niv", "intem", "surint", "decl", "décl", "Decl"

2- Si la ligne est supprimé elle ne doit pas apparaître.

3- Le résultat doit apparaître sur une seule feuille

Merci

Bonsoir,

N'ayant pas de retour

Est ce que quelqu'un pourrait m'aider ?

Merci d'avance

Salut Wawanne,

le temps de terminer un truc, si personne n'est venu à ton secours, je regarderai...

Chacun son tour comme à confesse...

A+

Salut Wawanne,

donc, si j'ai bien compris l'affaire, tu veux pouvoir sélectionner les lignes de ta BDD répondant aux divers critères de ville, matériel et source ET comprenant un des 8 mots ou extraits de mots !?

Un double-clic en [A1] ouvre l'Userform qui t'invite à sélectionner tes (multi) critères par liste, les 8 mots étant, je suppose, tous sélectionnés d'office !?

Les listes sont en [W-X-Y-Z] que tu peux compléter, corriger à ta convenance. A chaque changement, elles seront triées.

Résultats en 'Extract'

For x = 2 To UBound(tData, 1)
    iIdx = 0
    For y = 0 To 3
        For Z = 0 To UBound(tCrit, 2)
            If tCrit(y, Z) <> "" And InStr(tData(x, y + 1), tCrit(y, Z)) > 0 Then
                iIdx = iIdx + 1
                Exit For
            End If
        Next
        If iIdx = 4 Then Exit For
    Next
    If iIdx < 4 Then tData(x, 1) = ""
Next

A+

12base-projet.xlsm (32.11 Ko)

Salut Curulis57,

Merci pour ton retour, je teste demain matin et je te fais signe

Salut Curulis57

C'est nickel !

J'ai réussi à un peu près comprendre ta macro

Je me suis rendu compte du coup que tu avais raison et que je n'ai pas bien définit ma requête.

En effet, j'ai plusieurs précisions à t'apporter:

1- Lorsque je sélectionne une ville, je voudrais afficher seulement les appareils associés à cette ville. En effet, je connais quel appareil est affecté à tel ou tel ville. En gros il faut que la liste des appareils soit dépendantes de la ville. J'aimerais bien que la liste des appareils soit associé aux villes dans le code VBA. Ce qui permettrai de modifier le code moi même en y insérant les numéros des appareils.

2- Ensuite, les critères textuels ne doivent s'appliquer que sur 2 sources que j'ai le choix de modifier en dur dans le code VBA. En gros j'aimerai avoir la main sur le code et y intégrer moi même les 2 sources sur lesquelles le filtre textuel s'applique. Pour les autres sources il faut tout afficher:

Exemple :

Sans filtre textuel :

Ville --> Appareil (correspondant à la ville)--> Source (non concerné par le filtre textuel) --> Afficher toute les lignes correspondantes

Avec filtre textuel:

Ville --> Appareil (correspondant à la ville) --> Source (concerné par le filtre textuel) --> Afficher toutes les lignes correspondantes

3- Dans la deuxième liste "Appareils" j'aimerai ajouté une ligne "Tous appareils" qui me donnerait plus de flexibilité. En effet j'aurai le choix de choisir un, plusieurs ou tous les appareils. (Avec un grand nombre d'appareils cela devient embêtant de tous cocher)

Merci ++

Salut Wawanne,

j'imagine quand même que les appareils sont susceptibles d'être prêtés à d'autres villes selon les circonstances, même si elles ne sont guère proches l'une de l'autre ?

Je vais réfléchir à l'établissement de listes qui permettront ces relations avec l'avantage de pouvoir les modifier aisément.

"En dur", comme tu dis, c'est plus compliqué quand, malgré tout, un changement d'habitude survient!

Je regarde ce soir... quand je peux! J'ai une liste de demandes longue comme un jour sans pain!

A+

Merci pour ton retour,

A priori les appareils ne sont pas changer de villes.

Bon courage !

Salut Wawanne,

A priori

C'est bien ce que je disais...

A+

Salut

D'après mes différentes recherches il me semble que la fonction "like" semblerait adapté à ce que recherche

@++

Salut Wawanne,

déjà sur la brèche ?

LIKE ou INSTR peuvent convenir, oui.

Je travaille à ton fichier pour l'instant mais la journée sera agitée : début des grandes manoeuvres de rénovation dans notre nouvelle future maison.

Faudra un peu patienter!

Bonne journée!

A+

Pas de soucis

Salut Wawanne,

désolé pour le temps qui passe...

Voilà ton fichier qui devrait te donner ce que tu en attends, sauf erreur d'interprétation de tes dernières explications.

Les critères de recherche

- en 'BDD', autour des colonnes [AD:AE], tu trouveras les critères de base de tes recherches :

* listes principales en colonnes [AD] Appareils et [AE] Mots recherchés ;

* listes secondaires sous les Villes et Sources en ligne 1.

  • NE JAMAIS SUPPRIMER DE COLONNE SECONDAIRE : laisse faire VBA !
  • pour compléter les listes avec suppression des doublons :
Villes

* la bonne cellule est sélectionnée d'office pour l'encodage si clic sur une cellule vide en ligne 1 ;

* inscrire un nouveau nom à gauche de la liste en ligne 1 -> tri ;

* pour éliminer une ville en ligne 1, effacer la cellule + ENTER -> la ville ET ses appareils s'élimine -> la liste se regroupe ;

Sources

* idem sauf qu'il faut inscrire une nouvelle source à ... ??? (interro demain! )

Appareils et mots

* une nouvelle donnée s'inscrit UNIQUEMENT sous la colonne PRINCIPALE ad hoc en [AD] (appareils) et [AE] (sources) -> tri

Même pas besoin de "viser" la première ligne libre tant que la colonne est correcte ;

* suppression d'une donnée périmée dans ces deux mêmes colonnes :

Deux options

1. La donnée est éliminée de tes critères

* tu effaces la donnée en liste PRINCIPALE -> la liste principale se regroupe et le mot éliminé est effacé également des colonnes secondaires Villes ou Sources;

2. la donnée est toujours d'actualité

* tu peux l'effacer simplement d'une liste SECONDAIRE -> la liste secondaire se regroupe.

Affectation des appareils -> Villes et Mots -> Sources

* tu sélectionnes la donnée à copier dans la liste principale ;

* en GARDANT la touche CTRL enfoncée, tu sélectionnes la colonne-cible secondaire sous la ville ou la source souhaitée -> copie et tri ;

Userform 'usfCritères'

Pas besoin de beaucoup d'explications, je pense.

La checkbox au-dessus de chaque listbox sert à (dé)sélectionner les items de la liste concernée.

Un item de chaque liste doit obligatoirement être sélectionné pour que le calcul s'exécute.

Voilà, j'espère que l'attente aura valu le coup et que tes tests donneront de bons résultats!

A te lire;

A+

22base-projet.xlsm (60.73 Ko)

Salut curulis57

D'abord Merci parceque tu as parfaitement répondu à ce que j'avais en tête

Ensuite désolé pour ma réponse tardive car j'étais en déplacement puis en vacances

Enfin j'ai pu apporter des modifications à au projet de base mais cela fera parti d'un échange un peu plus tard

Rechercher des sujets similaires à "filtre textuel enregistreur macro"