FORUM Tom's Hardware » Programmation » VB / VBA / VBS » supprimer une ligne d'excel par VBA
 

supprimer une ligne d'excel par VBA

Il y a 256 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici
Ajouter une réponse



 Mot :   Pseudo :  
 
Bas de page
Auteur
 Sujet : supprimer une ligne d'excel par VBA
 
Plus d'informations

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 :
  1. Sub Macro4()
  2. For i = 1 To i = 2500
  3. If Cells(i, 11) = "0,00" Then
  4. Rows("i:i" ).Select
  5. Selection.Delete Shift:=xlUp
  6. End If
  7. Next i
  8. End Sub


 
merci

Plus d'informations

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

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


---------------
S'il n'y a pas de solution c'est qu'il n'y pas de problème
Plus d'informations

voilà le code que j'ai mis mnt:

Code :
  1. Sub Macro4()
  2. For i = 1 To i = 2500
  3. If Cells(i, 11) = 0 Then
  4. Rows(i & ":" & i).Delete xlUp
  5. End If
  6. Next i
  7. 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
Profil : Modérateur libre
Plus d'informations

Toujours vrai :

0 = 0,0


 
Toujours faux :

"0" = "0,0"


 
Ta syntaxe pour la boucle For n'est pas bonne. Cf. l'aide en ligne !
 
La ligne i peut aussi s'écrire :

Rows(i)....

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 : http://www.presence-pc.com/forum/p [...] htm#t34094


---------------
Règlement du forum / Règlement de Programmation / Règlement du Monde de Linux euh, n'y en a pas...
Plus d'informations

Bah Freeman il revient juste de vacances il est un peu froid :P


---------------
S'il n'y a pas de solution c'est qu'il n'y pas de problème
zeb
Profil : Modérateur libre
Plus d'informations

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


---------------
Règlement du forum / Règlement de Programmation / Règlement du Monde de Linux euh, n'y en a pas...
Plus d'informations

c'est bon merci

Profil : Pointeur
Plus d'informations

pour le hs il ya blabla :o


---------------
Da Bidz Triad©®™: Bidz Interceptor
.:: Smileyz version 4.2 [050625]::. -- Code source disponible sous licence GPL.
[u
zeb
Profil : Modérateur libre
Plus d'informations

:(
Oui Maître


---------------
Règlement du forum / Règlement de Programmation / Règlement du Monde de Linux euh, n'y en a pas...
Plus d'informations

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 :
  1. Sub NA()
  2. For i = 2000 To 1 Step -1
  3. If Cells(i, 17) = "<>#N/A" Then
  4. Rows(i).Delete
  5. End If
  6. Next i
  7. End Sub


 
merci

zeb
Profil : Modérateur libre
Plus d'informations

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.


---------------
Règlement du forum / Règlement de Programmation / Règlement du Monde de Linux euh, n'y en a pas...
zeb
Profil : Modérateur libre
Plus d'informations

Pour savoir si une cellule est en erreur ou pas :

Cells(r, c).Errors.Item(xlEvaluateToError).Value


---------------
Règlement du forum / Règlement de Programmation / Règlement du Monde de Linux euh, n'y en a pas...
Plus d'informations

Corrige ta formule par exemple en testant EstErreur().
 
Ou encore en vba avec isError().


---------------
S'il n'y a pas de solution c'est qu'il n'y pas de problème
zeb
Profil : Modérateur libre
Plus d'informations

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.


Message édité par zeb le 19-09-2007 à 13:52:22

---------------
Règlement du forum / Règlement de Programmation / Règlement du Monde de Linux euh, n'y en a pas...
Plus d'informations

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"


---------------
S'il n'y a pas de solution c'est qu'il n'y pas de problème
Plus d'informations

merci bcp, ça marche. je l'ai fait sur excel.

zeb
Profil : Modérateur libre
Plus d'informations

Super myelmehdi \:o/
 
 
 
Freeman23  :/  Un exemple si tu as.


---------------
Règlement du forum / Règlement de Programmation / Règlement du Monde de Linux euh, n'y en a pas...
Plus d'informations

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


---------------
S'il n'y a pas de solution c'est qu'il n'y pas de problème
zeb
Profil : Modérateur libre
Plus d'informations

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

a écrit :

je peut me tromper

Freeman l'a dit, Zeb l'a fait :whistle:


---------------
Règlement du forum / Règlement de Programmation / Règlement du Monde de Linux euh, n'y en a pas...
Plus d'informations

lol, chacun son tour ;)


---------------
S'il n'y a pas de solution c'est qu'il n'y pas de problème

Aller à :
Ajouter une réponse
  FORUM Tom's Hardware » Programmation » VB / VBA / VBS » supprimer une ligne d'excel par VBA
 

Annonces Google