Masquer automatiquement des colonnes et des lignes suivant une valeur [Résolu/Fermé]

Signaler
Messages postés
28
Date d'inscription
lundi 28 mars 2016
Statut
Membre
Dernière intervention
16 mai 2020
-
Messages postés
28
Date d'inscription
lundi 28 mars 2016
Statut
Membre
Dernière intervention
16 mai 2020
-
Bonjour à tous,
Je cherche à masquer automatiquement une ligne suivant le résultat d'une cellule et d'autre part, des colonnes suivant la valeur que prend la même cellule.

Pour la ligne, je veux masquer la ligne 3 de l'onglet Saisie des données uniquement si la cellule D2 = CTS

Pour les colonnes du même onglet (I à Z inclues) , je vais avoir beaucoup de cas (24):
Ils seront du style, si D2 est vide, alors colonnes de I à Z masquées (par défaut, colonnes masquées)
Pour chaque cas, il y aura SI D2 OU H3 = J par exemple, alors on affiche uniquement les colonnes K et L.

Je n'arrive pas à joindre le fichier.

Merci d'avance pour votre aide.

Jordan

6 réponses

Messages postés
684
Date d'inscription
mardi 5 juin 2018
Statut
Membre
Dernière intervention
5 septembre 2020
53
Bonjour,

Il va falloir une macro pour faire ce que tu veux. Est-ce que tu connais VBA ? Pour joindre le fichier, mets-le sur https://mon-partage.fr/
et poste le lien obtenu.

Cordialement.

Daniel
Messages postés
28
Date d'inscription
lundi 28 mars 2016
Statut
Membre
Dernière intervention
16 mai 2020
1
Bonjour Daniel,
Je me doutais bien qu'il fallait faire une macro et avec du VBA. Mais je ne connais ni le principe d'une macro ni le codage VBA.

Je joins mon fichier à cette adresse https://mon-partage.fr/f/Kh2fVMhI/
Merci de votre aide.

Cordialement,
Jordan
Messages postés
684
Date d'inscription
mardi 5 juin 2018
Statut
Membre
Dernière intervention
5 septembre 2020
53
"Pour les colonnes du même onglet (I à Z inclues) , je vais avoir beaucoup de cas (24):
Ils seront du style, si D2 est vide, alors colonnes de I à Z masquées (par défaut, colonnes masquées)
Pour chaque cas, il y aura SI D2 OU H3 = J par exemple, alors on affiche uniquement les colonnes K et L. "


Est-ce que tu peux détailler tous les cas ?

Daniel
Messages postés
28
Date d'inscription
lundi 28 mars 2016
Statut
Membre
Dernière intervention
16 mai 2020
1
Bonjour Daniel,
Tous les cas sont détaillés sur le fichier dans le dernier onglet.
Merci,
Jordan
Messages postés
28
Date d'inscription
lundi 28 mars 2016
Statut
Membre
Dernière intervention
16 mai 2020
1
Nouveau lien du fichier car il a subi quelques modifications...
https://mon-partage.fr/f/IR6dX0K1/
Messages postés
371
Date d'inscription
samedi 28 juillet 2012
Statut
Membre
Dernière intervention
4 mars 2019
33
Bonsoir,

Voici ton fichier
https://www.cjoint.com/c/HLquZDHVq6N

Lorsque tu modifies D1 dans Saisie de données les colonnes s'actualisent automatiquement.
Enregistre le fichier avant de l'ouvrir

Bonne soirée

Jc
Messages postés
371
Date d'inscription
samedi 28 juillet 2012
Statut
Membre
Dernière intervention
4 mars 2019
33
Remplace le par celui-ce plutot

Sub afficher_colonne()
Dim s As Object, c As Object
Set s = Worksheets("Saisie des données")
Set c = Worksheets("Colonnes à afficher")

Dim code As String

If s.Range("D7").Value = "CTS" Then
s.Rows(8).EntireRow.Hidden = False
code = s.Range("H8").Value
Else
s.Rows(8).EntireRow.Hidden = True
code = s.Range("D7").Value
End If

