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

allaryxavier

XLDnaute Nouveau
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
 
C

Compte Supprimé 979

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

Salut AllaryXavier :D;)

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 :D

A+
 

Pièces jointes

  • AllaryXavier_FonctionAfficherFiltre.xls
    32.5 KB · Affichages: 87

job75

XLDnaute Barbatruc
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+
 

allaryxavier

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

Mais euh ! arrêtez de vous moquer de mon pseudo ! :D 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!
 

hoerwind

XLDnaute Barbatruc
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)
 

allaryxavier

XLDnaute Nouveau
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

  • RANGavecFiltre.xls
    14 KB · Affichages: 65

job75

XLDnaute Barbatruc
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

  • RANGavecFiltre(1).xls
    23 KB · Affichages: 61

Monique

Nous a quitté
Repose en paix
Re : Récupérer un texte dans une colonne filtrée

Bonjour,

Le rang par formule
Sur la ligne ou dans un tableau à part.

Formule matricielle, à valider par ctrl, maj et entrée
 

Pièces jointes

  • FiltreRangAllaryxavier.zip
    4 KB · Affichages: 66

job75

XLDnaute Barbatruc
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+
 

Discussions similaires

Statistiques des forums

Discussions
312 504
Messages
2 089 072
Membres
104 018
dernier inscrit
Mzghal