begin process at 2012 02 16 04:33:48
  Trouver un code source :
 
dans
 
Accueil > 

Tutoriels

 > 

OLE, DDE, Automation

 > Manipuler des fichiers excel sous VB6 sans référencer excel et sans laisser de processus dans le gestionnaire des taches

Manipuler des fichiers excel sous VB6 sans référencer excel et sans laisser de processus dans le gestionnaire des taches


 Information sur le tutoriel

Note :
Aucune note

 Description

Aprés de nombreux désagrément de programmation d'une application devant manipuler des fichiers excel en automation (processus restant en mémoire à la fermeture du classeur, références différentes d'excel suivant le poste de travail utilisé) , j'ai du, dans un premier temps,déporter mon code en vba sur les feuille de calcul; mais aprés acharnement, j'ai enfin trouvé la solution.

Tutorial

Code utilisé fréquement pour manipuler les fichiers excel sous VB6 :

'Déclaration des variables
Dim appExcel As Excel.Application 'Application Excel
Dim wbExcel As Excel.Workbook 'Classeur Excel
Dim wsExcel As Excel.Worksheet 'Feuille Excel

'Ouverture de l'application
Set appExcel = CreateObject("Excel.Application")
'Ouverture d'un fichier Excel
Set wbExcel = appExcel.Workbooks.Open("C:\MonFichierExcel.xls")
'wsExcel correspond à la première feuille du fichier
Set wsExcel = wbExcel.Worksheets(1) 

   '
   ' code divers
   '
wbExcel.save
wbExcel.Close
appExcel.Quit
Set wsExcel = Nothing
Set wbExcel = Nothing
Set appExcel = Nothing

Et ce code me genere des processus en mémoire qu'il faut tuer en fermant l'application et en plus il faut référencer excel dans l'appli. Hors dévellopement sur Excel 2003 et utlisation sur des postes utilisant Excel 2000 -> gros BUG

J'en suis venu à essayer :

Dim appExcel As Object
Dim wbExcel As Object
Dim wsExcel As Object
Set appExcel = CreateObject("Excel.application")
Set wbExcel = appExcel.Workbooks.Open("C:\MonFichierExcel.xls")
Set wsExcel = wbExcel.ActiveSheet
   '
   ' code divers
   '
wbExcel.save
wbExcel.Close
appExcel.Quit
Set wsExcel = Nothing
Set wbExcel = Nothing
Set appExcel = Nothing

notez la difference dans la déclaration des variables
et cela à résolu mes deux gros problemes
Cependant, il est à tenir compte que comme excel n'est pas référencé, la syntaxe du code excel sous vb6 doit etre maitrisé (on perd l'intuitivité de la programmation). Il faut à tous moment rappeler les objects crée pour faire fonctionné le code; je m'explique :

Avec le référencement d'excel il suffit d'écrire:
   Sheets(2).Range("A1").value = "" pour remplir une cellule

Sans le référencement vous serez obligé d'écrire :
   wbExcel.Sheets(2).Range("A1").value = ""


Je pense que ce tutoriel servira à un bon nombre de programmeur débutant comme moi

Commentaires

Commentaire de infodragon le 28/05/2009 15:10:42

très bien et merci vous êtes sur la bonne voie

Commentaire de famdsm le 06/06/2009 00:52:47

c'est bien
mais je cherche comment remplir les cellule de la meme colone l'une aprés l'autre.

Commentaire de nathalie6990 le 10/06/2009 16:01:12

merci, ca fonctionne sans pb,
savez comment faire un save as du fichier excel ouvert et modifié
pour l'enregistrer sous un autre nom?

Commentaire de simodel le 15/06/2009 20:14:14

Très bien.

Commentaire de theghostwolf le 06/07/2009 14:15:48

c'est bien ça marche

Commentaire de hcadieu le 27/08/2009 19:38:15

Bonjour,

c'est bien, tu as découvert le late-binding ! C'est en effet la facon la plus simple pour manipuler des objets Microsoft office (ici excel) sans etre contraint à une référence excel 2003 ou Excel 2002 etc..., le seul ennui est durant la programmation, tu ne peux plus voir les objets et leurs methodes...
Bonne continuation..
Et pour plus de renseignements tape "excel late binding" dans google...

