Variables dans une sous-procédure

Résolu
Amelie_29 Messages postés 41 Date d'inscription jeudi 12 janvier 2006 Statut Membre Dernière intervention 30 octobre 2008 - 10 févr. 2006 à 17:07
satrincha Messages postés 8 Date d'inscription jeudi 9 janvier 2003 Statut Membre Dernière intervention 19 septembre 2011 - 10 févr. 2006 à 18:04
Bonjour!!

Je crée une procédure qui créé un nouveau fichier excel de cette façon :

Set xlapp = New
Dim xlapp As Excel.Application
Dim Workbook As Excel.Workbook
Screen.MousePointer = vbHourglass
Set xlapp = New Excel.Application
xlapp.DisplayAlerts = False
xlapp.WindowState = xlMaximized
xlapp.Visible = True
xlapp.ShowWindowsInTaskbar = True
xlapp.Workbooks.add

Suis une liste de traitements à effectuer sur la feuille excel. Or ma procédure est trop grande. J'essaie de la découper mais je n'ai aucune idée de la façon dont je peux récupérer cette même feuille dans mes sous-procédures (j'ai essayé plusieurs commandes _ GetObject, Active worksheet, activeworkbook...) mais l'objet xlapp n'est jamais reconnu (les autres non plus d'ailleurs)

Comment faut-il déclarer ses variables et les initialiser?
(S'il y a des paramètres je ne sais pas non plus comment les passer lorsque j'appelle ma sous-procédure à partir de ma form_load).

Merci pour votre aide
Amélie

2 réponses

econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Modérateur Dernière intervention 23 décembre 2008 23
10 févr. 2006 à 17:31
Si ta procédure est trop grande (et il faut vraiment qu'elle soit
gigantesque pour causer une erreur), il y a obligatoirement des moyens
de regrouper des actions dans des procédures annexes. Un exemple
ci-dessous.







Set xlapp = New

Dim xlapp As Excel.Application

Dim Workbook As Excel.Workbook

Screen.MousePointer = vbHourglass

Set xlapp = New Excel.Application

<strike>xlapp.DisplayAlerts = False

xlapp.WindowState = xlMaximized

xlapp.Visible = True

xlapp.ShowWindowsInTaskbar = True

</strike>FaireDesChoses xlapp

xlapp.Workbooks.add

[...]


Public Sub FaireDesChoses(ByRef e as Excel.Application)

e.DisplayAlerts = False

e.WindowState = xlMaximized

e.Visible = True

e.ShowWindowsInTaskbar = True

End Sub

Manu
3
satrincha Messages postés 8 Date d'inscription jeudi 9 janvier 2003 Statut Membre Dernière intervention 19 septembre 2011
10 févr. 2006 à 18:04
Salut,

Si t'enleve la premiere ligne : Set xlapp = New, ton code fonctionne correctement.
N'oublie pas d'ajouter la référence à ton projet "Microsoft Excel Object Library" (Menu : Projet / References), sinon comme dans ton cas, vb ne reconnait pas les objets que tu utilise.

Ensuite, tu as plusieurs façon d'exploiter excel
Un autre exemple :

Dim xlapp As Object
Set xlapp = CreateObject("Excel.Application")

' Supprime l'affichage des messages d'erreurs ou de confirmation de suppression
xlapp.DisplayAlerts = False


' Ajoute des feuilles
xlapp.Workbooks.Add

' Mise en page .. etc.....

' Sauvegarde
xlapp.ActiveWorkbook.SaveAs FileName:="C:\test.xls", FileFormat:=17, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, CreateBackup:=False

' Ferme ton objet excel
xlapp.Application.Quit

Si ça peut t'aider...

Nicolas
0
Rejoignez-nous