Autres Filtre sur colonnes multiples

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

Michel1942

XLDnaute Nouveau
Bonjour à tous,



J’ai le problème suivant en VBA sous excel 2003.


Je voudrais filtre sur place un tableau sur deux colonnes non contigües si les cellules sont vides dans les deux colonnes simultanément.
Les colonnes ne sont pas fixes et doivent être sélectionnées avant de lancer la macro.
Le bouton de lancement existe déjà dans ma barre d’outils.
Je joint un exemple de fichier où filtrer les colonnes B et E mais pas forcément.

Je sais faire le filtre sur une colonne.

Merci d’avance pour vos propositions.
 

Pièces jointes

@Marcel32, Michel,



si ça peut te consoler 😜, Michel t'a répondu plusieurs fois :

post #6 ; post #7 ; post #10 ; post #12 ; post #14.

mais effectivement, je n'ai pas vu de retour sur le code de ton post #17 ; c'est sans doute car tu n'as pas utilisé de inputbox ; or selon le post #18 de Michel, il y tient beaucoup vu qu'il y a cette ligne de code :
Set ref = Application.InputBox(prompt:="Sélectionner les colonnes", Type:=8)

il est d'accord pour essayer ma solution avec coche "x", mais apparemment, il n'est pas intéressé par ta version avec filtre, bien que le titre de ce sujet soit : « Filtre sur colonnes multiples » ; ça m'fait penser à dire pour Michel cette remarque importante : pour ma version avec coche "x" et pour ma version avec inputbox :

y'a pas besoin qu'tu sélectionnes les 2 colonnes à filtrer ➯ c'est plus sûr ; en effet, imagine qu'après avoir sélectionné les 2 colonnes tu appuies par mégarde sur la touche Suppression : tu effaces sans l'vouloir le contenu des 2 colonnes choisies ; bien sûr, tu peux faire Ctrl z pour annuler cette suppression, mais il faut que tu le fasses sans tarder, pour éviter qu'une autre opération rende irréversible la récupération des données supprimées (par exemple le lancement d'une macro ➯ commande "Annuler" en grisé et donc indisponible) ; il faut aussi, évidemment, que l'utilisateur sache qu'on peut faire Ctrl z ou Undo (commande Annuler, flèche arrondie vers la gauche) pour annuler une opération (si fait suffisamment tôt).


autre remarque importante pour Michel : merci de bien vouloir faire un retour sur le code VBA du post #17 de mon copain Marcel et sur celui de son post #22 , sinon Marcel sera inconsolable, et je ne vais pas savoir comment y remédier ! 😭

soan​
Désolé de ne pas répondre à tous les post mais j'ai attrapé le Covid avec la totale et je suis en mode veille. Enore merci à tous pour vos réponses,
 
Et donc toujours pas de retour sur ma macro de #17, qu'on retrouve dans la pièce jointe de #24 pour te faciliter son test ?!?

Ni sur #22 qui répond pourtant exactement à ta question de #12 en te montrant une façon de récupérer les numéros des colonnes sélectionnées ?
 
Dernière édition:
Bonsoir Michel, Marcel,

je te retourne le fichier de ton post #35 modifié ; utilisation identique ➯ fais comme d'habitude : fais Ctrl f puis ensuite, sélectionne avec la souris tes 2 colonnes. 🙂 bien sûr, tu pourras aussi toujours faire Ctrl d pour démasquer tes lignes masquées. 😉



code VBA de Module3 (28 lignes) :

VB:
Option Explicit

Sub Filtre_2_colonnes()

  Dim ref As Range, chn$, ColAct1%, ColAct2%, DerLigne&, i& 'Déclaration des variables
 
  'Sélectionner les 2 colonnes avec la souris
  Set ref = Application.InputBox(prompt:="Choisir les 2 colonnes avec la souris", Type:=8)
  chn = ref.Address(0, 0) 'avec (0,0) : adresse plus simple car sans les $ ; ex : B:B,E:E
 
  If Len(chn) = 7 Then 'Vérifier si le nombre de caractères de la saisie est correct
    
    'Extraire les numéros des 2 colonnes
    ColAct1 = Columns(Split(chn, ",")(0)).Column
    ColAct2 = Columns(Split(chn, ",")(1)).Column
    
    DerLigne = Cells(Rows.Count, 1).End(xlUp).Row: Application.ScreenUpdating = 0
    
    'Garder les deux lignes d'entête
    For i = 3 To DerLigne
      'Si cellules vides dans les 2 colonnes choisies, masquer la ligne
      If IsEmpty(Cells(i, ColAct1)) And IsEmpty(Cells(i, ColAct2)) Then Rows(i).Hidden = True
    Next i
  End If
  Application.Goto [A1], True 'Retour au début

End Sub

code VBA de Module1 (8 lignes) :

VB:
Option Explicit

Sub Démasquer()
  Dim DerLigne&
  DerLigne = Cells(Rows.Count, 1).End(xlUp).Row
  Rows("1:" & DerLigne).Hidden = 0: [A1].Select
End Sub

soan
 

Pièces jointes

Plus de 72 heures après l'envoie de sa macro en première ligne sur le front du forum, Marcel32 est toujours sans nouvelles d'elle !
Fonctionne-t-elle ?
Est-elle HS ?

Peut-être des nouvelles à venir dans les prochaines heures ???
Tout espoir n'est pas encore perdu.

En attendant, prions le dieu du café expresso.
Cafe.jpg
 
- 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

Réponses
0
Affichages
666
Retour