Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 06/01/2012, 10h56   #1
Membre éclairé
 
Homme Pierre-Jean
Développeur informatique
Inscription : février 2010
Messages : 306
Détails du profil
Informations personnelles :
Nom : Homme Pierre-Jean
Âge : 31
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Industrie

Informations forums :
Inscription : février 2010
Messages : 306
Points : 330
Points : 330
Envoyer un message via MSN à paidge
Par défaut Lancer procédure d'un fichier Excel depuis Access

Bonjour,
Je dispose d'un classeur Excel 2003 généré par notre ERP. Dans ce classeur, il y a pas mal de procédures en VBA qui sont sur l'unique feuille appelée Sheet1. Et notamment il y a ce code qui permet d'avoir un menu spécifique permettant d'uploader les données dans notre BDD Oracle :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
Public Sub BneCreateOracleMenu()
...
With MenuBars(xlWorksheet).Menus("Or&acle")
        ...
        .MenuItems.add "Char&ger", OnAction:=Application.ActiveSheet.CodeName & ".BneUploadDocument"
        ...
End With
...
end sub
 
 
Private Sub BneUploadDocument()
   Dim oParams As New BneVBAParameters
   Set oParams = BneGetUploadParams()
    Dim strMsgHeader As String
    Dim strMsgBody As String
    Dim strMsgAction1 As String
    Dim strMsgAction2 As String
strMsgHeader = "Erreur"
strMsgBody = "Les résultats de chargement ne peuvent pas être affichés."
strMsgAction1 = "Ceci est dû à une défaillance de réseau. Laissez cette fenêtre ouverte pour qu'il y ait plus de tentatives d'affichage de résultats de chargement."
strMsgAction2 = "Contactez votre administrateur système si le problème persiste."
    Set m_Browser = New BneBrowser
    BneDefaultBrowser m_Browser
    Call m_Browser.ErrorMessage(strMsgHeader, strMsgBody, strMsgAction1, strMsgAction2)
   m_Browser.addEventCallBack "BneUploadBegin", "ASYNCUPLOADBEGIN", Me
   m_Browser.addEventCallBack "BneUploadComplete", "ASYNCUPLOADCOMPLETE", Me
   m_Browser.addEventCallBack "BneUploadError", "ERROR", Me
   m_Browser.addEventCallBack "BneUploadClose", "CLOSE", Me
   m_Browser.NavigatePost APPLICATION_SERVICE, oParams
   m_Browser.Show
End Sub
Je fais de l'automation depuis ACCESS 97 (grrrrr) et je souhaite juste savoir comment je peux appeler la procédure BneUploadDocument depuis ACCESS.
J'ai essayé, entre autres :
Code :
1
2
3
4
5
6
7
8
9
Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet
Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = True
Set xlBook = xlApp.Workbooks.Open(strPath)
Set xlSheet = xlBook.Sheets("Sheet1")
 
xlApp.Application.ActiveSheet.CodeName.BneUploadDocument
Mais ça ne marche pas (Objet requis).

Merci d'avance aux développeurs chevronnés que vous êtes de bien vouloir m'aider
__________________
L'informatique fait gagner beaucoup de temps. A condition d'en avoir beaucoup devant soi !!!
paidge est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2012, 13h11   #2
Membre éclairé
 
Homme Pierre-Jean
Développeur informatique
Inscription : février 2010
Messages : 306
Détails du profil
Informations personnelles :
Nom : Homme Pierre-Jean
Âge : 31
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Industrie

Informations forums :
Inscription : février 2010
Messages : 306
Points : 330
Points : 330
Envoyer un message via MSN à paidge
J'ai testé beaucoup de choses et cherché longtemps et je commence à me dire que ce n'est pas possible Pouvez-vous me confirmer ? Sinon est-il possible d'appeler une méthode du genre DoMenuItem ? ou avec les CommandBars ? j'ai cherché aussi dans ce sens mais tjrs pas de résultat
__________________
L'informatique fait gagner beaucoup de temps. A condition d'en avoir beaucoup devant soi !!!
paidge est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2012, 17h59   #3
Membre régulier
 
Homme Thierry Pallier
Regisseur
Inscription : octobre 2006
Messages : 47
Détails du profil
Informations personnelles :
Nom : Homme Thierry Pallier
Âge : 52
Localisation : France, Seine Maritime (Haute Normandie)

