[VBS][Résolu] Supprimer une ligne dans Excel

Supprimer une ligne dans Excel [VBS][Résolu] - VB/VBA/VBS - Programmation

Marsh Posté le 24-06-2009 à 16:46:48    

Je desire supprimer un ensemble de ligne dans Excel, le tout piloté par un script en VBS.
 
Je sais ouvrir un fichier Excel:
 
Set objExcel = CreateObject("Excel.Application" )  
objExcel.Visible = True
objExcel.DisplayAlerts = False
Set objWorkbook = objExcel.Workbooks.Open("c:\MonFichier.xls" )
 
et y écrire des données:
 
' Ecriture dans excel
Set onglet = objExcel.Workbooks(1).Worksheets(1)
onglet.Cells(1, 1).Value = "A"
onglet.Cells(2, 1).Value = "B"
 
Mais comment supprimer une ligne?
Et connaissez vous une documentation assez complète sur le pilotage des documents Excel (et Access si possible) depuis VBS? (autre que la documentation de microsoft qui est vraiment nulle par rapport à ce que j'ai pu consulter pour des langages comme java, php, c, ...)?
 
Je vous remercie d'avance pour vos réponses


Message édité par cinejapan le 26-06-2009 à 21:47:02
Reply

Marsh Posté le 24-06-2009 à 16:46:48   

Reply

Marsh Posté le 24-06-2009 à 18:28:29    

Code :
  1. Rows("1:10" ).Delete Shift:=xlUp


par exemple, pour supprimer les lignes de 1 à 10, avec un décalage du reste vers le haut.
 
En fait, un moyen simple de récupérer le code de ce que tu veux : tu lances Excel, tu fais "Outils->Macro->Nouvelle macro" et tu exécutes les actions que tu veux. Ensuite, "Visual Basic Editor", et tu récupères le code tout fait de ce que tu as enregistré. Il ne te reste plus qu'à l'appliquer en VBS mais c'est pas trop compliqué.


---------------
If you think it could look good, then I guess it should
Reply

Marsh Posté le 25-06-2009 à 14:01:23    

Merci pour cette réponse, mais je ne suis pas sûr que la syntaxe soit la même :)
J'ai essayé d'utiliser les propriétés/objet "Rows" d'un objets "Worksheets" sans succès.
 
Exemples ne fonctionnant pas :
Workbooks(1).Worksheets(1).Rows("1" ).Delete
Workbooks(1).Worksheets(1).Rows("1:1" ).Delete

Reply

Marsh Posté le 25-06-2009 à 16:56:41    

cinejapan a écrit :

Merci pour cette réponse, mais je ne suis pas sûr que la syntaxe soit la même :)
J'ai essayé d'utiliser les propriétés/objet "Rows" d'un objets "Worksheets" sans succès.
 
Exemples ne fonctionnant pas :
Workbooks(1).Worksheets(1).Rows("1" ).Delete
Workbooks(1).Worksheets(1).Rows("1:1" ).Delete


Bizarre, je pensais que la syntaxe était similaire, ça n'a pas l'air d'être le cas. Du coup, je vois pas trop.
 
1 -> Est-ce que ça change quelque chose si tu remets ton objet devant : "objExcel.Workbooks(1).Worksheets(1).Rows("1:1" ).Delete" ?
2 -> Est-ce que ça vient de l'instruction "Delete" ou est-ce que la sélection ne fonctionne pas non plus : "Workbooks(1).Worksheets(1).Rows("1:1" ).Select" ?


---------------
If you think it could look good, then I guess it should
Reply

Marsh Posté le 25-06-2009 à 17:05:16    

Rows("1:10" ).Delete Shift:=xlUp
 
=> les constantes ne sont pas définies dans VBS, donc xlUP par exemple va valloir zéro... il faut au moins trouver la valeur numérique de cette constante (que je ne connais pas désolé)


---------------
http://poemes.iceteapeche.com - http://www.simuland.net
Reply

Marsh Posté le 25-06-2009 à 17:20:29    

fluminis a écrit :

Rows("1:10" ).Delete Shift:=xlUp
 
=> les constantes ne sont pas définies dans VBS, donc xlUP par exemple va valloir zéro... il faut au moins trouver la valeur numérique de cette constante (que je ne connais pas désolé)


Bien vu, j'y avais pas pensé. Quand j'affiche la valeur xlUp dans Excel, il me retourne le nombre "-4162", reste à savoir si c'est utilisable sur VBS.


---------------
If you think it could look good, then I guess it should
Reply

Marsh Posté le 26-06-2009 à 21:45:59    

J'ai bien mis l'objet objExcel devant les lignes, j'ai réécris rapidement sur le forum sans mettre tout le détail.
 
J'ai trouvé, avec beaucoup de mal, le code suivant:
 
Set oRange = objExcel.Workbooks(1).Worksheets(1).Range("A1:A1" )
oRange.EntireRow.Delete
 
Je ne sais pas s'il y a plus directe comme méthode mais ça fonctionne :)
 
Merci pour votre aide ;)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed