Comment afficher ou masquer les lignes en fonction d'une liste de validation.

Sabinoux

XLDnaute Junior
Bonsoir le forum

Je reviens vers vous pour un probleme que je ne sais résoudre.

Comment peut-on grace au choix fait à partir d'une liste de validation, afficher ou masquer certaines lignes d'une feuille sur un 1er onglet et sur l'onglet suivant ? :confused:
L'onglet suivant étant le détail des informations se trouvant sur la feuille.

Merci d'avance à tous
 

Pièces jointes

  • liste test.xls
    34.5 KB · Affichages: 120
  • liste test.xls
    34.5 KB · Affichages: 124
  • liste test.xls
    34.5 KB · Affichages: 121

Sabinoux

XLDnaute Junior
Re : Comment afficher ou masquer les lignes en fonction d'une liste de validation.

Bonsoir Job75

Votre démonstration est tout à fait bluffante…moi qui suis déjà contente lorsque je parviens à obtenir un résultat à partir de deux listes en cascade !

J’ai essayé de mon coté également la mise en place de liste (bien entendu sans atteindre :eek: votre haut niveau d’expert "excelien") mais le problème et celui-ci est de taille :
- le texte contenu dans la liste est le plus souvent très long
(en arial taille 9, le texte le plus long va de la cellule B à la cellule U)​
- le début des phrases est souvent identique.

Ce qui risque de rendre le choix quasiment impossible pour la personne qui devra saisir les informations en raison de la liste déroulante trop étroite.

C’est d’ailleurs pour cette raison que j’évoquais l’utilisation de USF sans vraiment savoir commencer procéder (cases à cocher …)

Je vous remercie beaucoup pour votre aide et sachez que même si je ne pourrais l’utiliser pour ce fichier, je garderai soigneusement votre proposition V3 dans mes tablettes.
Je vais continuer à chercher une solution.

Bonne soirée
 

job75

XLDnaute Barbatruc
Re : Comment afficher ou masquer les lignes en fonction d'une liste de validation.

Re Sabinoux

Ce qui risque de rendre le choix quasiment impossible pour la personne qui devra saisir les informations en raison de la liste déroulante trop étroite.

La longueur des textes de la liste peut être quelconque. il suffit d'augmenter la largeur de la colonne D de la feuille Détail. La largeur des listes déroulante est celle de la colonne D. Si la largeur de la colonne D dépasse la largeur de l'écran, on peut zoomer...

Un autre point : j'indique dans la feuille "liste des axes" que la colonne C est au format Texte. Il s'agit de la colonne B.

Bonne fin de soirée et A+
 
Dernière édition:

Sabinoux

XLDnaute Junior
Re : Comment afficher ou masquer les lignes en fonction d'une liste de validation.

Oui je sais, job75, que la largeur de la liste déroulante est celle de la colonne D.
quoique dans le cas présent, elle va etre d'une largeur trop excessive.
Imaginez que l'une des lignes correspond en longueur à cette phrase en arial taille 9 ("La longueur des textes de la liste peut être quelconque. il suffit d'augmenter la largeur de la colonne D de la feuille Détail. La largeur des listes déroulante est celle de la colonne D. Si la largeur de la colonne D dépasse la")

Cela signifie que la facilité de lecture de l'ensemble du tableau (ex. cas n° 1) est beaucoup plus difficile, qu'il va falloir à chaque fois revoir la largeur des colonnes lors du renseignements des colonnes et de l'impression des feuilles. pb d'ergonomie
Beaucoup trop de manipulations pour certains utilisateurs !

Voilà pourquoi j'avais pensé à un USF qui s'afficherait à coté du tableau lors de la saisie.

Je finirai peut être par trouver une solution intermédiaire (satisfaisante pour le plus grand nombre).
Je vous suis reconnaissante pour votre aide et tous les explications fournies.
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Comment afficher ou masquer les lignes en fonction d'une liste de validation.

Bonjour Sabinoux, le forum

Pour le fun, mais peut-être que cela vous intéressera, voici une version qui ajuste la largeur de la colonne D (feuille "Détail") au nombre de caractères de la liste déroulante (avec une limite).

J'ai aussi utilisé la fonction SOMMEPROD en colonne C de la feuille "liste des axes" au lieu de NB.SI, cette fonction n'acceptant pas un nombre de caractères supérieur à 255.

