Autres Boucle qui ne boucle pas ....

3tata6111165

XLDnaute Nouveau
bonjour a tous j'ai un petit probleme la macro ci dessous fonctionne mais ne boucle pas il faut que je click sur la souri pour faire effacer les lignes qui reponde au test
merci si vous avez une solutions moi je ne vois pas ou cela bloque

Sub toto()
Sheets("w").Select
With Sheets("w")
v1 = Cells(1, 1).Value
x = Application.WorksheetFunction.Max(Columns(4))
End With

i = 1

Do While Cells(i, 1).Value <> ""

If Cells(i, 1).Value = v1 And Cells(i, 4).Value < x Then
Rows(i).EntireRow.Delete
Cells(12, 1).Value = x 'pour visuel
Cells(12, 2).Value = v1 ' pour visuel
End If

i = i + 1
Loop


End Sub
 

danielco

XLDnaute Impliqué
Je ne comprends pas le "With". Quand on supprime des lignes, il faut commencer par la fin. Essaie :

VB:
Sub totobis()
  Sheets("w").Select
  With Sheets("w")
    v1 = Cells(1, 1).Value
    x = Application.WorksheetFunction.Max(Columns(4))
  End With
  For i = Cells(1, 1).End(xlDown).Row To 1 Step -1
    If Cells(i, 1).Value = v1 And Cells(i, 4).Value < x Then
      Rows(i).EntireRow.Delete
      Cells(12, 1).Value = x 'pour visuel
      Cells(12, 2).Value = v1 ' pour visuel
    End If
  Next i
End Sub
Cordialement.

Daniel
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil,

Si j'ai bien compris la donne, une autre façon de faire (sans boucle)
VB:
Sub tata()
Dim DL&, x
DL = Cells(Rows.Count, 1).End(3).Row
x = Application.Max(Columns(4))
Cells(2, Columns.Count).Resize(DL - 1).Formula = _
"=IF(AND(A2=$A$1,D2<" & x & "),""$"",1)"
Application.ScreenUpdating = False
Columns(Columns.Count).SpecialCells(-4123, 2).EntireRow.Delete
End Sub
 

3tata6111165

XLDnaute Nouveau
merci a tous

danielco ca fonctionne a merveille
>question pourquoi ma macro fonctionne au lancement puis au click de souris ? (le test ce fais bien et efface les lignes correspondantes mais il faut que je reclique hors sub)
staple1600 meme Pb que moi n'efface qu'une ligne clique de souris obliger pour les autres- puis erreur 1004 pas de cellule correspondante

cordialement et merci encors
laurent
 

Staple1600

XLDnaute Barbatruc
Re

Et comme cela?
Code:
Sub titi()
Dim DL&, x
DL = Cells(Rows.Count, 1).End(3).Row
x = Application.Max(Columns(4))
Cells(2, Columns.Count).Resize(DL - 1).Formula = _
"=IF(AND(A2=$A$1,D2<" & x & "),""$"",1)"
Application.ScreenUpdating = False
On Error Resume Next
Columns(Columns.Count).SpecialCells(-4123, 2).EntireRow.Delete
End Sub
 

3tata6111165

XLDnaute Nouveau
danielco cest vrais le with ne sert a rien
mais j'aimerais bien comprendre pourquoi ma macro fonctionne mais ne boucle pas .....

merci
 

danielco

XLDnaute Impliqué
>question pourquoi ma macro fonctionne au lancement puis au click de souris ? (le test ce fais bien et efface les lignes correspondantes mais il faut que je reclique hors sub)
Je ne comprends pas. Tu exécutes la macro depuis Excel, ou depuis la fenêtre VBE ? Explique précisément ce que tu fais.

Daniel
 

3tata6111165

XLDnaute Nouveau
Je ne comprends pas. Tu exécutes la macro depuis Excel, ou depuis la fenêtre VBE ? Explique précisément ce que tu fais.

Daniel
j'execute depuis la fenetre vbe
la macro est dans un module
je lance la macro
le test ce fais et efface une des lignes correspondante
puis plus rien
je clique sur la souris et cela efface une autre ligne et cela jusqu'a la derniere ligne repondant au test
- est ce simplement que la macro reste active

merci
laurent
 

danielco

XLDnaute Impliqué
danielco cest vrais le with ne sert a rien
mais j'aimerais bien comprendre pourquoi ma macro fonctionne mais ne boucle pas .....

merci
Admettons que les lignes 2 et 3 soient à supprimer. Quand i=2, la ligne 2 est supprimée et la ligne 3 devient la ligne 2. En même temps, la valeur de i passe de 2 à 3. Ce qui fait que la ligne 2 (initialement ligne 3) n'est pas testée. C'est pourquoi, il faut commencer par tester la dernière ligne.

Daniel
 

danielco

XLDnaute Impliqué
j'execute depuis la fenetre vbe
la macro est dans un module
je lance la macro
le test ce fais et efface une des lignes correspondante
puis plus rien
je clique sur la souris et cela efface une autre ligne et cela jusqu'a la derniere ligne repondant au test
- est ce simplement que la macro reste active

merci
laurent
Il semblerait que tu aies mis des points d'arrêt. Ferme la fenêtre et rouvre-la.

Daniel
 

Staple1600

XLDnaute Barbatruc
Re

laurent
Pourtant, chez moi sur mon fichier de test, cela fonctionne, et les lignes sont supprimées
Il est donc peut-être opportun que tu joignes un fichier exemple, non?
On y verrait tout de suite plus clair ;)
 

3tata6111165

XLDnaute Nouveau
Admettons que les lignes 2 et 3 soient à supprimer. Quand i=2, la ligne 2 est supprimée et la ligne 3 devient la ligne 2. En même temps, la valeur de i passe de 2 à 3. Ce qui fait que la ligne 2 (initialement ligne 3) n'est pas testée. C'est pourquoi, il faut commencer par tester la dernière ligne.

Daniel
oups logique......

merci
 

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas