Macro et insertion d'une ligne

Fermé
Maxou72 - 28 mars 2014 à 11:48
 Maxou72 - 28 mars 2014 à 13:38
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.
A voir également:

2 réponses

f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
28 mars 2014 à 12:04
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
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
Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 149
28 mars 2014 à 13:17
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
Hum je pige pas tout à vrai dire !
Loin d'être un expert.. :)
0
Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 149
Modifié par Zoul67 le 28/03/2014 à 13:44
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
Ah oui ok ! Merci beaucoup !
0