Macro masquer lignes

Bonjour à tous,

Je souhaite faire une macro pour masquer des lignes selon la valeur d'une cellule.

Je ne connais pas du tout VBA j'ai réussi à faire une macro avec différentes recherches internet.

La voici :

Sub Masque(Private Sub Worksheet_Change(ByVal Target As Range))

Application.ScreenUpdating = 0

Rows("15:21").EntireRow.Hidden = False

If Range("f7").Value = "1" Then Rows("15:21").EntireRow.Hidden = True

If Range("f7").Value = "2" Then Rows("16:21").EntireRow.Hidden = True

If Range("f7").Value = "3" Then Rows("17:21").EntireRow.Hidden = True

If Range("f7").Value = "4" Then Rows("18:21").EntireRow.Hidden = True

If Range("f7").Value = "5" Then Rows("19:21").EntireRow.Hidden = True

If Range("f7").Value = "6" Then Rows("20:21").EntireRow.Hidden = True

Application.ScreenUpdating = -1

End Sub

Sub Masque()

End Sub

J'ai l'erreur "Erreur de compilation Identificateur attendu" qui me bloque.

Pouvez-vous m'aider ?

Merci d'avance

Bonjour,

Le début de ta macro est saugrenu ! Une proposition :

Sub Worksheet_Change(ByVal Target As Range)

Rows("15:21").EntireRow.Hidden = False
Select Case Range("f7").Value
     Case 1
          Rows("15:21").EntireRow.Hidden = True
     Case 2
          Rows("16:21").EntireRow.Hidden = True
     Case 3
          Rows("17:21").EntireRow.Hidden = True
     Case 4
          Rows("18:21").EntireRow.Hidden = True
     Case 5
          Rows("19:21").EntireRow.Hidden = True
     Case 6
          Rows("20:21").EntireRow.Hidden = True
End Select

End Sub

A placer dans le module de la feuille concernée.

L'erreur end sub attendu apparait alors qu'il y a un end sub à la fin.

De ce que j'avais l'idée du début de la macro est qu'elle tourne en permanence. Dès lors que l'on modifie la valeur de F7 les lignes doivent se masquer automatiquement.

Merci

Sub Masque()

Rows("15:21").EntireRow.Hidden = False

If Range("f7").Value = "1" Then Rows("15:21").EntireRow.Hidden = True

If Range("f7").Value = "2" Then Rows("16:21").EntireRow.Hidden = True

If Range("f7").Value = "3" Then Rows("17:21").EntireRow.Hidden = True

If Range("f7").Value = "4" Then Rows("18:21").EntireRow.Hidden = True

If Range("f7").Value = "5" Then Rows("19:21").EntireRow.Hidden = True

If Range("f7").Value = "6" Then Rows("20:21").EntireRow.Hidden = True

End Sub

Cette macro fait exactement ce que je veux. Je souhaite uniquement qu'elle fonctionne en permanence sans avoir à l'activer

manuellement lorsqu'on modifie la valeur de F7.

Merci

J'ai bien compris, je t'invite à copier le code proposé à l'endroit indiqué, et à tester en modifiant la valeur de F7.

Autre proposition plus light :

Sub Worksheet_Change(ByVal Target As Range)

Dim Nb As Single

If Not Intersect(Target, Range("F7")) Is Nothing Then
    Rows("15:21").EntireRow.Hidden = False
    Nb = Range("F7").Value
    If Nb >= 1 And Nb <= 6 Then Rows(14 + Nb & ":21").EntireRow.Hidden = True
End If

End Sub

Merci pour ton retour,

J'obtiens encore la même erreur "End Sub attendu".

J'ai l'impression que c'est lorsque je rajoute :

Sub Worksheet_Change(ByVal Target As Range)

que je n'arrive plus à faire démarrer la macro

Désolé je ne connais vraiment rien VBA.

6grtgr-demo.xlsm (13.85 Ko)

Merci, cela fonctionne bien sur le fichier que tu m'as envoyé.

Lorsque je copie le code sur mon classeur et que je lance la macro cela me demande de l'enregistrer et c'est à partir de ce moment que cela modifie le code m’empêchant de l’exécuter.

J'ai mis des captures pour t'expliquer.

Merci

1 2

Dans ton premier code, tu n'as pas copié le "End Sub", dans le second, le "Sub Masque()" n'a rien à faire là...

Ensuite, cette macro s’exécute automatiquement, tu n'as donc rien à faire pour la lancer, pour peu qu'elle soit mise au bon endroit (voir fichier exemple).

En recopiant avec le EndSub cette fois ci, il ne se passe rien lorsque je modifie la cellule F7

2

La valeur que je modifie se trouve bien en cellule F7

1

Merci d'avance

Je crois qu'on atteint la limite des impressions écran... Je ne peux pas t'aider juste avec ça.

Tu as raison,

voici une copie de mon fichier.

Merci

Tu as raison,

voici une copie de mon fichier.

Merci

Ton fichier est au format ".xlsx" et ne contient donc aucune macro...

Voici

Voici

Mieux pour le format, mais il n'y a toujours aucun code.

En revanche, en collant le code proposé précédemment dans le module de la première feuille, cela fonctionne sans soucis.

Merci beaucoup, cela fonctionne.

Dans ce classeur, tu devrais y trouver du code.

Je n'arrive pas à voir la différence entre nos deux fichiers...

Merci beaucoup, cela fonctionne.

Dans ce classeur, tu devrais y trouver du code.

Je n'arrive pas à voir la différence entre nos deux fichiers...

Je t'invite à relire les échanges précédents, un module standard est différent d'un module de feuille... Les macros événementielles (qui se déclenchent automatiquement en fonction d'actions spécifiques) sont liées à des feuilles ou au classeur et doivent donc être placées dans le module correspondant.

D'accord, merci pour ton aide.

D'accord, merci pour ton aide.

Pas de quoi, pense à valider le sujet.

Rechercher des sujets similaires à "macro masquer lignes"