For i = 2 To c.Range("A65536").End(xlUp).Row
Select Case c.Range("A" & i).Value
Case "Colonne"
l_col = i
Case code
l_code = i
End Select
Next i

For j = 2 To c.Range("IV2").End(xlToLeft).Column
    If c.Cells(l_code, j) = "Affichée" Then
    s.Columns(c.Cells(l_col, j).Value).EntireColumn.Hidden = False
    Else
    s.Columns(c.Cells(l_col, j).Value).EntireColumn.Hidden = True
    End If
Next j
End Sub


Jc
Messages postés
28
Date d'inscription
lundi 28 mars 2016
Statut
Membre
Dernière intervention
16 mai 2020
1
Merci bien. J'ai eu le même problème. J'ai affiché la ligne 3 puis relancer la macro et ça fonctionne bien.
Je vous remercie.
Cordialement,
Jordan COLLANGE
Messages postés
28
Date d'inscription
lundi 28 mars 2016
Statut
Membre
Dernière intervention
16 mai 2020
1
Une dernière question Titeuf,
Si je veux rajouter une valeur avec le même focntionnement que pour CTS, je dois modifier le code comment ?
Merci
Jordan
Messages postés
371
Date d'inscription
samedi 28 juillet 2012
Statut
Membre
Dernière intervention
4 mars 2019
33
Bonjour Jordan,

Pour ajouter une exception du mm type que CTS, utilise le code suivant :
Sub afficher_colonne()
Dim s As Object, c As Object
Set s = Worksheets("Saisie des données")
Set c = Worksheets("Colonnes à afficher")

Dim code As String

If s.Range("D7").Value = "CTS" Then
s.Rows(8).EntireRow.Hidden = False
code = s.Range("H8").Value
Else
s.Rows(8).EntireRow.Hidden = True
code = s.Range("D7").Value
End If

'Pour ajouter une autre exeption du type du CTS
If s.Range("D7").Value = "Essai" Then '<<< adresse de cellule et texte à mettre à jour
code = s.Range("B2").Value '<<<< adresse de cellule à mettre a jour
End If

For i = 2 To c.Range("A65536").End(xlUp).Row
Select Case c.Range("A" & i).Value
Case "Colonne"
l_col = i
Case code
l_code = i
End Select
Next i

For j = 2 To c.Range("IV2").End(xlToLeft).Column
    If c.Cells(l_code, j) = "Affichée" Then
    s.Columns(c.Cells(l_col, j).Value).EntireColumn.Hidden = False
    Else
    s.Columns(c.Cells(l_col, j).Value).EntireColumn.Hidden = True
    End If
Next j
End Sub


La partie ajoutée est la suivante, à mettre à jour en fonction de tes besoins. Je n'ai pas ajouté de code pour cacher des lignes mais si besoin on peut le faire aussi.
'Pour ajouter une autre exeption du type du CTS
If s.Range("D7").Value = "Essai" Then '<<< adresse de cellule et texte à mettre à jour
code = s.Range("B2").Value '<<<< adresse de cellule à mettre a jour
End If


Jc
Messages postés
28
Date d'inscription
lundi 28 mars 2016
Statut
Membre
Dernière intervention
16 mai 2020
1
Bonsoir,
En fait, il faudrait exactement le même code que pour la valeur CTS (affichage de la même ligne (8)) si D7 = EF ou CTS. Dans ce cas, pour l'affichage des colonnes on prend en compte la valeur contenue en H8.
Si la valeur en D7 n'est pas EF ni CTS, on masque la ligne et on affiche les colonnes déterminées pour les valeurs contenues en D7.

D'ailleurs, en modifiant les colonnes d'affichage pour la Valeur EF (onglet "colonnes à afficher"), je me suis rendu compte que ce n'est pas la bonne valeur qui est affiché. J'ai dû faire une bêtise....

Je vous ai redonné toutes ces infos car j'ai dû faire une erreur dans la modification du code.

Je vous donne le lien du fichier ici: https://mon-partage.fr/f/sVfffkZn/

