darkspoilt
Messages postés254Date d'inscriptionjeudi 13 janvier 2005StatutMembreDernière intervention10 octobre 2013
-
18 juin 2007 à 11:16
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 2012
-
19 juin 2007 à 08:32
Bonjour
j'ai un probleme de renvoie
Pour le moment ma fonction renvoie le classeur mais j'aimerais aussi renvoyer l'objet Excel.Application (car si je l'ouvre deux fois ca va pas le faire) donc je vois pas comment envoyer les deux en meme temps pour l'instant ma fonction est constitué kom cela
Merci d'avance
Public Function MacroTest(c As Integer) As Workbook
'Déclarations des variables
Set xls = New Excel.Application
Dim name As String
Dim Classeur As Workbook
'Ouverture du tableau Excel
xls.Visible = True
Set Classeur = xls.Workbooks.Open("D:\Test\e_analyse_croisée_Test.xls")
...
Set MacroTest = Classeur
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 18 juin 2007 à 16:27
Salut,
Comme l'a dit [auteurdetail.aspx?ID=647037 mortalino], parfois il faut décomposer
Alors essaie peu être
xls.Workbooks("e_analyse_croisée_Test.xls").Activate
xls.ActiveWorkbook.Worksheets("R_analyse_croisée").Select
xls.ActiveSheet.Range("A1").Select, ----
[code.aspx?ID=41455 By Renfield]
Si la encore cela ne fonctionne pas... Bah je ne sais pas. es tu sûr de tout les noms utilisés?
@+: Ju£i?n Pensez: Réponse acceptée
Pour ce nouveau problème, tu as plein de possibilités.
- Soit tu passes un parametre de type Excel.Application a ta procédure (et tu l'affecte à l'intérieur de cette dernière).
- Soit tu ne retournes QUE l'objet XLS (sachant que de toute facon l'objet Classeur sera accessible dans la collection WorkBooks de l'objet XLS)
- Soit tu déclares l'objet XLS dans un module en ttn que variable PUBLIC ce qui te permettra de l'avoir n'importe où.
darkspoilt
Messages postés254Date d'inscriptionjeudi 13 janvier 2005StatutMembreDernière intervention10 octobre 2013 18 juin 2007 à 13:37
sinon quelqu'un peut m'expliquer les byref
Losque je marque ca pkoi il attend un "=" dans ma fonction principale??
Public Sub Macro1(ByRef wbfile As Excel.Workbook, ByRef xls As Excel.Application)
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 18 juin 2007 à 13:42
Salut,
C'est la Ligne d'appel qu'il faut montrer
DE plus le ByRef est inutile puisque par défaut un paramtre est passé par ref en VBA (si toutefois tu es bien en VBA)
la demande de "=" essaie de faire Call Macro1(P1, P2)
(soit dit en passant=> [infomsg_PROBLEME-METHODE-OBJET_965739.aspx#3 ICI)] (*2)
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 18 juin 2007 à 14:34
Re,
(soit dit en passant=> [infomsg_PROBLEME-METHODE-OBJET_965739.aspx#3 ICI)](*4)
1°)
Note: IL faut que tu prennes en considération les réponses que l'on te donnes
Dans l'autre discution je te disais "Tout simplement parceque Classeur n'est pas un objet appartenant à l'objet xls." Et toi tu ne trouves rien de mieux que de remettre xls.wbfile ... ca rime à quoi... De plus il faut que tu comprennes qu'une fois instantier wbfile est un objet classeur donc inutile de mettre xls.
2°) Worksheet n'existe pas mais en revanche WorksheetS
Oui
Mias ca tu peux le voir avec la liste déroulante qui apparait lorsque tu tapes wbfile. (et non xls.wbfile.)
Encore une fois c'est de la syntaxe (et aussi de la logique, et ca tu ne pourras pas y couper, tu dois l'apprendre.)
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 18 juin 2007 à 14:57
Re,
Non mais tu te fou de moi la????
Tu vois pas mes messages, tu ne sais pas lire, Tu n'es pas capable d'essayer.... Qu'est ce qui t'arrives???? tu peux au moind prendre la peine de me dire si ce que je te dis te fais avancer ....
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 18 juin 2007 à 15:14
Re,
Quel post tu n'avais pas vu celui qui disait
Worksheet n'existe pas mais en revanche WorksheetS
Oui
Mais ca tu peux le voir avec la liste déroulante qui apparait lorsque tu tapes wbfile. (et non xls.wbfile.)
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 18 juin 2007 à 15:22
Arg, que du bonheur à lire...
C'est marrant, j'ai vu que Julien répétait Plusieurs fois ses réponses (sur Call, ou bien le S de Sheets). Bref, DarkSpoilt, vérifie dans tes syntaxes le S dans WorkSheets
Pis faut penser à mettre des MsgBox pour vérifier ton travail.
exemple, avant de faire
wbfile.WorksheetS("R_analyse_croisée" ).Range("A1" ).Select
Tu mets
Msgbox wbfile.Name
Msgbox wbfile.Worksheets("R_analyse_croisée").Range("A1").Value
Et vois déjà si t'as bien des retours de valeurs.
Pis le coup de
wbfile.WorksheetS("R_analyse_croisée" ).Range("A1" ).Select
Faut peut-être le décomposer, des fois (ne me demande pas pourquoi, j'en sais rien) ca ne prends pas :
wbfile.WorksheetS("R_analyse_croisée" ).Select
wbfile.Range("A1" ).Select
Mais autant référencer la feuille :
Dim MaFeuille As Sheet
Set MaFeuille = wbfile.Worksheet S ("R_analyse_croisée" )
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 18 juin 2007 à 15:32
Si j'ai bien suivi :
Public Sub Macro1(ByRef wbfile As Excel.Workbook, ByRef xls As Excel.Application)
Donc quand tu dis :
ca fonctionne
[cpp]Set appli = New Excel.Application
Set wbfile = MacroTest(c, appli)
appli.Range("A1").Select
Module2.Macro1 wbfile
Impossible..., tu n'as passé qu'un paramètre à Macro1, VB te détecte automatiquement une erreur. Ou alors, tu as changé ta procédure mais tu ne nous a pas averti.
Bref, très très lourd à suivre ton problème, avec tes bouts de code à droite à gauche
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 18 juin 2007 à 15:34
Salut,
De toute facon lorsuqe l'on veux piloter Excel, le mieux (a mon avis) reste tout de meme l'option des variables Public dans un Module plutot que de les passer en paramtre, les retourners, etc... du coup tout le monde s'y perd.
Un Objet XlsApp de typ Excel.Application, Un ou plusieur Objets de Type Workbook (quoique la encore pas nécessaire puisque accessible de puis l'objet XlsApp)
Ce qu'il faut avant d'aller plus loin[auteurdetail.aspx?ID=423548 darkspoilt] , c'est vraiment que tu te penches sur la syntaxe.