Macro et insertion d'une ligne

Maxou72 -  
 Maxou72 -
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. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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
    0
  2. Maxou72
     
    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..
    0
    1. Zoul67 Messages postés 2001 Statut Membre 149
       
      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
      0
    2. Maxou72
       
      Hum je pige pas tout à vrai dire !
      Loin d'être un expert.. :)
      0
    3. Zoul67 Messages postés 2001 Statut Membre 149
       
      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.
      0
    4. Maxou72
       
      Ah oui ok ! Merci beaucoup !
      0