Affichage/Masquage de lignes/colonnes selon 2 conditions

Bonjour tout le monde et déjà merci pour le temps que vous accordez à ma problématique,

Je me permets de faire appel à vos connaissances afin de répondre à cette interrogation :

Est il possible d'afficher/masquer des lignes et/ou des colonnes selon deux conditions ?

Le document (simplifié) présent en PJ permettra d'illustrer mes propos.

Voici les deux conditions :

CONDITION 1 : selon le contenu des cellules A8 à O8, certaines colonnes devront être masquées.

CONDITION 2 : selon le contenu des cellules A11 à O11, certaines lignes devront être masquées.

(Je pars du principe que le 1 signifie que je veux les infos correspondantes et que le 0 signifie que non)

Je souhaite donc définir un modèle (création d'une macro ?) permettant, selon les champs renseignés dans les tableaux des colonnes A à O, d'afficher ou de masquer certaines colonnes ou certaines lignes, afin de n'avoir de façon visible que les informations relatives au site et au métier recherché.

Pour illustrer, voici un exemple de ce que je souhaiterai :

CONDITION 1 : en mettant un 1 en cellule B8, les colonnes R à AA sont affichées (partie commune, qui doit tjrs être affichée peu importe les conditions) ainsi que les colonnes AJ à AQ (informations relatives au site choisi). Toutes les autres colonnes devront dans ce cas être masquées.

CONDITION 2 : Par ailleurs, tout en laissant la première condition active, je souhaite qu'en cas de 1 en A11, les lignes 8 à 10 (infos spécifiques au métier 1) et les lignes 14 à 17 (infos communes aux métiers 1 et 2) soient également affichées. Les autres lignes devant être masquées.

CONCLUSION : Selon cet exemple seules les lignes 8 à 10 et 14 à 17 ainsi que les colonnes R à AA et AJ à AQ devront être affichées.

J'espère ne pas avoir été trop confus. Je souhaite dans un premier temps savoir si la solution que j'ai imaginé est faisable sous excel ?

Si vous me répondez par l'affirmative, je mettrai en ligne le document complet afin de réfléchir ensemble sur la solution finale.

Je vous remercie encore pour votre aide et suis à votre disposition pour plus de précisions au besoin.

Bonne journée !

Steven

19exemple.zip (52.45 Ko)

Bonjour et bienvenue sur le forum

Un essai à tester.

Te convient-il ?

51exemple-v1.zip (72.50 Ko)

Bonjour GMB, et merci pour votre aide.

Je suis désolé mais lorsque j'ouvre votre document, un message d'alerte m'affiche que "les macros du classeur sont désactivées en raison d'un niveau de sécurité élevé ou de l'absence de signature numérique au moyen d'un certificat approuvé (...)".

Je n'arrive donc pas à afficher vos macro ou à les faire fonctionner... Savez vous comment y remédier ?

Merci et bonne journée.

Bonjour GMD,

C'est exactement ce que je recherche ! merci.

En revanche, quand je change une valeur dans mes tableaux "site" ou "métier" (quand je mets un 1 par exemple), une erreur de compilation s'affiche : variable non définie :

Private Sub Worksheet_Change(ByVal Target As Range)

End Sub

Merci !

Sinon, de mon coté j'ai commencé à travailler sur du code concernant les sites (les métiers ce sera pour aujourd'hui) tel que celui ci (les noms de colonnes correspondent pas au document que tu as, mais tu comprendras l'idée) :

'Masquer les colonnes Z:EO

End Sub

Le code donne également des résultats satisfaisant lors de mes premiers tests. Qu'en penses tu ?

Bonne journée.

Steven.


En revanche, une question me vient :

Est ce que les données de la Macro sont modifiées après le rajout d'une ligne par exemple.

Prenons le cas d'une macro qui masque les lignes 19 à 28. Si je rajoute une ligne entre la ligne 13 et 14, par exemple, est ce que la macro masquera, du coup, les lignes 20 à 29 ou continuera de masquer les lignes 19 à 28 et donc ne sera plus fidèle à son objectif initial ?

Merci.

Bonjour

Pour ce qui est du bug, essaie la nouvelle version que je t’envoie.

A propos des bouts de code que tu as écris, tu me demandes ce que j’en pense.

Voici, en prenant l’exemple du premier :

Columns("Z:EO").Select
Selection.EntireColumn.Hidden = True

1 – Tu ne précises pas à quelle feuille appartiennent les colonnes Z à EO. La macro va donc travailler sur la feuille active au moment oû elle rencontrera ces instructions. Il faut donc t’assurer que ce sera bien le cas. Sinon, tu devras lui préciser sur quelle feuille aller :

Sheets(« Feuil2 »).select
Columns("Z:EO").Select
Selection.EntireColumn.Hidden = True

2 – Tu n’es pas obligé de sélectionner feuilles et cellules. Tu peux rester sur la même feuille ou la même cellule et dire à la macro d’aller y faire le travail sans se déplacer ; elle ira plus vite :

Columns("Z:EO"). EntireColumn.Hidden = True

Ou encore :

Sheets(« Feuil1 »). Columns("Z:EO")..EntireColumn.Hidden = True

Bon courage !

Bye !

36exemple-v3.zip (71.91 Ko)

GMD,

Concernant ton fichier, super il marche ! merci !

Concernant mon code, par chance, le fait que la feuille concernée ne soit pas identifiée n'affecte en rien aux résultats souhaitée, donc ça va. En revanche je prend en note tes conseils pour simplifier mon code ! Merci.

En revanche, une question me vient :

Est ce que les données de la Macro sont modifiées après le rajout d'une ligne par exemple.

Prenons le cas d'une macro qui masque les lignes 19 à 28. Si je rajoute une ligne entre la ligne 13 et 14, par exemple, est ce que la macro masquera, du coup, les lignes 20 à 29 ou continuera de masquer les lignes 19 à 28 et donc ne sera plus fidèle à son objectif initial ?

Merci.

Steven

Re

Pour répondre à ta question et en reprenant ton exemple, je dirai que la macro ne pourra pas deviner que tu as ajouté une ligne et continuera de masquer les lignes 19 à 28.

Toute l’astuce consistera à identifier les numéros de la première et de la dernière des lignes à masquer. Ex le numéro de la ligne où en colonne C on a « Métier 2 » et celui où on a « Métier 3 ».

Bye !

GMD,

OK. Et un nouveau merci pour ton aide.

Rechercher des sujets similaires à "affichage masquage lignes colonnes conditions"