A+
 

Pièces jointes

  • Sabinoux V4.zip
    26.3 KB · Affichages: 31

Sabinoux

XLDnaute Junior
Re : Comment afficher ou masquer les lignes en fonction d'une liste de validation.

Bonjour job75

Je vais regarder cela de pres mais pourriez-vous m'expliquer davantage les macro utilisées pour le masquage des lignes dans mon cas lignes ?
J'ai repris les plages masquées (à savoir jusqu'à la ligne 67 pour la feuille 1 et jusqu'à la ligne 200 pour la feuille 2) mais rien n'y fait.

votre code :
Sub masque()
Application.ScreenUpdating = False
With Sheets(1)
Rows.Hidden = False
If Range("F32") = "7 objectifs" Then Exit Sub
NbObjectifs = Val(Range("F32")) + 1
Set Trouv = Range("C36:C78").Find(NbAxe)
If Not Trouv Is Nothing Then
x = Trouv.Row
End If
.Range("C" & x & ":C" & .Range("D65000").End(xlUp).Row).Rows.Hidden = True
End With
Application.ScreenUpdating = True

End Sub

Private Sub WorkSheet_Change(ByVal Cel As Range)
If Cel.Address <> "$F$32" Then Exit Sub
Application.ScreenUpdating = False
On Error Resume Next
Range("36:65536").Rows.Hidden = False
Range("F1" & Replace(Cel, " ", "")).Rows.Hidden = True
Sheets(2).Range("1:65536").Rows.Hidden = False
Sheets(2).Range("F2" & Replace(Cel, " ", "")).Rows.Hidden = True
Application.OnRepeat "", ""
Application.ScreenUpdating = True
End Sub

Vous en remerciant par avance

Bon appetit
 

job75

XLDnaute Barbatruc
Re : Comment afficher ou masquer les lignes en fonction d'une liste de validation.

Re,

La 1ère macro (masque()) n'est pas de moi.

Quant aux limites du masquage elles sont sur le fichier joint les lignes 84 pour la 1ère feuille et 252 pour la 2ème. Il vous faut modifier le fichier comme suit :

- modifier les noms tels que "F1troisaxes" "F2troisaxes", en remplaçant 65536 par respectivement 84 et 252

- supprimer les noms "F1septaxes" et "F2septaxes" devenus inutiles

- du fait qu'il y a le code : On Error Resume Next, rien n'est à modifier dans la macro de la 1ère feuille.

A+
 

Pièces jointes

  • Sabinoux V4 masquage limité.zip
    27 KB · Affichages: 28
Dernière édition:

Sabinoux

XLDnaute Junior
Re : Comment afficher ou masquer les lignes en fonction d'une liste de validation.

Re, bonjour job75

J'ai lu avec beaucoup d'attention vos explications sur le fichier qui vous avez joint mais j'aurai aimé savoir quelle ligne de code vba faisait référence à la liste déroulante (trois axes, quatre axes ....) puisqu'il semblerait que si l'on change le texte à savoir trois axes pour trois actions ou trois objectifs par exemple, le code devienne inopérant.

Quand au fun !!! :eek:
C'est vraiment ce genre d'astuce qui plait (à vrai dire, moi la première :D Totalement conquise !)
Pour la mise en pratique sur mon fichier il en va tout autrement.
- Si j'ai compris le pourquoi des 2 onglets "liste déroulante" et "liste des axes" je n'arrive pas à mettre en place sur l'onglet "détail" le principe de zoom de la colonne D pas plus d'ailleurs que le format automatique des chiffres associé de la colonne E :(
 

job75

XLDnaute Barbatruc
Re : Comment afficher ou masquer les lignes en fonction d'une liste de validation.

Bonsoir Sabinoux,

Je réponds à vos questions.

1) Dans le code de la feuille 1, vous remarquerez que nulle part on fait référence à "trois axes", "quatre axes" etc. Par contre on fait référence aux noms définis dans les feuilles 1 et 2 par les lignes de codes :

Range("F1" & Replace(Cel, " ", "")).Rows.Hidden = True
Sheets(2).Range("F2" & Replace(Cel, " ", "")).Rows.Hidden = True