Commentaire de ahmt101 le 17/10/2009 18:14:13

bien ça marche

Commentaire de PJahex le 09/12/2009 17:01:23

Bonjour,
Si le souci est de voir les objets et leurs méthodes, tu commence par la première voie et à la fin tu remplacera ...

Commentaire de doussabel le 21/12/2009 19:04:32

merci infiniment,c'est simple et génial!!!!

Commentaire de freefreelance le 06/01/2010 20:27:49

merci bcp, j'aime bien savoir si tu as une idé comment affiché des info d'un  tableau exel sur afficheur numérique independant ...

Commentaire de naweltr le 25/01/2010 15:48:33

Bonjour
svp aide moi pour gérer cette application car j'ai besoin d'elle mais je ne sais pas comment elle fonctionne

Commentaire de hmd2010 le 14/04/2010 20:25:08

j'aimerais bien savoir comment concevoir un programme avec vb6 qui peut lire des points à partir d'un fichier dwg (autocad) et les afficher dans les cellules d'une feuille Excel.
Si un des membres le sait, je lui serrais trés reconnaissant s'il peut me le communiquer au plutot posible.
Et meci, merci d'avance.

Commentaire de hmd2010 le 14/04/2010 20:50:35

J'aimerai bien me reneigner sur les sources tutoriels relatifs à l'utilisation des macros visual basic dans autocad

Commentaire de l0r3nz1 le 23/04/2010 10:57:02

bonjour à tous,

de manière générale comment peut on savoir quel objet on peut créer et quel objet non?

pour ecxel c'est facile c'est très utilisé mais on peut créér des objets pour toutes les applications installées sur notre ordinateur je crois:

exemple quan j'avais mapinfo je pouvais créér un objet "mapinfo.Application" et lancer des script mapbasic (programmation de mapinfo) avec objet.run
on peut aussi créér des objets outlook; "outlook.Application"? (un truc qui ressemble)

mais de manière générale comment savoir quel terme utiliser pour lancer un programme "graphpad prism" par exemple?
"graphpad.Application"?
on test au hasard?
ou voir la liste des objet que l'on peut créér?

je continue à checher mais si quelqu'un peut me renseigner, se serait génial.

merci. @+.

Commentaire de Flocreate le 05/05/2010 07:45:07

"
Avec le référencement d'excel il suffit d'écrire:
   Sheets(2).Range("A1").value = "" pour remplir une cellule

Sans le référencement vous serez obligé d'écrire :
   wbExcel.Sheets(2).Range("A1").value = ""
"
pour ma part je suis tout a fait contre l'emploie de "Sheets(2).Range", surtout quand on utilise plusieur Workbook en même temps. (à bas les .activate et au feux les .select !!!)
^^ désolé, c'est une alergie que j'ai contracté en bossant pour thales

"ou voir la liste des objet que l'on peut créér?"

Je pense que la première démarche est de chercher sur internet, sur MSDN ou sur le site de l'entreprise qui a fait le programme

La seconde démarche serrait de trouver l'OCX ou la DLL qui est chargée lors du late binding, la charger dans le projet, lister ce qui t'interresse et enfin la déréférencer.

La dernière méthode (je n'en suis absolument pas sur) serrait de regarder avec un logiciel adapté ce qu'il y a dans le ventre de la dll (je sais plus le nom du programme mais ca existe) voir même décompiler mais c illégal et bravo a celui qui a le niveau pour lire dedans aprés ^^ (a déja essayé :s )

si tu trouve une piste je suis interresé. (marre des process Excel qui restent ;( )

Commentaire de maisotra le 12/05/2010 20:07:03

Je cherche un décripteur des fichier exe

Commentaire de brrahim le 25/08/2010 15:43:00

JE KLIK YA RIEN

Commentaire de dionysusgreek le 22/12/2010 12:18:31

j'ai petit problem dans la declaration "Erreur 1 Type 'Excel.Workbook' non défini. xxxxx\Bureau\bln\bln\Module1.vb 77 20 bln"
px tu m'aider stp et merci pour cette tutorial

Commentaire de opgiat le 04/01/2011 20:55:45

je voudrais savoir si ya pos sur la feuille excelibilite de programmer le saut de page

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 11,263 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales