OVH Cloud OVH Cloud

Pb sur delete

2 réponses
Avatar
Perrine
Bjr =E0 toutes & tous,
J'ai un petit souci sur un delete. je balaye l'ensemble=20
d'1 feuille et je supprime des lignes qui correspondent =E0=20
un critere pr=E9cis.
Mon souci : A parir du moment ou je trouve la 1ere ligne =E0=20
supprimer, il me supprime toutes les lignes derriere (pb=20
du certainement au i=3Dwi-1). Si je le met en commentaire=20
l'=E9puration est incomplete et je dois repasser x fois pour=20
=E9puerer l'ensemble de mon fichier!!!

Merci pour votre aide pr=E9cieuse
Perrine
....................................
Wi =3D 1
Set Ws =3D Workbooks("Candidatures.xls").Sheets(1).Cells(1,=20
1)
With Ws
Do Until IsEmpty(.Cells(Wi, 1))
Application.StatusBar =3D "Veuillez patienter... " & Wi - 1=20
& " Trouv=E9 : " & Wt
If .Cells(Wi, 9) =3D "CDI" Then
If (.Cells(Wi, 15) + 15) < CDate(Now()) Then
Wt =3D Wt + 1
=20
Workbooks("CDI.xls").Sheets(1).Activate
Rows("2:2").Select
Selection.Insert Shift:=3DxlDown
Wy =3D 1
Do While Wy < 50
Workbooks("CDI.xls").Sheets(1).Cells(2, Wy)=20
=3D .Cells(Wi, Wy)
Wy =3D Wy + 1
Loop
.Rows(Wi).Delete
Wi =3D Wi - 1
End If
End If
F900:
Wi =3D Wi + 1
Loop
End With

2 réponses

Avatar
Pierre Fauconnier
Bonjour Perrine,

Lorsque tu supprimes des lignes dans une procédure, commence toujours par le
bas de ta feuille et remonte. Ainsi, tu pourras balayer une seule fois ta
feuille pour supprimer tes lignes.
Lorsque tu commences à balayer par le haut, la suppression d'une ligne
décale les lignes situées EN DESSOUS et tu risques donc de ne pas balayer
toutes tes lignes...

Cela convient-il?

--
Pierre Fauconnier ()
Les sept laids tuent ( Lewis Carol )
Remplacez nospam.nospam par pfi.be pour répondre. Merci

"Perrine" a écrit dans le message de
news:3c9d01c4af5e$c8ded590$
Bjr à toutes & tous,
J'ai un petit souci sur un delete. je balaye l'ensemble
d'1 feuille et je supprime des lignes qui correspondent à
un critere précis.
Mon souci : A parir du moment ou je trouve la 1ere ligne à
supprimer, il me supprime toutes les lignes derriere (pb
du certainement au i=wi-1). Si je le met en commentaire
l'épuration est incomplete et je dois repasser x fois pour
épuerer l'ensemble de mon fichier!!!

Merci pour votre aide précieuse
Perrine
....................................
Wi = 1
Set Ws = Workbooks("Candidatures.xls").Sheets(1).Cells(1,
1)
With Ws
Do Until IsEmpty(.Cells(Wi, 1))
Application.StatusBar = "Veuillez patienter... " & Wi - 1
& " Trouvé : " & Wt
If .Cells(Wi, 9) = "CDI" Then
If (.Cells(Wi, 15) + 15) < CDate(Now()) Then
Wt = Wt + 1

Workbooks("CDI.xls").Sheets(1).Activate
Rows("2:2").Select
Selection.Insert Shift:=xlDown
Wy = 1
Do While Wy < 50
Workbooks("CDI.xls").Sheets(1).Cells(2, Wy)
= .Cells(Wi, Wy)
Wy = Wy + 1
Loop
.Rows(Wi).Delete
Wi = Wi - 1
End If
End If
F900:
Wi = Wi + 1
Loop
End With
Avatar
Ok merci, donc je traite de bas en haut c'est top sauf que
je ne supprime pas de ligne je met à blanc la colonne A
des lignes correspondantes (à partir du script transmis !!!
=)
Merci
-----Message d'origine-----
Bonjour Perrine,

Lorsque tu supprimes des lignes dans une procédure,
commence toujours par le

bas de ta feuille et remonte. Ainsi, tu pourras balayer
une seule fois ta

feuille pour supprimer tes lignes.
Lorsque tu commences à balayer par le haut, la
suppression d'une ligne

décale les lignes situées EN DESSOUS et tu risques donc
de ne pas balayer

toutes tes lignes...

Cela convient-il?

--
Pierre Fauconnier ()
Les sept laids tuent ( Lewis Carol )
Remplacez nospam.nospam par pfi.be pour répondre. Merci

"Perrine" a écrit
dans le message de

news:3c9d01c4af5e$c8ded590$
Bjr à toutes & tous,
J'ai un petit souci sur un delete. je balaye l'ensemble
d'1 feuille et je supprime des lignes qui correspondent à
un critere précis.
Mon souci : A parir du moment ou je trouve la 1ere ligne à
supprimer, il me supprime toutes les lignes derriere (pb
du certainement au i=wi-1). Si je le met en commentaire
l'épuration est incomplete et je dois repasser x fois pour
épuerer l'ensemble de mon fichier!!!

Merci pour votre aide précieuse
Perrine
.....................................
Wi = 1
Set Ws = Workbooks("Candidatures.xls").Sheets(1).Cells(1,
1)
With Ws
Do Until IsEmpty(.Cells(Wi, 1))
Application.StatusBar = "Veuillez patienter... " & Wi - 1
& " Trouvé : " & Wt
If .Cells(Wi, 9) = "CDI" Then
If (.Cells(Wi, 15) + 15) < CDate(Now()) Then
Wt = Wt + 1

Workbooks("CDI.xls").Sheets(1).Activate
Rows("2:2").Select
Selection.Insert Shift:=xlDown
Wy = 1
Do While Wy < 50
Workbooks("CDI.xls").Sheets(1).Cells(2, Wy)
= .Cells(Wi, Wy)
Wy = Wy + 1
Loop
.Rows(Wi).Delete
Wi = Wi - 1
End If
End If
F900:
Wi = Wi + 1
Loop
End With


.