Se connecter avec
S'enregistrer | Connectez-vous

supprimer une ligne d'excel par VBA

Dernière réponse : dans Programmation
Partagez

Bonjour à tous
Voilà j'ai essayé de créer une macro mais apparemment il doit y avoir une petite erreur.
Donc je voudrai que la macro supprime toute la ligne s'il y a un "0,00) dans la cellue K#.
  1. Sub Macro4()
  2.  
  3. For i = 1 To i = 2500
  4. If Cells(i, 11) = "0,00" Then
  5. Rows("i:i").Select
  6. Selection.Delete Shift:=xlUp
  7. End If
  8. Next i
  9.  
  10. End Sub


merci

Autres pages sur : supprimer ligne excel vba

Qu'est ce qui se passe exactement, ca affiche un bug ?
De plus le 0.00 c'est surement du numérique donc pas besoin de mettre des guillemets et peut être que tu as mis une valeur par défaut.

Dernier truc le plus important :

  1. Rows("i:i").Delete xlUp


Désolé mais la ligne i:i n'existe pas, si par contre tu parle de la ligne donc la valeur est celle de ta variable i tu devrais plutot ecrire :

  1. Rows(i & ":" & i).delete xlUp

voilà le code que j'ai mis mnt:
  1. Sub Macro4()
  2.  
  3. For i = 1 To i = 2500
  4. If Cells(i, 11) = 0 Then
  5. Rows(i & ":" & i).Delete xlUp
  6. End If
  7. Next i
  8. End Sub

mais ça marche toujours pas. En fait la macro ne se bloque pas. en l'éxécutant "pas à pas" j'ai vu que ça passe de "for i=1 to i=2500" à"end if" directement.
la valeur recherchée c'est bien 0,00
Contenus similaires

rebonjour,
voilà j'ai un autre petit problème, je voudrais effacer la ligne si la cellule en Q est différente de #N/A.
Voici mon code, mais il saute toujours "rows(i).delete"
  1. Sub NA()
  2.  
  3.  
  4. For i = 2000 To 1 Step -1
  5.  
  6. If Cells(i, 17) = "<>#N/A" Then
  7. Rows(i).Delete
  8. End If
  9. Next i
  10. End Sub


merci

Pourquoi y-a-t'il des <> dans ton expression ?

On confond souvent la valeur (Value) et l'affichage (Text). (Faire le test pour une date par exemple)

Quand tu écris
Cells(..) =
l'interpréteur comprend
Cells(..).Value =
Or la valeur n'existe pas puisqu'il y a une erreur !

Donc puisque ce n'est pas la valeur mais ce qui est affiché que tu veux comparer, utilise la syntaxe complète :
Cells(..).Text =




PS: Fais un effort, indente ton code. Ceci dit autant pour que ce soit agréable à lire pour chacun, mais surtout pour que tu "vois" mieux ton code. Conseil de vieux baroudeur du code.

Et non, Freeman, IsError ne gère pas les erreurs Excel, mais les erreurs gérées par le code VB par l'intermédiaire de CVErr.

En revanche, l'utilisation de EstErreur dans la feuille de calcul est judicieux, mais relève plus de l'utilisation d'Excel que de la programmation VB. L'utilisation de WorksheetFunction.IsNA (Et de toute la famille WorksheetFunction.IsErr) est quand même possible.

Pour le IsError fais un test, je peut me tromper mais en faisant une division par zéro tu teste le Iserror du résultat et ca renvoie true. Je l'ai déjà utiliser et j'ai jamais eu de cas tordu... Mais bon EstErreur c'est quand meme plus "propre"

un exemple :

en A1 tu met 10, en A2 tu mets 0 et en A3 tu fais "=A1/A2".
Cela provoque l'erreur #div/0 et tu met le curseur sur la cellule A3 et en mode debug tu testes :
  1. ?iserror(Activecell)

Après tu peux te mettre sur A2 ou A1 pour vérifier.

Tu peux tester aussi avec une rechercheV si la valeur renvoyée est #N/A (pas trouvé) cela fonctionne aussi.

Ah bah oui, ok.
Bêtement, je faisais le calcul A1/A2 en VB pour vérifier :pfff: 

novice_33 a dit :
je peut me tromper
Freeman l'a dit, Zeb l'a fait :whistle: 
Posez votre question