M
Moa
Guest
Salut à tous les VBtistes !
Suite à un post de Dominique du 25/07, concernant la vitesse d'exécution d'une macro, j'ai décidé de modifier une de mes macros.
(Je sais @+Thierry, que j'ai déjà posé la question, à la suite de ce même post, mais vu qu'il se trouve 4 pages en arrière, je doute que quelqu'un ne le lise).
Donc voici ma macro :
Sub DeleteUn()
Sheets("Feuil1").Select
Application.Calculation = xlManual
Sheets("Feuil1").Activate
i = 1
While Range("A3").Offset(i).Value <> ""
If Range("A3").Offset(i).Value = 1 Then
Range("A3").Offset(i).EntireRow.Select
Selection.Delete shift:=xlUp
i = i - 1
End If
i = i + 1
Wend
Application.Calculation = xlCalculationAutomatic
End Sub
Comme @+Thierry et Ti, vous préconisiez de supprimer les "Select", j'ai modofié :
Range("A3").Offset(i).EntireRow.Select
Selection.Delete shift:=xlUp
Par : Range("A3").Offset(i).EntireRow.Delete
Et ça marche
Mais j'ai cherché à changer While...Wend par For...Each, et là, je galère.
Et voilà ma nouvelle macro :
Sub TestDeleteUn()
Dim Cellule As Range
For Each Cellule In Range("A:A")
If Cellule.Value = 1 Then
Cellule.EntireRow.Delete
End If
Next Cellule
End Sub
J'ai omis le départ à la cellule 3, volontairement.
Et là j'ai un hic...
La macro fonctionne bien, mais je dois la lancer trois ou quatre fois, pour qu'elle delete toutes les lignes dont la colonne "A" est remplie par un "1".
Et mon deuxième problème, est d'arriver à faire commencer cette macro qu'à partir de la ligne 3.
Donc, si un Vbtiste charitable, pris de pitié par ma modeste connaissance, voulait bien m'aiguiller un Gros pNeu, ce serait vraiment très très sympa.
Merci d'avance à vous tous !
@ +
Moa
Suite à un post de Dominique du 25/07, concernant la vitesse d'exécution d'une macro, j'ai décidé de modifier une de mes macros.
(Je sais @+Thierry, que j'ai déjà posé la question, à la suite de ce même post, mais vu qu'il se trouve 4 pages en arrière, je doute que quelqu'un ne le lise).
Donc voici ma macro :
Sub DeleteUn()
Sheets("Feuil1").Select
Application.Calculation = xlManual
Sheets("Feuil1").Activate
i = 1
While Range("A3").Offset(i).Value <> ""
If Range("A3").Offset(i).Value = 1 Then
Range("A3").Offset(i).EntireRow.Select
Selection.Delete shift:=xlUp
i = i - 1
End If
i = i + 1
Wend
Application.Calculation = xlCalculationAutomatic
End Sub
Comme @+Thierry et Ti, vous préconisiez de supprimer les "Select", j'ai modofié :
Range("A3").Offset(i).EntireRow.Select
Selection.Delete shift:=xlUp
Par : Range("A3").Offset(i).EntireRow.Delete
Et ça marche
Mais j'ai cherché à changer While...Wend par For...Each, et là, je galère.
Et voilà ma nouvelle macro :
Sub TestDeleteUn()
Dim Cellule As Range
For Each Cellule In Range("A:A")
If Cellule.Value = 1 Then
Cellule.EntireRow.Delete
End If
Next Cellule
End Sub
J'ai omis le départ à la cellule 3, volontairement.
Et là j'ai un hic...
La macro fonctionne bien, mais je dois la lancer trois ou quatre fois, pour qu'elle delete toutes les lignes dont la colonne "A" est remplie par un "1".
Et mon deuxième problème, est d'arriver à faire commencer cette macro qu'à partir de la ligne 3.
Donc, si un Vbtiste charitable, pris de pitié par ma modeste connaissance, voulait bien m'aiguiller un Gros pNeu, ce serait vraiment très très sympa.
Merci d'avance à vous tous !
@ +
Moa