Macro et insertion d'une ligne

Bonjour,

J'ai une petite question, et je n'ai pas réellement trouvé de réponse adaptée.

J'ai une macro pour masquer des lignes suivant une cellule vide (qui fonctionne très bien).

Private Sub CommandButton1_Click()
For i = 5 To 56

If Range("EQ" & i) = 0 Then '
Rows(i).Select
Selection.EntireRow.Hidden = True
End If

Next i
End Sub

Le soucis est que: Si sur mon tableau j'insère une ligne dans l'intervalle du "i", le 56 de vient le 57, et donc n'est plus dans la formule.
Y'a t-il un moyen pour que l'intervalle s'adapte?

Merci d'avance.

Cordialement.

2 réponses

  1. Bonjour,

    Private Sub CommandButton1_Click()
    'prendre une colonne qui convient
    derlig = Range("A" & Rows.Count).End(xlUp).Row
    For i = 5 To derlig
    If Range("EQ" & i) = 0 Then '
    Rows(i).EntireRow.Hidden = True
    End If
    Next i
    End Sub
    1. Merci beaucoup :)

      Sauf que du coup cette formule s'applique sur toute la colonne :/ Et je voudrais jusqu'à 56, ou 57 si jamais une ligne est insérée..
      1. Bonjour,

        Identifie la fin de ton tableau avec une chaîne de caractère et utilise une boucle While plutôt que For.

        While Range("A" & i)<> "FIN"
        ...
        Wend
      2. Hum je pige pas tout à vrai dire !
        Loin d'être un expert.. :)
      3. Le code ne peut pas changer de lui-même, donc plutôt que d'utiliser une boucle for qui est limitée aux lignes 5 à 56 (For i = 5 To 56 ), utilise une boucle While (=tant que) en ajoutant en colonne A à la fin de ton tableau le mot "FIN". Donc tant qu'on n'a pas atteint "FIN" on cache la ligne si on remplit la condition de la colonne EQ.
      4. Ah oui ok ! Merci beaucoup !

    Discussions similaires

    Actif ou en ligne.

    2 réponses