[VBA]Sortir une ligne d'un filtre [Résolu]

Messages postés
265
Date d'inscription
dimanche 14 avril 2013
Statut
Membre
Dernière intervention
23 mai 2014
- - Dernière réponse : Hermios
Messages postés
265
Date d'inscription
dimanche 14 avril 2013
Statut
Membre
Dernière intervention
23 mai 2014
- 30 nov. 2011 à 13:38
Salut à tous,
Mon programme consiste à rechercher une ligne dans un fichier excel.
Cependant, cette ligne peut être cachée, si un filtre est activé.
Comment puis faire, pour éventuellement sortir cette ligne (et uniquement celle là, je veux pas désactiver complètement mon filtre) de mon filtre?
J'ai essayé avec range("...").show, et range(...).hidden=True (Oui, ca explique pourquoi j'ai mis ce poste dans la section débutant!!!!), bien sur ca ne fonctionne pas.
Merci beaucoup


@+. Hermios
Afficher la suite 

10 réponses

Meilleure réponse
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
211
3
Merci
Bon ...
Il y a alors trois solutions :
-1) la méthode "bourrin" , avec une boucle sur toutes les lignes de la colonne (lente)
-2) une méthode moins "bourrin", qui consiste à travailler sur un tableau dynamique issu de la plage (la colonne "utile")==>> un peu moins lente, mais quand-même "bourrin"
-3) une méthode beaucoup plus fine, qui demande par contre l'utilisation de quelques neurones (mais pas trop). Elle est assez amusante. Et comme elle a l'avantage d'être la plus rapide, c'est celle que j'ai choisie après un bon repas au foie gras frais poilé (on est au pays basque, ici)
je te la livre :

  Dim la_feuille As Worksheet, a_chercher As String, ma_colonne As String
  Dim derligne As Long, trouve As Range, visibles As Range, la_montrer As Boolean
  ma_colonne = "B" '====>> à remplacer par TA collonne
  a_chercher "toto" '>> à remplacer par ta chaîne à rechercher
  la_montrer True '>> si true : sera montrée et sélectionnée. Si false : non, bien que trouvée
  Set la_feuille Worksheets("Feuil1") '>> à remplacer ^par TA feuille où rechercher
  With la_feuille
    derligne = .Range(ma_colonne & Rows.Count).End(xlUp).Row
    Set visibles = .Range(ma_colonne & "1 :" & ma_colonne & derligne).SpecialCells(xlCellTypeVisible)
    .Range(ma_colonne & "1 :" & ma_colonne & derligne).Rows.Hidden = False
    Set trouve = .Range(ma_colonne & "1 :" & ma_colonne & derligne).Find(a_chercher, LookIn:=xlValues)
    .Range(ma_colonne & "1 :" & ma_colonne & derligne).Rows.Hidden = True
    visibles.Rows.Hidden = False
    If Not trouve Is Nothing Then
      MsgBox "j'ai trouvé " & a_chercher & " à la ligne " & trouve.Row
      If la_montrer Then
        trouve.Rows(1).Hidden = False: trouve.Select
      End If
    Else
      MsgBox "pas d'occurrence trouvée"
    End If
  End With


Prends-en soi, hein.
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 127 internautes nous ont dit merci ce mois-ci

Commenter la réponse de ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
211
0
Merci
Bonjour,
Mon programme consiste à rechercher une ligne dans un fichier excel

"mon programme" ===>> quel programme exactement (écrit sous quoi) ?
car on ne sait plus trop si :
a) - tu pilotes Excel à partir de VB6 (ce qui expliquerait un peu le choix de la présente section)
ou
b) - si tu pilotes Excel à partir de VBS (ce qui n'est pas exclu du fait de tes autres discussions, mais tu te serais trompé de section)
ou
c) - si tu développes finalement directement sous VBA (et t'es trompé de section)

en précisant que dans les cas a) et b), nous aurions besoin de savoir comment tu as instancié chaque chose.
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Commenter la réponse de ucfoutu
Messages postés
265
Date d'inscription
dimanche 14 avril 2013
Statut
Membre
Dernière intervention
23 mai 2014
1
0
Merci
Salut ucfoutu
Alors, je développe sous VB6.5, je pilote excel à partir de macro. Donc je réponds : C'est le "a)"!!!
Oui, mes précédents posts sont sur d'autres sujets, mais là, j'innove dans un "nouveau" langage.

Donc, comment j'ai fait (Dsl, ca va pas faire très pro, mais étant 100% autodidacte sur VB6, je m'exprime comme je peux!) :

Dans ma feuille excel, qui comporte déjà une liste avec des filtres (Dans l'onglet "Données", Section "Filtres"), j'ai créé un bouton, puis une macro, puis associé ce bouton à ladite macro
Puis dans l'éditeur VB, j'ai créé un nouveau userform, appelé par ce bouton.
Ce userform doit chercher des valeurs dans la liste décrite, et les sélectionner dans ma feuille excel. Si elles sont au départ filtrées, il doit d'abord les afficher (Pour l'instant, il sélectionne la première ligne, si les données sont filtrées).
Heu, voilà.

Merci de ton aide :)

@+. Hermios
Commenter la réponse de Hermios
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
211
0
Merci
VB6.5 n'est pas VB6, mais VBA
Alors, je développe sous VB6.5, je pilote excel à partir de macro. Donc je réponds : C'est le "a)"!!!

