Pb au niveau du "loop"

  • Initiateur de la discussion Fredrennes
  • Date de début
F

Fredrennes

Guest
Re-hello,

Voici ma macro :

Sub suppression()
Sheets("datas").Select
Range("J1").Offset(1, 0).Select
Do Until ActiveCell = Range("J10000")
If ActiveCell = "FALSE" Then
selection.EntireRow.Delete
Else
ActiveCell.Offset(1, 0).Select
End If
Loop
Sheets("TCD").Select
Range("C20").Select
ActiveSheet.PivotTables("PivotTable5").RefreshTable
Cells.Select
Cells.EntireColumn.AutoFit
End Sub

Qd je presse F8, cela bloque à la ligne "loop" et le reste de la macro n'est pas lu...

Merci pour votre aide.

Cdlt

Fred
 
Z

zon

Guest
Bonsoir à tous,

Fred je supose que tu veux balayer J2 à J10000 et tester si false alors on supprime la ligne

or en comparant ActiveCell = Range("J10000"), tu compares la valeur c pour cela que ta boucle s'arrête la 1 ere fois

mais avec ActiveCell.address=range("J10000").address ta boucle se fera sur les 10000 lignes....



A+++
 
A

Alain

Guest
Bonjour,



Essayes avec :

Sub suppression()
Sheets("datas").Select
Range("J1").Offset(1, 0).Select
For i=1 to 10000
If ActiveCell = "FALSE" Then
selection.EntireRow.Delete
Else
ActiveCell.Offset(i, 0).Select
End If
next
Sheets("TCD").Select
Range("C20").Select
ActiveSheet.PivotTables("PivotTable5").RefreshTable
Cells.Select
Cells.EntireColumn.AutoFit
End Sub


@+
 
F

Fredrennes

Guest
Zon,

Cette partie de la macro fonctionne impec isolée :

Sub suppression()
Sheets("datas").Select
Range("J1").Offset(1, 0).Select
Do Until ActiveCell = Range("J10000")
If ActiveCell = "FALSE" Then
selection.EntireRow.Delete
Else
ActiveCell.Offset(1, 0).Select
End If
Loop
End Sub

Le problème est l'association des 2, tu vois ce que je veux dire ?

Alain, je vais tester ça, merci :))

Cdlt

Fred
 
Z

zon

Guest
Re,


ce qui me réconforte c 'est qu'Alain a compris la même chose que moi tester la plage J2 J10000 mais il a fait d'une façon différente de toi, je reprends

"or en comparant ActiveCell = Range("J10000"), tu compares la valeur de 2 cellules pour cela que ta boucle s'arrête la 1 ere fois

mais avec ActiveCell.address=range("J10000").address ta boucle se fera sur les 10000 lignes.... "

Je ne vois pas où est le pb dans l'association des 2 puisque ta boucle est la même....


A+++
 
F

Fredrennes

Guest
Hello,

Je crois que je me suis mal exprimé :

La 1ère partie de ma macro marche impec lorsqu'elle est isolée :

Sub suppression()
Sheets("datas").Select
Range("J1").Offset(1, 0).Select
Do Until ActiveCell = Range("J10000")
If ActiveCell = "FALSE" Then
selection.EntireRow.Delete
Else
ActiveCell.Offset(1, 0).Select
End If
Loop
End Sub

Cette macro me permet de supprimer toutes les lignes lorsqu'il y a en colonne J la mention "False" à l'intérieur d'une cellule.

La fonction "Loop" me permet de faire agir la macro tant que toutes les lignes n'ont pas été supprimées.....en effet, la suppression d'une ligne entraîne la remontée de la future cellule active qui devrait théoriquement être traitée......donc en remontant celle-ci évite le traitement d'où l'utilisation de la fonction "Loop".


Mon pb arrive....

Si je laisse la fonction "Loop" en insérant une nouvelle macro à la suite du style :

Sub Update_Total()
Sheets("datas").Select
Range("J1").Offset(1, 0).Select
Do Until ActiveCell = Range("J10000")
If ActiveCell = "FALSE" Then
selection.EntireRow.Delete
Else
ActiveCell.Offset(1, 0).Select
End If
Loop
Sheets("TCD").Select
Range("C16").Select
ActiveSheet.PivotTables("PivotTable5").RefreshTable
Cells.Select
Cells.EntireColumn.AutoFit
End Sub

Ma macro fonctionne mais si je fais "F8" pour la contrôler, cela bloque au niveau de la focntion "Loop", cela ne va pas plus bas......est-ce qu'il y a une conséquence ?

Merci à vous.

Cdlt

Fred
 

Statistiques des forums

Discussions
314 656
Messages
2 111 610
Membres
111 224
dernier inscrit
Test66