Supprimer plage de cellule SI

Bonjour à tous,

Alors voilà: j'ai fait une macro, et aucune erreur n'apparait lorsque je compile.

Cependant rien ne fonctionne, je suis complètement perdue!!!

Ma macro doit pour la colonne C:

tant que "Total general" ne s'affiche pas: si la cellule (i,3) n'est pas une date et que la suivante (i+1,3) non plus, alors supprimer la plage de cellule range[C(i,3,C(i,11)]

La macro est vraiment courte, est ce que quelqu'un pourrait y jetter un coup d'oeil?

D'avance, un grand MERCI! Fichier en PJ !

Sub supprimer_plagecellules_si()

Dim i As Integer

i = 2

While Cells(i, 3) <> "Total general"

If Not IsDate(Cells(i, 3)) And Not IsDate(Cells(i + 1, 3)) Then

Range(Cells(i, 3), Cells(i, 11)).Delete shift:=xlUp

i = i + 1

End If

Wend

End Sub

18test.xlsm (17.10 Ko)

Salut !

Le souci vient de ton i :

il reste égal à 2 tant qu'il n'entre pas dans la boucle,

et tant qu'il reste égal à 2 il ne peut pas entrer dans la boucle.

Déplace ton i=i+1 en dessous du End if , comme ceci :

Sub supprimer_plagecellules_si()
Dim i As Integer
i = 2
While Cells(i, 3) <> "Total general"
     If Not IsDate(Cells(i, 3)) And Not IsDate(Cells(i + 1, 3)) Then
          Range(Cells(i, 3), Cells(i, 11)).Delete shift:=xlUp
     End If
     i = i + 1
Wend
End Sub

ça devrait fonctionner

EDIT : en revanche Attention : en supprimant des cellules, tes formules ne suivent plus (en L16 et M16 j'ai des #REF après exécution de la macro)

Bonsoir Nawlo, GAz0line, bonsoir le forum,

Peut-être comme ça :

Sub supprimer_plagecellules_si()
Dim LT As Integer
Dim i As Integer

LT = Sheets("Feuil2").Columns(3).Find("Total general", , xlValues, xlWhole).Row - 2
For i = LT To 2 Step -1
    If Not IsDate(Cells(i, 3)) And Not IsDate(Cells(i + 1, 3)) Then
        Range(Cells(i, 3), Cells(i, 11)).Delete shift:=xlUp
        i = i + 1
    End If
Next i
End Sub

ou comme ça :

Sub supprimer_plagecellules_si()
Dim LT As Integer
Dim i As Integer

LT = Sheets("Feuil2").Columns(3).Find("Total general", , xlValues, xlWhole).Row - 1
For i = LT To 2 Step -1
    If Not IsDate(Cells(i, 3)) Then
        Range(Cells(i, 3), Cells(i, 11)).Delete shift:=xlUp
    End If
Next i
End Sub

Bonjour Thau Thème & GAz0line

J'ai utilisé la macro avec le pas de -1 et ça fonctionne super bien!! je suis vraiment contente d'avoir découvert "find", c'est super et j'ai pas mal avancé!

Merci!!! Je vais cloturer le sujet

Bye

Rechercher des sujets similaires à "supprimer plage"