supprimer une ligne d'excel par VBA

myelmehdi

Habitué
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#.
Code:
Sub Macro4()

For i = 1 To i = 2500
If Cells(i, 11) = "0,00" Then
Rows("i:i").Select
Selection.Delete Shift:=xlUp
End If
Next i

End Sub

merci
 

Freeman23

Expert
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 :

Code:
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 :

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

myelmehdi

Habitué
voilà le code que j'ai mis mnt:
Code:
Sub Macro4()

For i = 1 To i = 2500
If Cells(i, 11) = 0 Then
Rows(i & ":" & i).Delete xlUp
End If
Next i
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
 

zeb

Modérateur
Toujours vrai :[fixed]0 = 0,0[/fixed]

Toujours faux :[fixed]"0" = "0,0"[/fixed]

Ta syntaxe pour la boucle For n'est pas bonne. Cf. l'aide en ligne !

La ligne i peut aussi s'écrire :[fixed]Rows(i)....[/fixed]C'est plus clair, quand même. (Bah alors Freeman ?)

Quant à la suppression de lignes dans un tableau, j'ai fait un petit topo sur le sujet :
 

zeb

Modérateur
[Hors sujet]
Vivent les vacances !
:heink: Un peu froid ? Tu n'aurais pu aller au soleil plutôt ;)
[/Hors sujet]
 

myelmehdi

Habitué
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"
Code:
Sub NA()


For i = 2000 To 1 Step -1

If Cells(i, 17) = "<>#N/A" Then
Rows(i).Delete
End If
Next i
End Sub

merci
 

zeb

Modérateur
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 [fixed]Cells(..) = [/fixed]l'interpréteur comprend [fixed]Cells(..).Value = [/fixed]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 :[fixed]Cells(..).Text = [/fixed]



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.
 

zeb

Modérateur
Pour savoir si une cellule est en erreur ou pas :[fixed]Cells(r, c).Errors.Item(xlEvaluateToError).Value[/fixed]
 

zeb

Modérateur
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.
 

Freeman23

Expert
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"
 

Freeman23

Expert
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 :
Code:
?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.
 

zeb

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

Freeman l'a dit, Zeb l'a fait :whistle:
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 125
Messages
6 717 792
Membres
1 586 361
Dernier membre
Florian3549
Partager cette page
Haut