Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Masquer automatiquement des lignes

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

BenRoger

XLDnaute Nouveau
Bonjour à tous,
Je soumets à votre sagacité une question pour laquelle j'ai trouvée des pistes mais pas tout à fait de réponse en dépit de sujets similaires consultées sur le forum.
Je dois faire disparaître automatiquement des lignes lorsque le formulaire que j'ai créé en donne le signal à partir d'une liste déroulante.
Vous pouvez vous reporter au tableau que j'ai mis en pièce jointe pour être plus clair. Dans ce tableau, pour chaque rubrique, j'ai créé la possibilité de sélectionner quatre choix à partir d'une liste déroulante : "Pour info", "oui", "non", "sans objet". Je peux faire figurer ce choix en le sélectionnant pour qu'il apparaisse dans la colonne E intitulée "Etat". Dans deux cas de figure, la sélection "sans objet" et la sélection "non", je voudrais faire disparaître automatiquement les lignes qui sont situées sous la rubrique : par exemple 3 à 5 ou 7 à 9 ou 11 à 13.
Ce tableau est bien sûr très simplifié, il va compter des centaines de lignes, d'où l'intérêt d'automatiser cette fonction, pour pouvoir n'imprimer que ce qui est nécessaire à l'arrivée.

Dans la foulée, j'ai cherché dans les mises en forme où je puisse faire apparaitre en colonne F un icône V ou X ou ! en fonction du choix. Par exemple, je coche dans la liste déroulante "pour info", apparaît automatiquement un icône "!" dans la colonne F à la ligne correspondante, un "v" pour oui, un "X" pour non... Je pédale aussi dans la semoule même si je crois qu'il ne faut pas passer par une macro pour cela.

Bref, si vous avez des idées...

Merci à tous.😉

Ben
 

Pièces jointes

Re : Masquer automatiquement des lignes

Salut BenRoger, le Forum

Essaye éventuellement ce code dans le Module de la Feuille Formulaire

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect([E2,E6,E10], Target) Is Nothing Then
    If Target = "Non" Or Target = "Sans Objet" Then Rows("3:5").RowHeight = 0
    If Target = "Oui" Or Target = "Pour Info" Then Rows("3:5").RowHeight = 12.75
End If
End Sub
Bonne Journée
 
Re : Masquer automatiquement des lignes

Bonjour Ben, Dull, bonjour le forum,

Je te propose la même macro événementielle Change que Dull mais je crois que nous n'avons pas compris de la même manière...
Code:
Private Sub Worksheet_Change(ByVal Target As Range) 'au changement dans l'onglet
If Target.Column <> 5 Then Exit Sub 'si le changement a lieu ailleurs que dans la colonne E, sort de la procédure
If Target.Row < 2 Then Exit Sub 'si le changement à lieu dans la ligne 1, sort de la procédure
 
If Target.Offset(0, -2) <> "" Then 'condition 1 : si le changement a lieu dans une cellule où le "contenu" n'est pas vide
    If Target.Value = "Non" Or Target.Value = "Sans Objet" Then 'condition 2 : si la valeur de la cellule est "Non" ou "Sans Objet"
        'masque les ligne en dessous jusqu'à la prochaine rubrique
        Rows(Target.Row + 1 & ":" & Target.End(xlDown).Row - 1).Hidden = True
    Else 'sinon
        'affiche les ligne en dessous jusqu'à la prochaine rubrique
        Rows(Target.Row + 1 & ":" & Target.End(xlDown).Row - 1).Hidden = False
    End If 'fin de la condition 2
End If 'fin de la condition 1
End Sub

Édition :

Merci Dull pour ta remarque j'ai modifié la pièce jointe...
 

Pièces jointes

Dernière édition:
Re : Masquer automatiquement des lignes

Salut Robert🙂, re le fil

je viens de me relire et effectivement tu peux le dire franchement J'aimerdouilléquelquepart 😱 En faisant les tests j'ai oublié de mettre la correspondance avec les autres lignes Honteàmoi 😡

Re re lecture et ouverture du code de ton fichier. c'est malin d'avoir mis les ' au début de tes lignes de codes... maintenant je comprend pourquoi 😀

Je met quand même le code complet

Code:
[COLOR=BLUE]Private Sub[/COLOR] Worksheet_Change([COLOR=BLUE]ByVal[/COLOR] Target [COLOR=BLUE]As[/COLOR] Range)
[COLOR=BLUE]If Not[/COLOR] Intersect([E2], Target) [COLOR=BLUE]Is Nothing Then[/COLOR] Rows("3:5").RowHeight = IIf(Target = "Non" [COLOR=BLUE]Or[/COLOR] Target = "Sans Objet", 0, 12.75)
[COLOR=BLUE]If Not[/COLOR] Intersect([E6], Target) [COLOR=BLUE]Is Nothing Then[/COLOR] Rows("7:9").RowHeight = IIf(Target = "Non" [COLOR=BLUE]Or[/COLOR] Target = "Sans Objet", 0, 12.75)
[COLOR=BLUE]If Not[/COLOR] Intersect([E10], Target) [COLOR=BLUE]Is Nothing Then[/COLOR] Rows("11:13").RowHeight = IIf(Target = "Non" [COLOR=BLUE]Or[/COLOR] Target = "Sans Objet", 0, 12.75)
[COLOR=BLUE]End Sub[/COLOR]
Bonne Journée
 

