VBA - filtre et colonne

Résolu/Fermé
mcou - 30 juil. 2012 à 10:06
 mcou - 30 juil. 2012 à 13:55
Bonjour,


Bonjour

J'effectue parfois des filtres. La macro ci dessous sert à lancer un formulaire de vérification. Avant que celui-ci se lance, je vérifie s'il existe des filtres dans ma feuille et, si c'est le cas, demande à mon utilisateur s'il souhaite maintenir ou enlever ces filtres pour la vérification.
Je souhaite indiquer dans ma msgbox, s'il existe un filtre, le numéro de la colonne filtrée ainsi que son entête (l'entête est toujours situé en ligne 3).
Les enregistrements commencent à la ligne 4...
Comment faire ?

Voici mon code :
Sub lancerUF()

' cette macro lance le formulaire et vérifie s'il existe des filtres
    
    Dim rep As Variant 'déclaration de la variable rep comme étant la réponse attendue à la première fenêtre
    
    With Sheets("FOLLOW-UP")
        If .FilterMode = True Then
            rep = MsgBox("Il y a un filtre sur la colonne :" & .Columns & "Voulez-vous effectuer la vérification sur le filtre ?", vbYesNo + vbQuestion, "FILTRE")   'affiche le numéro de référence de la ligne à solder
            If rep = 7 Then 'valeur 7 correspond à la réponse non
                Sheets("FOLLOW-UP").ShowAllData 'si "non", alors on enlève tous les filtres de la feuille FOLLOW-UP
            End If
        End If
    End With
   
    Verification_ALL.Show 'affiche le formulaire Verification_ALL
    Range("A1").Select  'se positionne en cellule A1
        
End Sub

Merci de votre aide.

1 réponse

Solution trouvée toute seule :

Sub lancerUF()

' lance le formulaire et vérifie s'il existe des filtres
    
    Dim rep As Variant 'déclaration de la variable rep comme étant la réponse attendue à la première fenêtre

    If Sheets("FOLLOW-UP").FilterMode = True Then
        For Each cell In Range("A3:U3")
            If cell.Interior.ColorIndex = 6 Then
                rep = MsgBox("Il y a un filtre sur la colonne " & cell.Column & " - " & cell.Value & ". Voulez-vous effectuer la vérification sur le filtre ?", vbYesNo + vbQuestion, "FILTRE")                      'affiche le numero de colonne où est situé le filtre ainsi que l'entête
                If rep = 7 Then 'valeur 7 correspond à la réponse non
                    Sheets("FOLLOW-UP").ShowAllData 'si "non", alors on enlève tous les filtres de la feuille FOLLOW-UP
                End If
            End If
        Next
    End If
     
    Verification_ALL.Show 'affiche le formulaire Verification_ALL
    Range("A1").Select  'se positionne en cellule A1
        
End Sub
1