L'idée étant que je ne sais pas quoi mettre pour remplacer les ??????? et
faire passer la string strParams. Idéalement, j'aimerais même passer un
tableau de strings ..
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
PMO
Bonjour,
Je m'inspire de votre code pour trouver cette piste.
1) J'ai fabriqué la procédure "importFilteredData" dans un classeur Excel "aa.xls". Il faudra donc l'y intégrer.
'****************** Sub importFilteredData(var As Variant) Dim i& For i& = LBound(var) To UBound(var) MsgBox var(i&) Next i& End Sub '****************** Elle se contente d'afficher les valeurs d'un tableau. Notez que l'argument est un variant (qui pourra contenir un tableau)
2) Dans Access intégrez le code suivant issu du votre mais avec des modifications. '****************** Sub CallMacroExcel() Dim objExcel As Object Dim objWorkbook As Object Dim myTab() 'Tableau dynamique de variant Dim i& Set objExcel = CreateObject("Excel.Application") Set objWorkbook = objExcel.Workbooks.Open("c:aa.xls") '---- On charge le tableau avec 10 éléments (par ex) ---- ReDim myTab(1 To 10) For i& = 1 To 10 myTab(i&) = "Message " & i& & "" Next i& '---- On passe la main à Excel ---- objExcel.Visible = True objExcel.Run "importFilteredData", myTab '---- Fermeture Excel ---- On Error Resume Next objWorkbook.Close savechanges:úlse objExcel.Quit Set objWorkbook = Nothing '°°° Gestionnaire des tâches WINDOW °°° Set objExcel = Nothing 'Ferme le processus Excel End Sub '****************** On utilise un tableau de variant "MyTab" plutôt qu'un paramètre String. Dans le cas où il n'y aurait qu'un seul paramètre à passer redimensionnez le tableau de 1 à 1 (Redim MyTab(1 To 1)) et changez la limite de la boucle (For i&= 1 To 1). Si vous lancez, à partir d'Access, la procédure "CallMacroExcel" vous devriez obtenir ce que vous recherchiez. Il n'y a plus qu'à adapter le code Excel et le code Access à votre usage.
Est-ce que cela fonctionne chez vous ?
Cordialement.
PMO Patrick Morange
Bonjour,
J'aimerais depuis Access ouvrir un fichier Excel, et lancer une fonction dans laquelle il y a un argument, avec un code tel que :
Dim objExcel As Object Dim objWorkbook As Object Dim strParams As String
Set objExcel = CreateObject("Excel.Application") Set objWorkbook = objExcel.Workbooks.Open("aa.xls")
L'idée étant que je ne sais pas quoi mettre pour remplacer les ??????? et faire passer la string strParams. Idéalement, j'aimerais même passer un tableau de strings ..
thx ! Gégé
Bonjour,
Je m'inspire de votre code pour trouver cette piste.
1) J'ai fabriqué la procédure "importFilteredData" dans un classeur Excel
"aa.xls".
Il faudra donc l'y intégrer.
'******************
Sub importFilteredData(var As Variant)
Dim i&
For i& = LBound(var) To UBound(var)
MsgBox var(i&)
Next i&
End Sub
'******************
Elle se contente d'afficher les valeurs d'un tableau. Notez que l'argument
est un variant (qui pourra contenir un tableau)
2) Dans Access intégrez le code suivant issu du votre mais avec des
modifications.
'******************
Sub CallMacroExcel()
Dim objExcel As Object
Dim objWorkbook As Object
Dim myTab() 'Tableau dynamique de variant
Dim i&
Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.Open("c:aa.xls")
'---- On charge le tableau avec 10 éléments (par ex) ----
ReDim myTab(1 To 10)
For i& = 1 To 10
myTab(i&) = "Message " & i& & ""
Next i&
'---- On passe la main à Excel ----
objExcel.Visible = True
objExcel.Run "importFilteredData", myTab
'---- Fermeture Excel ----
On Error Resume Next
objWorkbook.Close savechanges:úlse
objExcel.Quit
Set objWorkbook = Nothing
'°°° Gestionnaire des tâches WINDOW °°°
Set objExcel = Nothing 'Ferme le processus Excel
End Sub
'******************
On utilise un tableau de variant "MyTab" plutôt qu'un paramètre String.
Dans le cas où il n'y aurait qu'un seul paramètre à passer redimensionnez
le tableau de 1 à 1 (Redim MyTab(1 To 1)) et changez la limite de la boucle
(For i&= 1 To 1).
Si vous lancez, à partir d'Access, la procédure "CallMacroExcel" vous
devriez obtenir ce que vous recherchiez.
Il n'y a plus qu'à adapter le code Excel et le code Access à votre usage.
Est-ce que cela fonctionne chez vous ?
Cordialement.
PMO
Patrick Morange
Bonjour,
J'aimerais depuis Access ouvrir un fichier Excel, et lancer une
fonction dans laquelle il y a un argument, avec un code tel que :
Dim objExcel As Object
Dim objWorkbook As Object
Dim strParams As String
Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.Open("aa.xls")
L'idée étant que je ne sais pas quoi mettre pour remplacer les ??????? et
faire passer la string strParams. Idéalement, j'aimerais même passer un
tableau de strings ..
Je m'inspire de votre code pour trouver cette piste.
1) J'ai fabriqué la procédure "importFilteredData" dans un classeur Excel "aa.xls". Il faudra donc l'y intégrer.
'****************** Sub importFilteredData(var As Variant) Dim i& For i& = LBound(var) To UBound(var) MsgBox var(i&) Next i& End Sub '****************** Elle se contente d'afficher les valeurs d'un tableau. Notez que l'argument est un variant (qui pourra contenir un tableau)
2) Dans Access intégrez le code suivant issu du votre mais avec des modifications. '****************** Sub CallMacroExcel() Dim objExcel As Object Dim objWorkbook As Object Dim myTab() 'Tableau dynamique de variant Dim i& Set objExcel = CreateObject("Excel.Application") Set objWorkbook = objExcel.Workbooks.Open("c:aa.xls") '---- On charge le tableau avec 10 éléments (par ex) ---- ReDim myTab(1 To 10) For i& = 1 To 10 myTab(i&) = "Message " & i& & "" Next i& '---- On passe la main à Excel ---- objExcel.Visible = True objExcel.Run "importFilteredData", myTab '---- Fermeture Excel ---- On Error Resume Next objWorkbook.Close savechanges:úlse objExcel.Quit Set objWorkbook = Nothing '°°° Gestionnaire des tâches WINDOW °°° Set objExcel = Nothing 'Ferme le processus Excel End Sub '****************** On utilise un tableau de variant "MyTab" plutôt qu'un paramètre String. Dans le cas où il n'y aurait qu'un seul paramètre à passer redimensionnez le tableau de 1 à 1 (Redim MyTab(1 To 1)) et changez la limite de la boucle (For i&= 1 To 1). Si vous lancez, à partir d'Access, la procédure "CallMacroExcel" vous devriez obtenir ce que vous recherchiez. Il n'y a plus qu'à adapter le code Excel et le code Access à votre usage.
Est-ce que cela fonctionne chez vous ?
Cordialement.
PMO Patrick Morange
Bonjour,
J'aimerais depuis Access ouvrir un fichier Excel, et lancer une fonction dans laquelle il y a un argument, avec un code tel que :
Dim objExcel As Object Dim objWorkbook As Object Dim strParams As String
Set objExcel = CreateObject("Excel.Application") Set objWorkbook = objExcel.Workbooks.Open("aa.xls")
L'idée étant que je ne sais pas quoi mettre pour remplacer les ??????? et faire passer la string strParams. Idéalement, j'aimerais même passer un tableau de strings ..
thx ! Gégé
valentin
Bonsoir, Dans un formulaire Access j'ai 3 zones de texte qui contiennent respectivement les valeurs ( taux , nb de mois et montant ) qui seront passées à une fonction qui se trouve dans un classeur Excel ; il s'agit de la fonction FV que j'ai transformé en MeRapporte avec les paramètres saisis dans Access.
Code ( dans Access ) :
Private Sub cmdExcel_Click() Dim xlApp As New Excel.Application Dim xlClass As Excel.Workbook Dim xlSheet As Excel.Worksheet Dim Tx As Single Dim Ech As Single Dim Mont As Single Dim Reponse As Single Set xlClass = xlApp.Workbooks.Open("c:preparation_coursmercredi.xls") xlApp.Visible = True Tx = txtTaux Ech = txtEcheance Mont = txtMontant 'Reponse = xlClass.Module1.MeRapporte(Tx, Ech, Mont) Reponse = xlApp.Run("MeRapporte", Tx, Ech, Mont) MsgBox Reponse xlApp.Quit Set xlApp = Nothing Set xlClass = Nothing Set xlSheet = Nothing
End Sub
Attention , dans Access ne pas oublier d'inscrire la librairie Microsoft Excel Library 9.0 ( ou autre version )
La fonction dans mon classeur Excel est la suivante :
Public Function MeRapporte(Taux As Single, Echeance As Single, Montant As Single) As Single MeRapporte = FV(Taux / 1200, Echeance, -Montant) End Function
Bon courage Valentin
"gege" a écrit dans le message de news:
Bonjour,
J'aimerais depuis Access ouvrir un fichier Excel, et lancer une fonction dans laquelle il y a un argument, avec un code tel que :
Dim objExcel As Object Dim objWorkbook As Object Dim strParams As String
Set objExcel = CreateObject("Excel.Application") Set objWorkbook = objExcel.Workbooks.Open("aa.xls")
L'idée étant que je ne sais pas quoi mettre pour remplacer les ??????? et faire passer la string strParams. Idéalement, j'aimerais même passer un tableau de strings ..
thx ! Gégé
Bonsoir,
Dans un formulaire Access j'ai 3 zones de texte
qui contiennent respectivement les valeurs ( taux ,
nb de mois et montant ) qui seront passées à une
fonction qui se trouve dans un classeur Excel ; il
s'agit de la fonction FV que j'ai transformé en MeRapporte
avec les paramètres saisis dans Access.
Code ( dans Access ) :
Private Sub cmdExcel_Click()
Dim xlApp As New Excel.Application
Dim xlClass As Excel.Workbook
Dim xlSheet As Excel.Worksheet
Dim Tx As Single
Dim Ech As Single
Dim Mont As Single
Dim Reponse As Single
Set xlClass = xlApp.Workbooks.Open("c:preparation_coursmercredi.xls")
xlApp.Visible = True
Tx = txtTaux
Ech = txtEcheance
Mont = txtMontant
'Reponse = xlClass.Module1.MeRapporte(Tx, Ech, Mont)
Reponse = xlApp.Run("MeRapporte", Tx, Ech, Mont)
MsgBox Reponse
xlApp.Quit
Set xlApp = Nothing
Set xlClass = Nothing
Set xlSheet = Nothing
End Sub
Attention , dans Access ne pas oublier d'inscrire la librairie
Microsoft Excel Library 9.0 ( ou autre version )
La fonction dans mon classeur Excel est la suivante :
Public Function MeRapporte(Taux As Single, Echeance As Single, Montant As
Single) As Single
MeRapporte = FV(Taux / 1200, Echeance, -Montant)
End Function
Bon courage
Valentin
"gege" <gege@gege.com> a écrit dans le message de
news:Xns95E3A9EF46A96gegegegecom@207.46.248.16...
Bonjour,
J'aimerais depuis Access ouvrir un fichier Excel, et lancer une
fonction dans laquelle il y a un argument, avec un code tel que :
Dim objExcel As Object
Dim objWorkbook As Object
Dim strParams As String
Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.Open("aa.xls")
L'idée étant que je ne sais pas quoi mettre pour remplacer les ??????? et
faire passer la string strParams. Idéalement, j'aimerais même passer un
tableau de strings ..
Bonsoir, Dans un formulaire Access j'ai 3 zones de texte qui contiennent respectivement les valeurs ( taux , nb de mois et montant ) qui seront passées à une fonction qui se trouve dans un classeur Excel ; il s'agit de la fonction FV que j'ai transformé en MeRapporte avec les paramètres saisis dans Access.
Code ( dans Access ) :
Private Sub cmdExcel_Click() Dim xlApp As New Excel.Application Dim xlClass As Excel.Workbook Dim xlSheet As Excel.Worksheet Dim Tx As Single Dim Ech As Single Dim Mont As Single Dim Reponse As Single Set xlClass = xlApp.Workbooks.Open("c:preparation_coursmercredi.xls") xlApp.Visible = True Tx = txtTaux Ech = txtEcheance Mont = txtMontant 'Reponse = xlClass.Module1.MeRapporte(Tx, Ech, Mont) Reponse = xlApp.Run("MeRapporte", Tx, Ech, Mont) MsgBox Reponse xlApp.Quit Set xlApp = Nothing Set xlClass = Nothing Set xlSheet = Nothing
End Sub
Attention , dans Access ne pas oublier d'inscrire la librairie Microsoft Excel Library 9.0 ( ou autre version )
La fonction dans mon classeur Excel est la suivante :
Public Function MeRapporte(Taux As Single, Echeance As Single, Montant As Single) As Single MeRapporte = FV(Taux / 1200, Echeance, -Montant) End Function
Bon courage Valentin
"gege" a écrit dans le message de news:
Bonjour,
J'aimerais depuis Access ouvrir un fichier Excel, et lancer une fonction dans laquelle il y a un argument, avec un code tel que :
Dim objExcel As Object Dim objWorkbook As Object Dim strParams As String
Set objExcel = CreateObject("Excel.Application") Set objWorkbook = objExcel.Workbooks.Open("aa.xls")
L'idée étant que je ne sais pas quoi mettre pour remplacer les ??????? et faire passer la string strParams. Idéalement, j'aimerais même passer un tableau de strings ..