VBA Masquer doublons sans supprimer le filtre automatique

Bonjour,

J'aurais besoin d'une macro pour faire qu'en fonction de ce qui est affiché dans la cellule A1, le tableau n'affiche pas la même chose.

En gros, si je sélectionne Acomptes, ça affiche les acomptes, Contrats affiche les contrats, et Coordonnées affiche les coordonnées. Ca, je le fais sans souci.

Sauf que lorsque je sélectionne les Coordonnées, je n'ai pas besoin de 50 lignes par agent pour tous leurs contrats, donc je veux supprimer les doublons dans la mise en page, et c'est là que ça pose problème.

J'ai appliqué la macro que j'ai trouvée ici (https://forum.excel-pratique.com/excel/masquer-les-doublons-vba-127712), qui fait très bien le travail, à l'exception qu'elle fout en l'air mon filtre automatique.

Y a-t-il moyen d'appliquer cette macro et de masquer les doublons tout en gardant le filtre automatique ?

Je vous souhaite une agréable journée.

Bonjour

Cordialement

Bonjour,

Quelle boulette je fais. Je me rappelle l'avoir joint pourtant.

Essai n°2 :

Je te souhaite une agréable journée.

Bonjour,

Déjà un premier point et répété des milliers de fois sur les forum, avec VBA il faut éviter les cellules fusionnées !!, sauf si on veut avoir des problèmes un jour...
Donc votre liste déroulante en A1, mettez là en C1 (vous aurez la largeur de colonne voulue pour afficher les données contenues dans votre liste.

Sauf que lorsque je sélectionne les Coordonnées, je n'ai pas besoin de 50 lignes par agent pour tous leurs contrats, donc je veux supprimer les doublons dans la mise en page, et c'est là que ça pose problème.

Vous pouvez me donner un exemple dans votre fichier que je reproduise cela afin de voir mieux le problème ?

Autres questions :
- pourquoi masquez-vous au delà de la colonne AS ?
- quand vous choisissez "acomptes", le code doit faire quoi ?. Là il ne change rien du tout dans vos colonnes masquées

Cordialement

Bonjour,

Visiblement, le tableau que je t'ai envoyé n'était pas le bon...bref, je m'améliore pas.

Du coup, j'ai tout repris parce que j'en ai marre de t'envoyer des trucs à moitié cuits et d'abuser de ta patience.

J'en ai profité pour déplacer la cellule en C1, du coup.

Sur le tableau ci-dessus, quand je sélectionne Contrats en C1, j'ai bien mon filtre auto, mais quand je sélectionne Coordonnées, ça masque bien les doublons, mais ça fait sauter le filtre auto, et j'aimerais le conserver.

capture capture 1

Je te souhaite une agréable journée.

Merci du bon fichier

Si vous choisissez de filtrer les doublons avec le choix "Coordonnées", vous n'avez plus accès au filtre automatique.
Le fait d'activer le filtre auto vous fera perdre le "masquage" des doublons.
Par contre, on peut faire en sorte que si vous quittez l'option "Coordonnées" cela vous remet le filtre auto

Dites moi

Bonjour,

Oui, mais l'idée serait que je puisse quand même filtrer le tableau coordonnées sans que ça n'affiche les doublons, ce n'est pas possible ?

Si ce n'est pas possible, au moins, est-ce que le filtre pourrait revenir si je repasse sur d'autres tableaux ?

Je te souhaite une agréable journée.

Oui, mais l'idée serait que je puisse quand même filtrer le tableau coordonnées sans que ça n'affiche les doublons, ce n'est pas possible ?

Non.

Si ce n'est pas possible, au moins, est-ce que le filtre pourrait revenir si je repasse sur d'autres tableaux ?

Oui bien sûr. Le filtre sera réactivé pour les autres options et si votre cellule C1 est vide

Ok pour vous ?

Ensuite on s'arrête à la colonne AR ou AZ ?

Bonjour,

Alors on va juste faire en sorte de réactiver le filtre après usage, jusque la cellule AZ, puisque je me garde un peu de mou au cas où j'ai besoin de cellules ^^

Merci beaucoup.

Je te souhaite une agréable journée.

Re

Ok.
1. Code Worksheet_change
, remplacez le par celui ci-dessous

Private Sub Worksheet_Change(ByVal Target As Range)
Dim mblig As Integer

If Not Intersect(Target, Range("C1")) Is Nothing Then

    Select Case Target
        Case Is = vbNullString
            Range("A:AZ").EntireColumn.Hidden = False

        Case Is = "Acomptes"
            Range("A:J, S:S, AL:AL").EntireColumn.Hidden = False
            Range("K:R, T:AJ, AM:AZ").EntireColumn.Hidden = True

        Case Is = "Coordonnées"
            Range("A:D,W:AG").EntireColumn.Hidden = False
            Range("E:V,AH:AZ").EntireColumn.Hidden = True

            Nlig = Range("C" & Rows.Count).End(xlUp).Row
            Range("C2:C" & Nlig).AdvancedFilter Action:=xlFilterInPlace, Unique:=True

        Case Is = "Contrats"
            Range("A:M,P:V,AH:AL").EntireColumn.Hidden = False
            Range("N:O,W:AG,AM:AZ").EntireColumn.Hidden = True

        Case Is = "IFCD"
            Range("A:J,S:S,AH:AJ").EntireColumn.Hidden = False
            Range("K:R,T:AG,AK:AZ").EntireColumn.Hidden = True
    End Select
    If Target.Value <> "Coordonnées" Then Call Filtre
End If
End Sub

2. Filtre : ajoutez ce code dans la feuille en dessous des deux autres

Private Sub Filtre()
With Range("A2:AR2")
    If AutoFilterMode = True Then
        On Error Resume Next
        .ShowAllData
        On Error GoTo 0
    Else: .AutoFilter
    End If
    Cells.EntireRow.Hidden = False
End With
End Sub

Le code fonctionnera aussi quand vous videz la cellule C1 (cela affichera tout le tableau

Pour la question de AR ou AZ, on aurait aussi pu dimensionner automatiquement mais là c'est revoir le code

Si ok, pensez à

Cordialement

Bonjour,

Tout fonctionne bien, merci beaucoup ! :D

Je te souhaite une agréable journée.

Rechercher des sujets similaires à "vba masquer doublons supprimer filtre automatique"