Je vous remercie encore pour votre coup de main
Cordialement,
Jordan
Messages postés
371
Date d'inscription
samedi 28 juillet 2012
Statut
Membre
Dernière intervention
4 mars 2019
33
Bonsoir Jordan,

Alors c'est encore plus simple finalement :
Sub afficher_colonne()
Dim s As Object, c As Object
Set s = Worksheets("Saisie des données")
Set c = Worksheets("Colonnes à afficher")

Dim code As String

If s.Range("D7").Value = "CTS" or s.range("D7").value = "EF" Then
s.Rows(8).EntireRow.Hidden = False
code = s.Range("H8").Value
Else
s.Rows(8).EntireRow.Hidden = True
code = s.Range("D7").Value
End If

For i = 2 To c.Range("A65536").End(xlUp).Row
Select Case c.Range("A" & i).Value
Case "Colonne"
l_col = i
Case code
l_code = i
End Select
Next i

For j = 2 To c.Range("IV2").End(xlToLeft).Column
    If c.Cells(l_code, j) = "Affichée" Then
    s.Columns(c.Cells(l_col, j).Value).EntireColumn.Hidden = False
    Else
    s.Columns(c.Cells(l_col, j).Value).EntireColumn.Hidden = True
    End If
Next j
End Sub


Bonne soirée

Jc
Messages postés
371
Date d'inscription
samedi 28 juillet 2012
Statut
Membre
Dernière intervention
4 mars 2019
33
Voici le fichier a jour : https://mon-partage.fr/f/Jsl9WQyi/

Bonne soirée

Jc
Messages postés
28
Date d'inscription
lundi 28 mars 2016
Statut
Membre
Dernière intervention
16 mai 2020
1
Bonjour Titeuf,
Je vous remercie pour votre aide.
Bonne journée,
Cordialement,
Jordan
Messages postés
28
Date d'inscription
lundi 28 mars 2016
Statut
Membre
Dernière intervention
16 mai 2020
1
Bonjour Titeuf,
Mon fichier a été modifié et j'ai une question. Si les noms de feuilles changent et que les fonctions changent de feuilles, que dois-je faire sur le code ?

Je m'explique:
Les lignes 1 à 11 de la feuille "Saisie de données" sont passées sur une nouvelle feuille "Saisie des Données Dimensionnement".
La ligne à masquer est toujours la n°8.

Les valeurs prises en compte dans le masquage des colonnes sont passées sur la nouvelle feuille. Mais les colonnes à masquer sont restées sur la feuille originale (colonnes passées de I à AE vers B à X).

Merci de votre aide,
Jordan
Messages postés
371
Date d'inscription
samedi 28 juillet 2012
Statut
Membre
Dernière intervention
4 mars 2019
33
Bonjour Jordan,

Difficile sans le fichier de t'aiguiller. En gros, on a créé une macro sur mesure et toute la configuration du fichier a été modifié... :-s
Il faut donc reparamétrer toute la macro et l'adapter a ton nouveau fichier, peux-tu poster un exemple de ton fichier stp. Merci

Jc
Messages postés
28
Date d'inscription
lundi 28 mars 2016
Statut
Membre
Dernière intervention
16 mai 2020
1
C'est ce que je me disais...
Je débute en VBA... Je suis pas sûr de ce que je fais. Je fais ce projet pur ma licence et il est amené à évoluer. C'est pour ça que j'essaye de comprendre la logique de ce code pour ne plus vous embêter toutes les semaines et monopoliser votre temps...

Le lien du fichieer: https://we.tl/t-YmFv41Iwtc

Bonne journée et merci encore,
Jordan
Messages postés
371
Date d'inscription
samedi 28 juillet 2012
Statut
Membre
Dernière intervention
4 mars 2019
33
Bonjour Jordan,

Ci-joint ton fichier actualisé, j'ai également mis quelques commentaires dans le code de la macro (écrit en vert) si ça peut t'aider a comprendre un peu mieux la décomposition de la macro et son fonctionnement.
https://mon-partage.fr/f/mMmXu7e8/

Bonne journée

Jc
Messages postés
28
Date d'inscription
lundi 28 mars 2016
Statut
Membre
Dernière intervention
16 mai 2020
1
Merci