komzy60
Messages postés15Date d'inscriptionmardi 26 octobre 2004StatutMembreDernière intervention31 décembre 2004
-
25 nov. 2004 à 09:51
cs_jperre
Messages postés268Date d'inscriptionlundi 9 janvier 2006StatutMembreDernière intervention19 janvier 2017
-
9 janv. 2006 à 15:12
Bonjour je mets en forme un fichier excel via VB.Je voudrais savoir s'il est possible de créer une macro excel mais sous vb,pour la réutiliser ensuite dans mon fichier .xls
cs_Prince Charmant
Messages postés34Date d'inscriptionmardi 9 novembre 2004StatutMembreDernière intervention30 novembre 2004 25 nov. 2004 à 10:14
Salut,
il esy tout a fait possible de créer tes macro directement en VB. Toutefois, il ne faut pas oublier d'utiliser les références vers Excel (menu Projets/Références).
Sinon, tu peux créer ta macro avec l'interface VB (pour application) fournis par le pack office et ensuite faire un copier/coller dans un sens ou dans l'autre.
cs_jperre
Messages postés268Date d'inscriptionlundi 9 janvier 2006StatutMembreDernière intervention19 janvier 20172 9 janv. 2006 à 15:12
J'ai utilisé fréquemment la commande de macros Excel à partir d'une application VB6. J'ai rencontré des difficultés lorsque plusieurs versions d'Excel cohabitaient sur l'ordinateur utilisant l'application VB6. Après un contact auprès de la hot line Microsoft, j'ai résolu le problème lié aux versions en précisant la version Excel active par défaut sur l'ordinateur utilisateur.
Pour faire fonctionner les macros Excel à partir d'une application VB6 il faut :
1 - Que Excel.exe soit présent sur l'ordinateur où est installé l'application VB6.
2 - Dans le menu "Projet", sélectionner "Références", puis "Microsoft Excel"
3 - Dans le module qui va faire appel à l'application Excel, déclarer les objets :
- Dim XLApp as Excel.Application, XLWb as Excel.Workbook, XLWs as Excel.Worksheet
Set XLApp=CreateObject("Excel.Application.x")
Dans cette instruction, "x" désigne le numéro de la version d'Excel, la fonction suivante permet de déterminer celle qui existe sur l'ordinateur qui utilise l'application vb6:
Public Function GetXLVersion() As String
'***********************************************************
'Cette procédure recherche la version de l'application Excel
avant de créer un objet spécifique.
'***********************************************************
Dim XLApp As Excel.Application
Set XLApp = CreateObject("Excel.Application")
GetXLVersion = left(XLApp.Version, InStr(1, XLApp.Version, ".") - 1)
XLApp.Quit
Set XLApp = Nothing
End Function
GetXLVersion permet de fournir la chaine "x", l'instruction précédente peut s'écrire :
Set XLApp=CreateObject("Excel.Application." & GetXLVersion)
Ensuite selon le cas :
Set wbXL = XLApp.Workbooks.Add(xlWBATWorksheet)
ou
Set wbXL = XLApp.Workbooks.Open(sFileXL) 'où sFileXL désigne le nom du fichier
Puis activation ou création d'un objet Worksheet, etc...
Le conseil donné par "Prince charmant" d'enregistrer automatiquement la macro sous Excel est tout à fait recommandé. Mais, il faut savoir que l'enregistrement automatique va fournir un grand nombre d'instructions inutiles, ensuite, il faut simplifier ce code avec discernement.
4 - Toujours fermer les objets à la fin du code, sinon, il y aura des instances d'Excel ouvertes et invisibles à l'écran qui vont provoquer des disfonctionnements de cette dernière application. Le code pour fermer est :
Set XLWs=Nothing 'Suppression de l'objet Worksheet, il n'y a pas de commande de fermeture
XLWb.Save ou XLWb.SaveAs sFileXL 'Enregistrement du classeur
XLWb.Close 'Fermeture du classeur
Set XLWb=Nothing 'Suppression de l'objet classeur
XLApp.Quit 'Fermeture de l'application
Set XLApp=Nothing 'Suppression de l'objet application
5 - Le pack d'installation :
Pour les version 8 et 9 d'Excel (Excel 97 et Excel 2000), le pack d'installation récupère la bibliothèque d'objet Excel8.olb ou Excel9.olb (624 Ko), au delà il veut ajouter Excel.exe (8 Mo environ) au pack d'installation ce qui ne me parrait pas très recommandé.