Masque lignes fonction valeur cellule

Bonjour à tous !!!

Et merci d'avance pour vos lumières!

J'aimerais que les lignes d'un tableau soient masquées/affichées en fonction de la valeur prise par une cellule de la feuille, appelée "Effectif".

[ Il faut que la manip passe par une macro VBA (en effet, d'autres opérations sont declenchées par des macros, je dois ajouter celle là au fichier) ]

Si la cellule D2 prend la valeur "Quai A", toutes les lignes de D6 à D100 ne contenant pas cette valeur sont masquées.

Même chose si la cellule prend la valeur "Point M", je précise CONTENANT et non pas égal.

Le but est que, les lignes avec les cellules de D6 à D100 prenant pour valeur "Quai A et Point M" restent affichées quand D2 prend "Quai A" ou "Point M" pour valeur.

Vous suivez? J'imagine que cela n'est absolument pas clair, toutes mes excuses. J'ai essayé de procéder avec une macro qui se trouve dans le module1, "MaskSite" et qui est appelée dans le code de la feuille ("imprimer").

Je joins le fichier au post.

Merci merci !!!

18emargement-4.xlsm (86.63 Ko)

Bonjour

Sub MaskSite()
Dim Site As String
Site = Range("D2").Value
Sheets("Effectif").ListObjects("TabAg").Range.AutoFilter Field:=3, Criteria1:="=*" & Site & "*", Operator:=xlAnd
End Sub

Ce code ne te convient pas ? Je n'ai quasiment rien changer ton code fonctionnait bien non ?

Cordialement,

Merci Ergotamine,

J'ai essayé ton code, Excel me dit qu'il y a une erreur de compilation

capture d ecran 2018 06 09 a 10 06 23 capture d ecran 2018 06 09 a 10 07 47

Est- ce que c'est possible de ne pas passer par AutoFiltre?

Cette instruction brouille mes filtres précédents (basé sur les critères des colonnes E à K).

Bonsoir,

Sans passer par l'autofilter :

Sub MaskSite()
Dim Site As String
Dim l As Integer
Site = Range("D2").Value
For l = 7 To 100
    Rows(l).EntireRow.Hidden = False
    If InStr(Range("D" & l).Value, Site) > 0 Then
    Rows(l).EntireRow.Hidden = False
    Else: Rows(l).EntireRow.Hidden = True
    End If
Next l
End Sub

Cordialement,

Bonsoir,

Sans passer par l'autofilter :

Sub MaskSite()
Dim Site As String
Dim l As Integer
Site = Range("D2").Value
For l = 7 To 100
    Rows(l).EntireRow.Hidden = False
    If InStr(Range("D" & l).Value, Site) > 0 Then
    Rows(l).EntireRow.Hidden = False
    Else: Rows(l).EntireRow.Hidden = True
    End If
Next l
End Sub

Cordialement,

Bonjour! Voilà c'est bien cette méthode que je cherchais, merci.

Cependant j'ai du préciser à Excel que l'action devait se passe dans l'onglet "Effectif", car j'ai testé ta macro et elle m'a masqué des trucs sur l'onglet "imprimer" à la place...

Du coup voilà le code remaniée :

Sub MaskSite()
Dim Site As String
Dim l As Integer
Dim o As Worksheet

Set o = Worksheets("Effectif")
Site = o.Range("D2").Value
For l = 7 To 100
    o.Rows(l).EntireRow.Hidden = False
    If InStr(o.Range("D" & l).Value, Site) > 0 Then
    o.Rows(l).EntireRow.Hidden = False
    Else: o.Rows(l).EntireRow.Hidden = True
    End If
Next l
End Sub

Cela ne donne pas le résultat escompté, car, comme suis la pièce jointe de ce post, on peut voir que dans un cas avec un critère "Quai A", j'ai encore des lignes contenant "Point M"...

capture d ecran 2018 06 10 a 19 17 51

Il faut peut être intégrer MaskSite à la macro Masquer Ligne?

Merci merci encore pour l'aide

Bonsoir,

Non je ne pense pas, sur mon fichier tout fonctionne.

Quelle est la plage totale de ton fichier ? Ne s'agit-il pas de lignes > 100 ?

Cordialement,

Bonsoir,

Non je ne pense pas, sur mon fichier tout fonctionne.

Quelle est la plage totale de ton fichier ? Ne s'agit-il pas de lignes > 100 ?

Cordialement,

Bonsoir et merci de ta réponse,

Ma plage n'excède pas les 100 lignes.

Est-ce que tu peux m'envoyer ton fichier?

Voilà.

Quand je rentre une valeur dans D2 je n'ai aucun soucis à filtrer correctement.

Cordialement,

10emargement-4.xlsm (83.21 Ko)

Voilà.

Quand je rentre une valeur dans D2 je n'ai aucun soucis à filtrer correctement.

Cordialement,

Merci pour ce retour,

Désolé mais tu as supprimé la formule qu'il y avait dans D2 de la feuille "Effectif". Elle se remplit automatiquement une fois qu'un numéro est renseigné dans la cellule D1 de la feuille "imprimer".

Voilà pourquoi ça ne marche pas chez moi.

Par ailleurs, sur ton fichier je n'ai pas aussi ce que je souhaite, elle entre "en conflit" avec ma macro Masque Ligne.

Cette macro se charge de masquer les lignes qui ne respecte aucun des critères (donc qui n'ont aucune X).

La macro masque ligne qui me laisse affiché les lignes vides, du coup ça ne m'arrange pas.

Mais merci de ta réactivité!

Voilà.

Quand je rentre une valeur dans D2 je n'ai aucun soucis à filtrer correctement.

Cordialement,

Comme tu peux le voir, [avec ton fichier], l'opération ne tourne pas correctement (cf.image)

J'ai toujours du "Point M" (tout en bas dans l'image), alors que le site renseigné est "Quai A".

cap

Bonsoir,

J'ai fait du nettoyage dans le code car je ne m'y retrouvais plus.

Tout est sous une seule et même macro.

Test et dit moi si ça te va !

Cordialement,

13emargement-4-1.xlsm (83.81 Ko)

Bonsoir,

J'ai fait du nettoyage dans le code car je ne m'y retrouvais plus.

Tout est sous une seule et même macro.

Test et dit moi si ça te va !

Cordialement,

Bonsoir,

Nous avons un gagnant! Toute ma gratitude!

MERCI

Rechercher des sujets similaires à "masque lignes fonction valeur"