Menu

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

Messages postés
23
Date d'inscription
lundi 28 mars 2016
Dernière intervention
14 janvier 2019
- - Dernière réponse : jojodu42210
Messages postés
23
Date d'inscription
lundi 28 mars 2016
Dernière intervention
14 janvier 2019
- 14 janv. 2019 à 09:07
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
Afficher la suite 

Votre réponse

6 réponses

Messages postés
369
Date d'inscription
mardi 5 juin 2018
Dernière intervention
22 janvier 2019
28
0
Merci
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
Commenter la réponse de danielc0
Messages postés
23
Date d'inscription
lundi 28 mars 2016
Dernière intervention
14 janvier 2019
0
Merci
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
danielc0
Messages postés
369
Date d'inscription
mardi 5 juin 2018
Dernière intervention
22 janvier 2019
28 -
"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
jojodu42210
Messages postés
23
Date d'inscription
lundi 28 mars 2016
Dernière intervention
14 janvier 2019
-
Bonjour Daniel,
Tous les cas sont détaillés sur le fichier dans le dernier onglet.
Merci,
Jordan
jojodu42210
Messages postés
23
Date d'inscription
lundi 28 mars 2016
Dernière intervention
14 janvier 2019
-
Nouveau lien du fichier car il a subi quelques modifications...
https://mon-partage.fr/f/IR6dX0K1/
Commenter la réponse de jojodu42210
Messages postés
337
Date d'inscription
samedi 28 juillet 2012
Dernière intervention
23 janvier 2019
22
0
Merci
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
titeufdu89
Messages postés
337
Date d'inscription
samedi 28 juillet 2012
Dernière intervention
23 janvier 2019
22 -
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
jojodu42210
Messages postés
23
Date d'inscription
lundi 28 mars 2016
Dernière intervention
14 janvier 2019
-
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
jojodu42210
Messages postés
23
Date d'inscription
lundi 28 mars 2016
Dernière intervention
14 janvier 2019
-
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
titeufdu89
Messages postés
337
Date d'inscription
samedi 28 juillet 2012
Dernière intervention
23 janvier 2019
22 -
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
jojodu42210
Messages postés
23
Date d'inscription
lundi 28 mars 2016
Dernière intervention
14 janvier 2019
-
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
Commenter la réponse de titeufdu89
Messages postés
337
Date d'inscription
samedi 28 juillet 2012
Dernière intervention
23 janvier 2019
22
0
Merci
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
Commenter la réponse de titeufdu89
Messages postés
337
Date d'inscription
samedi 28 juillet 2012
Dernière intervention
23 janvier 2019
22
0
Merci
Voici le fichier a jour : https://mon-partage.fr/f/Jsl9WQyi/

Bonne soirée

Jc
jojodu42210
Messages postés
23
Date d'inscription
lundi 28 mars 2016
Dernière intervention
14 janvier 2019
-
Bonjour Titeuf,
Je vous remercie pour votre aide.
Bonne journée,
Cordialement,
Jordan
Commenter la réponse de titeufdu89
Messages postés
23
Date d'inscription
lundi 28 mars 2016
Dernière intervention
14 janvier 2019
0
Merci
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
titeufdu89
Messages postés
337
Date d'inscription
samedi 28 juillet 2012
Dernière intervention
23 janvier 2019
22 -
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
jojodu42210
Messages postés
23
Date d'inscription
lundi 28 mars 2016
Dernière intervention
14 janvier 2019
-
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
titeufdu89
Messages postés
337
Date d'inscription
samedi 28 juillet 2012
Dernière intervention
23 janvier 2019
22 -
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
jojodu42210
Messages postés
23
Date d'inscription
lundi 28 mars 2016
Dernière intervention
14 janvier 2019
-
Merci
Commenter la réponse de jojodu42210