Pièces jointes

Dernière édition:
Re : Masquer automatiquement des lignes


Dull ton code en dur ne vas pas s'adapter (première remarque de Ben) !

Ben on avait oublié (autant dire "on navet oublié" dans ce cas là...) la seconde partie de ton problème. Voici donc un version 02 qui la traite...

Code:
Private Sub Worksheet_Change(ByVal Target As Range) 'au changement dans l'onglet
If Target.Column <> 5 Then Exit Sub 'si le changement a lieu ailleurs que dans la colonne E, sort de la procédure
If Target.Row < 2 Then Exit Sub 'si le changement à lieu dans la ligne 1, sort de la procédure
Select Case Target.Value 'agit en fonction de la valeur de la cellule éditée
    Case "Pour Info" 'cas "Pour info"
        Target.Offset(0, 1).Value = "!" 'la cellule à droite prend la valeur : "!"
    Case "Oui" 'cas "Oui"
        Target.Offset(0, 1).Value = "V" 'la cellule à droite prend la valeur : "V"
    Case "Non" 'cas "Non"
        Target.Offset(0, 1).Value = "X" 'la cellule à droite prend la valeur : "X"
    Case "", "Sans Objet" 'cas "Sans Objet" ou cellule effacée
        Target.Offset(0, 1).Value = "" 'la cellule à droite est effacée aussi
End Select
If Target.Offset(0, -2) <> "" Then 'condition 1 : si le changement a lieu dans une cellule où le "contenu" n'est pas vide
    If Target.Value = "Non" Or Target.Value = "Sans Objet" Then 'condition 2 : si la valeur de la cellule est "Non" ou "Sans Objet"
        'masque les ligne en dessous jusqu'à la prochaine rubrique
        Rows(Target.Row + 1 & ":" & Target.Offset(0, -2).End(xlDown).Row - 1).Hidden = True
    Else 'sinon
        'affiche les ligne en dessous jusqu'à la prochaine rubrique
        Rows(Target.Row + 1 & ":" & Target.Offset(0, -2).End(xlDown).Row - 1).Hidden = False
    End If 'fin de la condition 2
End If 'fin de la condition 1
End Sub
 

Pièces jointes

Dernière édition:
Re : Masquer automatiquement des lignes

Bonsoir à tous


Pourquoi ne pas utiliser le filtre automatique ?
(ou le filtre élaboré si plus d'accointances avec celui-ci)
(Je dis cela, car pour moi , l'extension : xlsx signifie pas de macro 😉 )
 
Re : Masquer automatiquement des lignes

Bonjour et merci à tous. Je suis à la fois surpris par la qualité et par la rapidité de vos réponses. J'ai testé en téléchargeant, évidemment, ça marche. Je vais de mon côté faire un copié-collé dans mon tableau définitif en intégrant le code que vous m'avez proposé. Je reviens vers vous (probablement) avec un nouveau tableau pour vous montrer le résultat.
Hé vous savez quoi ? Merci
Ben
PS : Staple1600, ton idée a l'air bonne également. Mais je ne suis pas sûr de savoir comment le faire...
 
Re : Masquer automatiquement des lignes

Bonjour à tous,
Merci de votre réponse. Je suis impressionné par leur rapidité et leur qualité. Je vais faire un copié-collé de votre code et l'adapter à mon tableau définitif. Je reviens vers vous pour vous montrer le résultat. Hé vous savez quoi ? Merci !
Ben
PS : Staple 1600, ton idée a l'air bonne mais je suis incapable d'envisager comment cela pourrait se mettre en place pour chaque rubrique indépendamment des autres.
 
Re : Masquer automatiquement des lignes

Bonjour à tous,
Merci de vos réponses. Je suis impressionné par leur rapidité et leur qualité. Je vais faire un copié-collé de votre code et l'adapter à mon tableau définitif. Je reviens vers vous pour vous montrer le résultat. Hé vous savez quoi ? Merci !
Ben
PS : Staple 1600, ton idée a l'air bonne mais je suis incapable d'envisager comment cela pourrait se mettre en place pour chaque rubrique indépendamment des autres.
 
- 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

Discussions similaires

  • Question Question
Microsoft 365 INDEX equiv
Réponses
1
Affichages
114
Réponses
10
Affichages
376
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…