Masquer des colonnes différentes

Bonjour à toutes et à tous,

j'ai pas pu trouver de problème similaire au mien malgré la générosité des sujets sur le masquage des colonnes ou des lignes.

Aussi je vous sollicite pour trouver une solution.

J'ai un questionnaire dans lequel il faut saisir les informations d'un dossier par ligne.

En fonction du résultat du dossier , colonne F, l'utilisateur doit saisir des informations dans certaines colonnes mais pas dans les autres.

Il y a 4 possibilités de résultat en F à sélectionner dans une liste.

Si 1, alors on doit saisir dans colonnes L à N et pas les autres qu'il faut donc masquer.

Si 2, alors on doit saisir dans colonnes P à Z et pas les autres qu'il faut masquer.

Si 3, alors on doit saisir dans colonnes AA à AB et pas les autres qu'il faut masquer.

Si 4, alors on doit saisir dans colonnes AC à AF et pas les autres qu'il faut masquer.

J'ai réussi à le faire mais ca ne fonctionne que pour la première ligne (6).

Le fait est que le fichier peut contenir beaucoup de lignes... minimum 561, soit autant de dossiers.

Dès que je passe à la seconde ligne ou suivante, ca bug et je ne sais pas quoi utiliser pour dire que ca doit masquer les colonnes au changement de valeurs/résultat en colonne F.

Merci pour votre aide.

5quest2018.zip (56.76 Ko)

Bonjour Dadoche, bonjour le forum,

Pourquoi une boucle puisque tu travaille ligne par ligne ?!... Je ferais plutôt comme ça :

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [Range("F6:F566")]) Is Nothing Then
    Select Case Target.Value
        Case "1 - OK"
            Range("O6:AF566").EntireColumn.Hidden = True
            Range("L6:N566").EntireColumn.Hidden = False
        Case "2 - KO"
            Range("L6:N566").EntireColumn.Hidden = True
            Range("AA6:AF566").EntireColumn.Hidden = True
            Range("O6:Z566").EntireColumn.Hidden = False
        Case "3 - attente"
            Range("L6:Z566").EntireColumn.Hidden = True
            Range("AC6:AF566").EntireColumn.Hidden = True
            Range("AA6:AB566").EntireColumn.Hidden = False
        Case "4 - autre"
            Range("L6:AB566").EntireColumn.Hidden = True
            Range("AC6:AF566").EntireColumn.Hidden = False
        Case Else
            Range("L6:AF566").EntireColumn.Hidden = False
    End Select
End If
End Sub

Salut ThauThème,

mille mercis pour ta réponse. Effectivement ta solution est la bonne j'aurai dû utiliser le "select case".

Ca fonctionne bien en ajoutant en objet le nom de la feuille.

Private Sub Worksheet_Change(ByVal Target As Range)
Set LaFeuille = Worksheets("2018")
If Not Intersect(Target, LaFeuille.Range("F6:F566")) Is Nothing Then
    Select Case Target.Value
        Case "1 - OK"
            LaFeuille.Range("O6:AF566").EntireColumn.Hidden = True
            LaFeuille.Range("L6:N566").EntireColumn.Hidden = False
        Case "2 - KO"
            LaFeuille.Range("L6:N566").EntireColumn.Hidden = True
            LaFeuille.Range("AA6:AF566").EntireColumn.Hidden = True
            LaFeuille.Range("O6:Z566").EntireColumn.Hidden = False
        Case "3 - attente"
            LaFeuille.Range("L6:Z566").EntireColumn.Hidden = True
           LaFeuille.Range("AC6:AF566").EntireColumn.Hidden = True
            LaFeuille.Range("AA6:AB566").EntireColumn.Hidden = False
        Case "4 - autre"
            LaFeuille.Range("L6:AB566").EntireColumn.Hidden = True
            LaFeuille.Range("AC6:AF566").EntireColumn.Hidden = False
        Case Else
            LaFeuille.Range("L6:AF566").EntireColumn.Hidden = False
    End Select
End If
End Sub

Si ce peut aider d'autres personnes...

Bonne journée à toi et aux autres.

Re,

Ca fonctionne bien en ajoutant en objet le nom de la feuille.

Difficile de le deviner, cet onglet n'apparaît ni dans ton code ni dans ton fichier !... Toutefois si c'est l'onglet qui contient la macro événementielle Change, cette précision n'est pas nécessaire...

Re,

Ca fonctionne bien en ajoutant en objet le nom de la feuille.

Difficile de le deviner, cet onglet n'apparaît ni dans ton code ni dans ton fichier !... Toutefois si c'est l'onglet qui contient la macro événementielle Change, cette précision n'est pas nécessaire...

Merci pour la précision. Il me l'a demandé puisque j'ai un autre onglet masqué en fait.

Sur mon fichier officiel j'ai meme protégé la feuille et il faut que je rentre en dure le mdp dans le code...

pas très sécure mais pas le choix.

Rechercher des sujets similaires à "masquer colonnes differentes"