Manipulation d'un Workbook excel ac plusieurs WorkSheet

Résolu
yoh_bur Messages postés 24 Date d'inscription mercredi 18 mai 2005 Statut Membre Dernière intervention 9 février 2007 - 7 juin 2005 à 14:28
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 - 8 juin 2005 à 19:24
Bonjour.

J'ai besoin a partir de VB6 d'inscrire des valeurs dans des tableaux sous Excel.
Le faire dans une seule Sheet ne me pose aucun pb, mais voila, je dois le faire ds differentes Sheets en fonction de la valeur d'une variable.

J'utilise une fonction a laquelle je passe une feuille active, elle s'occuppe de l'insertion. Elle est declarée comme suit:

Function insert_tab ( Sheet As Object)
...
End function

Mon pb vient du fait que soit les methodes appliques aux objets Excel ne sont pas reconnu, soit la sheet que je passe en argument de la fonction fait planter.

Merci d'avance pour l'aide.

7 réponses

cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
7 juin 2005 à 20:07
Salut,

Un exemple que j'ai déjà dû posté :

' dans projet/références......... Microsoft Excel x.x Object Library


Sub essai()
Dim AppExcel As Excel.Application
Dim ClasseurExcel As Excel.Workbook


' Chargement de l'application Excel
Set AppExcel = CreateObject("Excel.Application")

' Ouverture du classeur Excel
Set ClasseurExcel = AppExcel.Workbooks.Open(TonFichierXls)


' appel de ta fonction
insert_tab ClasseurExcel.Sheets(TaFeuille)

' Pour refermer tout proprement
'ClasseurExcel.Save 'pour sauvegarder tes modifs sinon :
'ClasseurExcel.Saved = True ' Pour dire que c'est déjà sauvegardé donc pas de nouvelle sauvegarde
ClasseurExcel.Close

AppExcel.Quit


Set ClasseurExcel = Nothing
Set AppExcel = Nothing


End Sub


Function insert_tab(Feuille As Excel.Worksheet)


With Feuille
.Cells(1, 1) = "toto" ' "toto" dans la cellule A1
.Cells(1, 2) = "truc" ' "truc" dans la cellule B1
End With


...
End Function


@+

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
3
yoh_bur Messages postés 24 Date d'inscription mercredi 18 mai 2005 Statut Membre Dernière intervention 9 février 2007
8 juin 2005 à 09:36
Merci de ta reponse.

Mais elle me laisse perplexe:
En declarant ma fonction avec un objet du type Excel.WoorkSheet, il me met "Err: Type defini par l'utilisateur non defini"
Pourtant j'ai bien reference Excel 9.0, J'ai mes objets Excel classiques.
Saurais tu egalement me dire pourquoi certaine propriete ou fonctions de ces objets ne semblent pas pris en compte (msg d'erreur propriete non valide, etc...)
3
yoh_bur Messages postés 24 Date d'inscription mercredi 18 mai 2005 Statut Membre Dernière intervention 9 février 2007
8 juin 2005 à 09:49
c juste un pb d'orthographe c insert_tab(sheet as Excel.Worksheet) ac Woorksheet au singulier.
Par contre, j'en reviens a une erreur que je n'arrive pas a comprendre:
sur xlBook.Sheets("toto") il me dit ne pas gerer la propriete ou la methode
3
yoh_bur Messages postés 24 Date d'inscription mercredi 18 mai 2005 Statut Membre Dernière intervention 9 février 2007
8 juin 2005 à 17:19
Alors, ca a presque avancer.

l'appel de l'argument sans paranthese semble accepter et pas celui avec des paranthese.
Mais du coup, il me met type incompatible lorsque j'arrive sur la fct

Sub tab_remplissage()

Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet


Set xlApp = CreateObject("Excel.Application")


Set xlBook = xlApp.Workbooks.Open(App.Path & "\doc\Modele.xls")
Set xlSheet = xlBook.Worksheets(1)


Inscr_Mois (xlBook.Worksheets(1))

End Sub

Public function insert_tab(Sht As Excel.Worksheets)
...
End function
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
yoh_bur Messages postés 24 Date d'inscription mercredi 18 mai 2005 Statut Membre Dernière intervention 9 février 2007
8 juin 2005 à 17:21
En declarant Sht cm Variant, ca passe.
Merci
3
yoh_bur Messages postés 24 Date d'inscription mercredi 18 mai 2005 Statut Membre Dernière intervention 9 février 2007
8 juin 2005 à 13:55
en passant par un indice, ca passe, mais l'appel d'argument ds la fonction n'est pas valide????
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
8 juin 2005 à 19:24
Hum variant ....

Au lieu de
Public function insert_tab(Sht As Excel.Worksheets)
...
End function

je coderait

Public function insert_tab(Sht As Excel.Worksheet)
...
End function

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
0
Rejoignez-nous