Si vous modifiez un nom dans votre liste de validation de la cellule F32, par exemple "aaa bbb", il faut définir les noms "F1aaabbb" en feuille 1 et "F2aaabbb" en feuille 2.

2) Dans le code de la feuille 2 ("Détail") la mise au format des cellules de la colonne E est la ligne de code avec le commentaire "mise au format".

3) Dans le code du Module1 (Sub Liste()), la largeur de la colonne D est ajustée par les 2 lignes commentées en conséquence. Ce qui est important, c'est que le titre de la liste déroulante soit bien Liste. Pour définir correctement la liste déroulante, il faut :

- sélectionner simultanément les 3 x 7 cellules de la colonne D concernées
- menu Données-Validation, onglet Options : Autoriser : Liste, Source : =Liste (nom défini dans la feuille Liste déroulante)
- onglet Message de saisie : Titre : Liste (j'aurais pu prendre un autre nom).

J'espère que tout ira bien avec ces explications, mais bien vérifier aussi que vous avez copié les macros aux bons endroits (code des feuilles et du Module).
 
Dernière édition:

Sabinoux

XLDnaute Junior
Re : Comment afficher ou masquer les lignes en fonction d'une liste de validation.

Bonsoir job75

Merci pour toutes vos explications tres détaillées.
Les macros ont été copiées au bon endroit, çà au moins c'est une chose certaine.
Pour le reste je vais donc essayer et ne manquerai pas de vous en faire part.
Merci encore.
Bonne soirée
 

Sabinoux

XLDnaute Junior
Re : Comment afficher ou masquer les lignes en fonction d'une liste de validation.

Bonsoir job75

Vos explications m'ont été très utiles et tout fonctionne à merveille.
Non seulement vous êtes 1 pro d'Excel mais également un excellent pédagogue. :)

Je rencontre toutefois deux petits soucis que je me permets de vous soumettre dans le fichier joint.:eek:
Mais si vous n'avez pas le loisir de le consulter je comprendrai fort bien.

Bonne soirée
 

Pièces jointes

  • Sabinoux V5.zip
    27.9 KB · Affichages: 37

job75

XLDnaute Barbatruc
Re : Comment afficher ou masquer les lignes en fonction d'une liste de validation.

Bonsoir Sabinoux,

Désolé mais je ne comprends pas les 2 problèmes que vous posez. Qu'est-ce que vous voulez faire exactement ? et pour le curseur ???

Par contre :

Je souhaiterai la liste des axes étant parfois trop longue donner la possibilité en cliquant sur le "+" d'adapter la zone grisée au texte par ajout de ligne

ça ne me paraît pas une bonne solution. La solution la plus simple est de cocher la case "Renvoyer à la ligne automatiquement" dans menu-Format-Cellule-Alignement. La hauteur de la ligne s'ajuste au texte automatiquement.

Même chose dans la feuille Détail, vous avez fusionné beaucoup de cellules. Cela pose de sérieux problèmes avec certaines macros.

De toute façon sur ce fil on ne vas pas régler tous vos problèmes. Si vous avez des difficultés sur certains points, schématisez-les et ouvrez d'autres discussions ciblées sur le forum. Je vous dis ça dans votre intérêt (vous aurez un éventail de réponses), car ce fut un plaisir de vous aider.

Cordialement et A+

A+
 
Dernière édition:

Sabinoux

XLDnaute Junior
Re : Comment afficher ou masquer les lignes en fonction d'une liste de validation.

Re,

La fusion des cellules a été réalisée uniquement pour des necessités de présentation.
Je crois que je vais associer une macro à l'image "plus" qui permettra d'inserer une ligne.
Par contre j'ignore comment faire pour recuperer la mise en forme des chiffres lors de la concatenation (%, mn,...) mais je vais continuer à chercher.

Je n'ai pas l'habitude d'utiliser ce genre de forum. Vous avez raison, il est sans doute preferable d'ouvrir d'autres post.
Quoiqu'il en soit, merci encore pour votre precieuse aide (tres formatrice) et le temps que vous m'avez consacré à résoudre mes nb problemes.

Bonne soirée
 

Discussions similaires

Statistiques des forums

Discussions
312 838
Messages
2 092 669
Membres
105 482
dernier inscrit
Eric.FKF