Et tu pilotes Excel depuis quel logiciel, dans ce cas ?
en te rappelant alors que :
en précisant que dans les cas a) et b), nous aurions besoin de savoir comment tu as instancié chaque chose.

Es-tu certain de "piloter" et de ne pas tout simplement développer sous VB/Excel (ce qui est très différent, avec des réponses également différentes !) ?
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Commenter la réponse de ucfoutu
Messages postés
265
Date d'inscription
dimanche 14 avril 2013
Statut
Membre
Dernière intervention
23 mai 2014
1
0
Merci
Re,
Bon, visiblement, j'ai vraiment des progrès à faire, vraiment désolé!

"Es-tu certain de "piloter" et de ne pas tout simplement développer sous VB/Excel"


Oui, bien sur, je développe sous VB/Excel (ca m'apprendra à vouloir reprendre des termes sans les maitriser parfaitement!)
Pour faire simple (à mon niveau, en somme) :
J'ouvre ma page excel, j'appuie sur F11, et je développe (Je suis censé, au moins!!)
Bon, j'espère qu'on va y arriver!

Merci beaucoup :D


@+. Hermios
Commenter la réponse de Hermios
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
211
0
Merci
Bon (on y voit maintenant plus clair).
Prends s'il te plait la prochaine fois le plus grand soin à choisir la section dans laquelle tu ouvres une discussion. Celle-ci aurait dû être ouverte dans la section :
[u]Visual Basic - Langages dérivés - VBA
/u
CX'est important.
et on aurait ainsi évité tous ces messages liminaires.

Bon. On peut maintenant passer à ton problème.
Il va être nécessaire que tu nous éclaires avec précision sur certain points :
1) quand tu dis :
Mon programme consiste à rechercher une ligne dans un fichier excel.
Cependant, cette ligne peut être cachée, si un filtre est activé

- Sur quel critère et sur quelle colonne fais-tu ta recherche ?
2) quand tu dis :
Comment puis faire, pour éventuellement sortir cette ligne (et uniquement celle là

est-elle la seule (cachée ou non) répondant à ce critère ?
3) quand tu dis :
Puis dans l'éditeur VB, j'ai créé un nouveau userform, appelé par ce bouton.
Ce userform doit chercher des valeurs dans la liste décrite, et les sélectionner dans ma feuille excel

Quelle est ici le rôle de ce UserForm ? Car on ne voit pas pourquoi ne pas mettre ton code directement dans la macro associée à ton bouton !

Voilà à ce stade . Réponds s'il te plait avec précision à ces trois questions (en évitant d'encombrer avec d'autres considérations que ces trois points techniques).
__________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Commenter la réponse de ucfoutu
Messages postés
265
Date d'inscription
dimanche 14 avril 2013
Statut
Membre
Dernière intervention
23 mai 2014
1
0
Merci
Bon matin,
Dsl pour la section, j'y penserai la prochaine fois.

Pour les questions :
Mon fichier excel contient une liste d'éléments, chaque élément possède 2 identifiants uniques. J'effectue ma recherche sur l'un des deux (Mon userform contient en fait deux boutons radios, pour sélectionner sur quel élément je fais ma recherche).
Cela devrait répondre aux deux premières questions

Pour la troisième :
Quelle est ici le rôle de ce UserForm ? Car on ne voit pas pourquoi ne pas mettre ton code directement dans la macro associée à ton bouton !


Il est possible que je n'utilise pas le modèle le plus approprié: Un collègue m'a montré comment démarrer (Lier le bouton à un code vbscript), à partir de là, j'ai trouvé comment créer un userform etc.
Cela dit, comme dit plus haut, j'ai besoin d'une popup pour chercher sur quelle colonne je fais ma recherche, et le nom de l'élément à rechercher.

Je souhaite garder la popup, pour le reste, si tu penses qu'une autre structure est plus efficace, je suis preneur.
Cela dit, il s'agit d'un programme perso, sur des petites données. Donc pas besoin de trop se prendre la tête (Par contre, pour ma culture personnelle, ca m'intéresse!)

Merci beaucoup de ton aide

@+. Hermios
Commenter la réponse de Hermios
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
211
0
Merci
Bon.
On va alors oublier tous tes accessoires et nous cantonner au problème technique seul.
Si je comprends bien, après les "choix", tu sais ce qui est à chercher et dans quelle colonne le chercher, (l'article cherché pouvant être ou non sur une ligne cachée). C'est là le problème ? ou autre (et lequel, dans ce cas) ?
Voilà les seuls réponses qui m'intéressent (le reste n'étant là que le "décor").

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Commenter la réponse de ucfoutu
Messages postés
265
Date d'inscription
dimanche 14 avril 2013
Statut
Membre
Dernière intervention
23 mai 2014
1
0
Merci
Re,
Oui, c'est exactement ca.

@+. Hermios
Commenter la réponse de Hermios
Messages postés
265
Date d'inscription
dimanche 14 avril 2013
Statut
Membre
Dernière intervention
23 mai 2014
1
0
Merci
Ca marche farpaitement, merci beaucoup :)
Bonne journée


@+. Hermios
Commenter la réponse de Hermios