Récupérer un texte dans une colonne filtrée

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

A

allaryxavier

Guest
Bonjour,

Voila, je ne sais pas si c'est possible mais j'aimerais savoir comment récupérer un texte dans une colonne filtrée.

EX:

Disons une colonne B avec tout un tas d'informations (GROUPE SCOLAIRE, COMPLEXE SPORTIF, CULTUREL, ADMINISTRATION etc ...), j'ai appliqué un filtre auto sur cette colonne.

Quand je filtre "GROUPE SCOLAIRE" j'aimerais que ma Cellule A1 prenne la valeur/texte "GROUPE SCOLAIRE".

merci pour votre aide
 
Re : Récupérer un texte dans une colonne filtrée

Salut AllaryXavier 😀😉

Tu peux utiliser une fonction personnalisée à mettre dans un module
Code:
Function WhatCritere()
  Dim NbCrit, Crit(), Ind As Integer, I As Integer
  ' Obliger Excel à recalculer la fonction
  Application.Volatile
  ' Initialiser les variables
  WhatCritere = "": Ind = 0
  ' Avec la feuille
  With Worksheets("Test")
    ' Si le filtre automatique est activé
    If .AutoFilterMode Then
      ' Avec le filtre automatique
      With .AutoFilter
        ' Pour chaque colonne de filtre
        For NbCrit = 1 To .Filters.Count
          ' Si le critère de filtre est actif
          If .Filters(NbCrit).On Then
            ' On incrémente l'indice du tableau
            Ind = Ind + 1
            ' On redimensionne le tableau
            ReDim Preserve Crit(Ind)
            ' On mémorise le 1er critère dan le tableau
            Crit(Ind) = .Filters(NbCrit).Criteria1
          End If
        Next NbCrit
      End With
    End If
  End With
  ' On affiche la valeur de retour
  For I = 1 To Ind
    If I > 1 Then
      WhatCritere = WhatCritere & " + " & Replace(Crit(I), "=", "")
    Else
      WhatCritere = Replace(Crit(I), "=", "")
    End If
  Next I
End Function
Ensuite en A1 tu tapes =WhatCritere()

Et voilà ça te donne quel critère est actif, je ne vois pas trop l'intérêt mais bon pour le fun 😀

A+
 

Pièces jointes

Re : Récupérer un texte dans une colonne filtrée

Bonjour allaryxavier,

1) Il faut qu'un évènement se crée lors de l'activation du filtre : cet évènement va être le recalcul d'une formule.

Entrer donc en cellule C1 la formule :

=SOUS.TOTAL(3;B2:B10000)

2) Entrer dans le code de la feuille (clic droit sur l'onglet et Visualiser le code) la macro :

Code:
Private Sub Worksheet_Calculate()
[A1] = [B2:B10000].SpecialCells(xlVisible).Cells(1, 1)
End Sub

A1 prend la valeur de la 1ère cellule filtrée.

Edit : salut Bruno 🙂 pas rafraichi...

A+
 
Re : Récupérer un texte dans une colonne filtrée

Mais euh ! arrêtez de vous moquer de mon pseudo ! 😀 bon c'est vrai j'ai abusé là il est pas super discret ! ^^

Merci pour vos propositions, je vais tester ça tout de suite!

L'intérêt, c'est pour mon stage, je fais un fichier qui regroupe tout un tas de graphiques (nuage de points), qui s'affichent sur un autre onglet, bref ça me sert surtout à savoir quels types de points sont sur le graphique lorsque je filtre les données. C'est pas très très clair mon explication, mais je vous assure que ça va être utile!

merci!
 
Re : Récupérer un texte dans une colonne filtrée

Salut Bruno,

Je n'ai pas lu cette exclusive sous la question, mais pas difficile à modifier.

Faire précéder la formule de :
=SI(SOUS.TOTAL(3;B3:B11)=NBVAL(B3:B11);"";la formule)
Ne pas oublier de valider en matricielle (Ctrl+Maj+Entrée)
 
Re : Récupérer un texte dans une colonne filtrée

slt,

j'ai finalement utilisé la méthode de job75 et ça fonctionne.
Mais pour info, est-ce qu'il faut à chaque fois utiliser ton raisonnement "recalcul d'une formule" quand j'ai des filtres?

Par exemple avec la fonction Rang?
Lorsque qu'on filtre en fonction de A ou B, peut-on obtenir les rangs 1,2,3,4 etc... et non 1,2,4,9,10
 

Pièces jointes

Re : Récupérer un texte dans une colonne filtrée

Bonjour allaryxavier, le fil,

Il vaut mieux utiliser une solution par formule, quand elle existe, plutôt que VBA.

Pour l'utilisation de la fonction RANG sur une plage filtrée, peut-être y a-t-il une solution par formule, je laisse hoerwind chercher 🙂

Voici la macro adaptée à votre fichier :

Code:
Private Sub Worksheet_Calculate()
Dim plage As Range, cel As Range
Set plage = Range([B3], [B65536].End(xlUp)).SpecialCells(xlVisible)
If plage Is Nothing Then Exit Sub
[A2] = plage.Cells(1, 1)
[D3:D65536].ClearContents
For Each cel In plage
cel.Offset(, 2) = Application.Rank(cel.Offset(, 1), plage.Offset(, 1), 1)
Next
End Sub

Comme précédemment, en A3, une formule utilisant SOUS.TOTAL pour que la feuille soit recalculée, ce qui lance la macro.

Fichier joint.

A+
 

Pièces jointes

Re : Récupérer un texte dans une colonne filtrée

Bonjour à tous, salut Monique,

Je pensais bien qu'il y avait une solution par formule, merci Monique.

Un détail pour la macro VBA : pour que la feuille soit recalculée quand on modifie une valeur en colonne C, entrer en A4 (ou A3) :

=SOUS.TOTAL(3;C3:C10000)

A+
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Retour