Masquer/Afficher ligne suivante d'une cellule vide/non vide

Bonjour à tous,

J'essaye d'afficher la ligne suivante de la cellule que je remplis parmi les cellules d'une plage nommée. Ma plage nommée est une colonne de 25 lignes

Si la cellule que je souhaite remplir est vide => la ligne suivante est masquée

Si j'ai rempli la cellule => j'affiche la ligne suivante

Cela me permets d'alléger un peu ma page.

J'ai donc essayé d'insérer un code dans les évènements :

Private Sub Worksheet_Change(ByVal Target As Range)

    If (Not Application.Intersect(Target, Range("Plage_nommee")) Is Nothing) Then

           If target.value <> "" then

                   Target.Offset(1, 0).EntireRow.Hidden = False

         Else

              Target.Offset(1, 0).EntireRow.Hidden = False

    End If

End Sub

Le code marche pour une cellule, par contre si j'en sélectionne plusieurs et que j'appuie sur "del" juste pour effacer les valeurs à l'intérieur. Je m'attends à ce qu'il ne reste plus que la première ligne dans mon tableau.

Mais j'ai une erreur VBA "incompatibilité de type". Je pense que cette erreur est due au fait que mon code s'applique uniquement pour une ligne à la fois.

Il faut donc en quelque sorte que je dise :

si la sélection est nulle, masque la ligne en dessous de la sélection

si la sélection n'est pas nulle, affiche la ligne en dessous

Mais je n'arrive pas ni avec Selection ou la propriété .select

Avez-vous une idée de comment résoudre ce problème?

Merci.

Hubert41

Bonjour à tous,

je suis toujours coincé sur cette méthode.

J'ai tenté de la résoudre par une manière différente : je détecte la dernière cellule non vide de ma plage nommée et j'affiche la ligne suivante. Même avec cela, je n'ai pas réussi à faire marcher le code que voici :

If Range("Plage nommee").cells(1, 0).Value = "" Then
                        LastCellRowNb = Range("Plage nommee").cells(1, 0).Row
                        Range("Plage nommee").Cells(LastCellRowNb + 1, 0).EntireRow.Hidden = True
                Else
                        LastCellRowNb = Range("Plage nommee").Find("*", , , , xlByRows, xlPrevious).Row
                        Range("Plage nommee").Cells(LastCellRowNb + 1, 0).EntireRow.Hidden = False
End If

J'ai aussi tenté les End(xlup) et end(xldown) sans succès. Je suis preneur si vous avez trouvé une solution à un problème similaire.

Merci

Cordialement,

Hubert41

Bonjour

A essayer

Private Sub Worksheet_Change(ByVal Target As Range)

  If (Not Application.Intersect(Target, Range("Plage_nommee")) Is Nothing) Then
    For Each cel In Target
      If cel.Value <> "" Then
        cel.Offset(1, 0).EntireRow.Hidden = False
      Else
        cel.Offset(1, 0).EntireRow.Hidden = True
      End If
    Next cel
  End If
End Sub

Merci beaucoup, ça marche bien comme ça!

Bonne fin de journée

Hubert41

Rechercher des sujets similaires à "masquer afficher ligne suivante vide"