Informations professionnelles :
Activité : Regisseur
Secteur : Arts - Culture

Informations forums :
Inscription : octobre 2006
Messages : 47
Points : 94
Points : 94
Bonjour paidge
Pour appeler une une procédure d'un fichier Excel ,je fais
appExcel.Run "copier" 'active la macro "copier"A+
Thierry_PALLIER est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 08/01/2012, 00h21   #4
Membre éclairé
 
Homme Pierre-Jean
Développeur informatique
Inscription : février 2010
Messages : 306
Détails du profil
Informations personnelles :
Nom : Homme Pierre-Jean
Âge : 31
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Industrie

Informations forums :
Inscription : février 2010
Messages : 306
Points : 330
Points : 330
Envoyer un message via MSN à paidge
Bonsoir Thierry et merci de bien vouloir m'aider
Le problème c'est qu'il ne s'agit pas d'une macro...Il s'agit d'une private Sub de la feuille "sheet1". J'ai du essayer cette méthode mais je ne suis plus très sûr (j'ai testé tellement de méthodes ^^)

Je retourne à ma boîte dans 2 semaines et en attendant si d'autres ont des idées, je suis preneur
__________________
L'informatique fait gagner beaucoup de temps. A condition d'en avoir beaucoup devant soi !!!
paidge est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2012, 13h09   #5
Membre régulier
 
Homme Thierry Pallier
Regisseur
Inscription : octobre 2006
Messages : 47
Détails du profil
Informations personnelles :
Nom : Homme Thierry Pallier
Âge : 52
Localisation : France, Seine Maritime (Haute Normandie)

Informations professionnelles :
Activité : Regisseur
Secteur : Arts - Culture

Informations forums :
Inscription : octobre 2006
Messages : 47
Points : 94
Points : 94
Bonjour paidge.
Petite erreur dans le commentaire .Il s'agit bien d'une procédure .De toute façon ,je cois que ça marche aussi pour une macro.
Si 2 procédures portent le mm nom, tu ecrit "NomModule.NomSub" .
A dans 2 semaines alors!
Thierry_PALLIER est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2012, 10h39   #6
Membre éclairé
 
Homme Pierre-Jean
Développeur informatique
Inscription : février 2010
Messages : 306
Détails du profil
Informations personnelles :
Nom : Homme Pierre-Jean
Âge : 31
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Industrie

Informations forums :
Inscription : février 2010
Messages : 306
Points : 330
Points : 330
Envoyer un message via MSN à paidge
Bonjour à tous.
Je reviens sur mon problème. J'ai donc testé les solutions suivantes :
Code :
1
2
3
4
5
6
7
8
' 1er test
xlApp.Run Feuil1.BneUploadDocument
'2e test
xlApp.Run Sheet1.BneUploadDocument
'3e test
xlSheet.BneUploadDocument
'4e test
xlApp.Run xlSheet.BneUploadDocument
Mais toujours aucun résultat positif...
Je pense que le fait que la procédure BneUploadDocument du classeur Excel soit en private est un problème. Et malheureusement je ne peux pas la passer en public.

D'autres idées ?
__________________
L'informatique fait gagner beaucoup de temps. A condition d'en avoir beaucoup devant soi !!!
paidge est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2012, 12h10   #7
Membre éclairé
 
Homme Pierre-Jean
Développeur informatique
Inscription : février 2010
Messages : 306
Détails du profil
Informations personnelles :
Nom : Homme Pierre-Jean
Âge : 31
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Industrie

Informations forums :
Inscription : février 2010
Messages : 306
Points : 330
Points : 330
Envoyer un message via MSN à paidge
ça y est !!!! J'ai enfin trouvé la solution :
Code :
xlApp.CommandBars(125).Controls(2).Execute
Il fallait juste trouver l'indice de ce fichu menu "Oracle" ...et connaître la méthode execute de l'objet (c'est un objet control ou controlCommandBar ou un truk du genre...si qqun sait ça m'intéresse, l'aide VBA déconne ici)

Merci de ton aide Thierry
__________________
L'informatique fait gagner beaucoup de temps. A condition d'en avoir beaucoup devant soi !!!
paidge est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h22.


 
 
 
 
Partenaires

Hébergement Web