Bonjour !
et merci pour les indications qui m'ont déjà été données, par exemple
par Nicolas G, en réponse à ma question du 3 nov 8:50.
J' ai fait un exemple avec affichage de "coucou" et, évidemment, ça
marche. (!)
Maintenant je veux que ma dll travaille sur le classeur Excel qui va
l'appeler comme du code VBA qui serait placé dans ce classeur.
Dois-je faire référence au classeur dans la dll ?
Par exemple, voici un bout de code VBA dans Excel
Sub tab_brut()
Dim c3 As Integer 'dernière colonne du tableau de saisie
Dim i As Integer
Application.ScreenUpdating = False
.......... etc.
Puis-je laisser ainsi, la dll étant appelée par le classeur, ou bien
dois-je faire qqch du genre :
Sub tab_brut(nom_du_classeur As String)
Dim c3 As Integer 'dernière colonne du tableau de saisie
Dim i As Integer
Dim SH As New Excel.Workbook
Set SH = nom_du_classeur
SH.Application.ScreenUpdating = False
La version ci-dessus ne marche pas : SH = nom_du_classeur ne colle pas
puisque c'est un string...
Comment faire référence au classeur appellant déjà ouvert ?
Merci !
Bonjour !
et merci pour les indications qui m'ont déjà été données, par exemple
par Nicolas G, en réponse à ma question du 3 nov 8:50.
J' ai fait un exemple avec affichage de "coucou" et, évidemment, ça
marche. (!)
Maintenant je veux que ma dll travaille sur le classeur Excel qui va
l'appeler comme du code VBA qui serait placé dans ce classeur.
Dois-je faire référence au classeur dans la dll ?
Par exemple, voici un bout de code VBA dans Excel
Sub tab_brut()
Dim c3 As Integer 'dernière colonne du tableau de saisie
Dim i As Integer
Application.ScreenUpdating = False
.......... etc.
Puis-je laisser ainsi, la dll étant appelée par le classeur, ou bien
dois-je faire qqch du genre :
Sub tab_brut(nom_du_classeur As String)
Dim c3 As Integer 'dernière colonne du tableau de saisie
Dim i As Integer
Dim SH As New Excel.Workbook
Set SH = nom_du_classeur
SH.Application.ScreenUpdating = False
La version ci-dessus ne marche pas : SH = nom_du_classeur ne colle pas
puisque c'est un string...
Comment faire référence au classeur appellant déjà ouvert ?
Merci !
Bonjour !
et merci pour les indications qui m'ont déjà été données, par exemple
par Nicolas G, en réponse à ma question du 3 nov 8:50.
J' ai fait un exemple avec affichage de "coucou" et, évidemment, ça
marche. (!)
Maintenant je veux que ma dll travaille sur le classeur Excel qui va
l'appeler comme du code VBA qui serait placé dans ce classeur.
Dois-je faire référence au classeur dans la dll ?
Par exemple, voici un bout de code VBA dans Excel
Sub tab_brut()
Dim c3 As Integer 'dernière colonne du tableau de saisie
Dim i As Integer
Application.ScreenUpdating = False
.......... etc.
Puis-je laisser ainsi, la dll étant appelée par le classeur, ou bien
dois-je faire qqch du genre :
Sub tab_brut(nom_du_classeur As String)
Dim c3 As Integer 'dernière colonne du tableau de saisie
Dim i As Integer
Dim SH As New Excel.Workbook
Set SH = nom_du_classeur
SH.Application.ScreenUpdating = False
La version ci-dessus ne marche pas : SH = nom_du_classeur ne colle pas
puisque c'est un string...
Comment faire référence au classeur appellant déjà ouvert ?
Merci !
Salut,
Si tu veux travailler ton classeur depuis ta DLL il suffit de faire
ceci par exemple :
'//Code VB de la DLL :
Option Explicit
'//on pourrait typer l'objet mais il faudrait faire une ref a excel
ds ta dll
Private m_oClasseurRef As Object
'//ton code... tu peux travailler avec l'objet m_oClasseurRef qui
sera ton '//classeur excel (si tu veux l'intellisence, type l'objet
cf plus haut).
Public Sub SetClasseurObj(oRef As Object)
Set m_oClasseurRef = oRef
End Sub
Private Sub Class_Terminate()
Set m_oClasseurRef = Nothing
End Sub
'//Sous excel :
'//Déclaration et création d'une instance de ta classe VB avec New...
'//Puis tout au début :
Call oMonObjetClasse.SetClasseurObj(ThisWorkbook)
Voila, si ca t'interesse je peux faire un exemple, je viens (enfin) de
réinstaller excel ;)
PM wrote:Bonjour !
et merci pour les indications qui m'ont déjà été données, par exemple
par Nicolas G, en réponse à ma question du 3 nov 8:50.
J' ai fait un exemple avec affichage de "coucou" et, évidemment, ça
marche. (!)
Maintenant je veux que ma dll travaille sur le classeur Excel qui va
l'appeler comme du code VBA qui serait placé dans ce classeur.
Dois-je faire référence au classeur dans la dll ?
Par exemple, voici un bout de code VBA dans Excel
Sub tab_brut()
Dim c3 As Integer 'dernière colonne du tableau de
saisie Dim i As Integer
Application.ScreenUpdating = False
.......... etc.
Puis-je laisser ainsi, la dll étant appelée par le classeur, ou bien
dois-je faire qqch du genre :
Sub tab_brut(nom_du_classeur As String)
Dim c3 As Integer 'dernière colonne du tableau de
saisie Dim i As Integer
Dim SH As New Excel.Workbook
Set SH = nom_du_classeur
SH.Application.ScreenUpdating = False
La version ci-dessus ne marche pas : SH = nom_du_classeur ne colle
pas puisque c'est un string...
Comment faire référence au classeur appellant déjà ouvert ?
Merci !
Salut,
Si tu veux travailler ton classeur depuis ta DLL il suffit de faire
ceci par exemple :
'//Code VB de la DLL :
Option Explicit
'//on pourrait typer l'objet mais il faudrait faire une ref a excel
ds ta dll
Private m_oClasseurRef As Object
'//ton code... tu peux travailler avec l'objet m_oClasseurRef qui
sera ton '//classeur excel (si tu veux l'intellisence, type l'objet
cf plus haut).
Public Sub SetClasseurObj(oRef As Object)
Set m_oClasseurRef = oRef
End Sub
Private Sub Class_Terminate()
Set m_oClasseurRef = Nothing
End Sub
'//Sous excel :
'//Déclaration et création d'une instance de ta classe VB avec New...
'//Puis tout au début :
Call oMonObjetClasse.SetClasseurObj(ThisWorkbook)
Voila, si ca t'interesse je peux faire un exemple, je viens (enfin) de
réinstaller excel ;)
PM wrote:
Bonjour !
et merci pour les indications qui m'ont déjà été données, par exemple
par Nicolas G, en réponse à ma question du 3 nov 8:50.
J' ai fait un exemple avec affichage de "coucou" et, évidemment, ça
marche. (!)
Maintenant je veux que ma dll travaille sur le classeur Excel qui va
l'appeler comme du code VBA qui serait placé dans ce classeur.
Dois-je faire référence au classeur dans la dll ?
Par exemple, voici un bout de code VBA dans Excel
Sub tab_brut()
Dim c3 As Integer 'dernière colonne du tableau de
saisie Dim i As Integer
Application.ScreenUpdating = False
.......... etc.
Puis-je laisser ainsi, la dll étant appelée par le classeur, ou bien
dois-je faire qqch du genre :
Sub tab_brut(nom_du_classeur As String)
Dim c3 As Integer 'dernière colonne du tableau de
saisie Dim i As Integer
Dim SH As New Excel.Workbook
Set SH = nom_du_classeur
SH.Application.ScreenUpdating = False
La version ci-dessus ne marche pas : SH = nom_du_classeur ne colle
pas puisque c'est un string...
Comment faire référence au classeur appellant déjà ouvert ?
Merci !
Salut,
Si tu veux travailler ton classeur depuis ta DLL il suffit de faire
ceci par exemple :
'//Code VB de la DLL :
Option Explicit
'//on pourrait typer l'objet mais il faudrait faire une ref a excel
ds ta dll
Private m_oClasseurRef As Object
'//ton code... tu peux travailler avec l'objet m_oClasseurRef qui
sera ton '//classeur excel (si tu veux l'intellisence, type l'objet
cf plus haut).
Public Sub SetClasseurObj(oRef As Object)
Set m_oClasseurRef = oRef
End Sub
Private Sub Class_Terminate()
Set m_oClasseurRef = Nothing
End Sub
'//Sous excel :
'//Déclaration et création d'une instance de ta classe VB avec New...
'//Puis tout au début :
Call oMonObjetClasse.SetClasseurObj(ThisWorkbook)
Voila, si ca t'interesse je peux faire un exemple, je viens (enfin) de
réinstaller excel ;)
PM wrote:Bonjour !
et merci pour les indications qui m'ont déjà été données, par exemple
par Nicolas G, en réponse à ma question du 3 nov 8:50.
J' ai fait un exemple avec affichage de "coucou" et, évidemment, ça
marche. (!)
Maintenant je veux que ma dll travaille sur le classeur Excel qui va
l'appeler comme du code VBA qui serait placé dans ce classeur.
Dois-je faire référence au classeur dans la dll ?
Par exemple, voici un bout de code VBA dans Excel
Sub tab_brut()
Dim c3 As Integer 'dernière colonne du tableau de
saisie Dim i As Integer
Application.ScreenUpdating = False
.......... etc.
Puis-je laisser ainsi, la dll étant appelée par le classeur, ou bien
dois-je faire qqch du genre :
Sub tab_brut(nom_du_classeur As String)
Dim c3 As Integer 'dernière colonne du tableau de
saisie Dim i As Integer
Dim SH As New Excel.Workbook
Set SH = nom_du_classeur
SH.Application.ScreenUpdating = False
La version ci-dessus ne marche pas : SH = nom_du_classeur ne colle
pas puisque c'est un string...
Comment faire référence au classeur appellant déjà ouvert ?
Merci !
Salut,
Voila je n'ai pas pu résister j'ai fait un exemple, je le poste en
pièce jointe dans mon prochain message, voici quand même le code :
'//Projet DLL ActiveX nommé VBAExcel avec une ref a excel et un classe
nommée MaClasse1 :
Option Explicit
Private m_oWorkBook As Excel.Workbook
Public Sub SetWorkBook(oWB As Object)
Set m_oWorkBook = oWB
End Sub
Private Sub Class_Terminate()
Set m_oWorkBook = Nothing
End Sub
'//Fonction exemple
Public Sub CompleteCell(wCol As Integer, wFromRow As Integer, wToRow
As Integer)
Dim i As Integer, oSheet As Excel.Worksheet
Set oSheet = m_oWorkBook.ActiveSheet
Call Randomize(Timer)
For i = wFromRow To wToRow
oSheet.Cells(i, wCol) = "Nb VBA #" & i & "="
oSheet.Cells(i, wCol + 1) = Int(Rnd * 10000 + 1000)
Next
End Sub
'//Code dans la feuille excel (qui contient un commandbutton) :
Private Sub CommandButton1_Click()
'//on peut aussi créer ca en public une bonne fois pour toute !
Dim oMaClasse As VBAExcel.MaClasse1
Set oMaClasse = New VBAExcel.MaClasse1
'//référence pr la dll
Call oMaClasse.SetWorkBook(ThisWorkbook)
'//fonction de test :
Call oMaClasse.CompleteCell(2, 5, 25)
Set oMaClasse = Nothing
End Sub
Voila :)
ng wrote:Salut,
Si tu veux travailler ton classeur depuis ta DLL il suffit de faire
ceci par exemple :
'//Code VB de la DLL :
Option Explicit
'//on pourrait typer l'objet mais il faudrait faire une ref a excel
ds ta dll
Private m_oClasseurRef As Object
'//ton code... tu peux travailler avec l'objet m_oClasseurRef qui
sera ton '//classeur excel (si tu veux l'intellisence, type l'objet
cf plus haut).
Public Sub SetClasseurObj(oRef As Object)
Set m_oClasseurRef = oRef
End Sub
Private Sub Class_Terminate()
Set m_oClasseurRef = Nothing
End Sub
'//Sous excel :
'//Déclaration et création d'une instance de ta classe VB avec New...
'//Puis tout au début :
Call oMonObjetClasse.SetClasseurObj(ThisWorkbook)
Voila, si ca t'interesse je peux faire un exemple, je viens (enfin)
de réinstaller excel ;)
PM wrote:Bonjour !
et merci pour les indications qui m'ont déjà été données, par
exemple par Nicolas G, en réponse à ma question du 3 nov 8:50.
J' ai fait un exemple avec affichage de "coucou" et, évidemment, ça
marche. (!)
Maintenant je veux que ma dll travaille sur le classeur Excel qui va
l'appeler comme du code VBA qui serait placé dans ce classeur.
Dois-je faire référence au classeur dans la dll ?
Par exemple, voici un bout de code VBA dans Excel
Sub tab_brut()
Dim c3 As Integer 'dernière colonne du tableau de
saisie Dim i As Integer
Application.ScreenUpdating = False
.......... etc.
Puis-je laisser ainsi, la dll étant appelée par le classeur, ou bien
dois-je faire qqch du genre :
Sub tab_brut(nom_du_classeur As String)
Dim c3 As Integer 'dernière colonne du tableau de
saisie Dim i As Integer
Dim SH As New Excel.Workbook
Set SH = nom_du_classeur
SH.Application.ScreenUpdating = False
La version ci-dessus ne marche pas : SH = nom_du_classeur ne colle
pas puisque c'est un string...
Comment faire référence au classeur appellant déjà ouvert ?
Merci !
Salut,
Voila je n'ai pas pu résister j'ai fait un exemple, je le poste en
pièce jointe dans mon prochain message, voici quand même le code :
'//Projet DLL ActiveX nommé VBAExcel avec une ref a excel et un classe
nommée MaClasse1 :
Option Explicit
Private m_oWorkBook As Excel.Workbook
Public Sub SetWorkBook(oWB As Object)
Set m_oWorkBook = oWB
End Sub
Private Sub Class_Terminate()
Set m_oWorkBook = Nothing
End Sub
'//Fonction exemple
Public Sub CompleteCell(wCol As Integer, wFromRow As Integer, wToRow
As Integer)
Dim i As Integer, oSheet As Excel.Worksheet
Set oSheet = m_oWorkBook.ActiveSheet
Call Randomize(Timer)
For i = wFromRow To wToRow
oSheet.Cells(i, wCol) = "Nb VBA #" & i & "="
oSheet.Cells(i, wCol + 1) = Int(Rnd * 10000 + 1000)
Next
End Sub
'//Code dans la feuille excel (qui contient un commandbutton) :
Private Sub CommandButton1_Click()
'//on peut aussi créer ca en public une bonne fois pour toute !
Dim oMaClasse As VBAExcel.MaClasse1
Set oMaClasse = New VBAExcel.MaClasse1
'//référence pr la dll
Call oMaClasse.SetWorkBook(ThisWorkbook)
'//fonction de test :
Call oMaClasse.CompleteCell(2, 5, 25)
Set oMaClasse = Nothing
End Sub
Voila :)
ng wrote:
Salut,
Si tu veux travailler ton classeur depuis ta DLL il suffit de faire
ceci par exemple :
'//Code VB de la DLL :
Option Explicit
'//on pourrait typer l'objet mais il faudrait faire une ref a excel
ds ta dll
Private m_oClasseurRef As Object
'//ton code... tu peux travailler avec l'objet m_oClasseurRef qui
sera ton '//classeur excel (si tu veux l'intellisence, type l'objet
cf plus haut).
Public Sub SetClasseurObj(oRef As Object)
Set m_oClasseurRef = oRef
End Sub
Private Sub Class_Terminate()
Set m_oClasseurRef = Nothing
End Sub
'//Sous excel :
'//Déclaration et création d'une instance de ta classe VB avec New...
'//Puis tout au début :
Call oMonObjetClasse.SetClasseurObj(ThisWorkbook)
Voila, si ca t'interesse je peux faire un exemple, je viens (enfin)
de réinstaller excel ;)
PM wrote:
Bonjour !
et merci pour les indications qui m'ont déjà été données, par
exemple par Nicolas G, en réponse à ma question du 3 nov 8:50.
J' ai fait un exemple avec affichage de "coucou" et, évidemment, ça
marche. (!)
Maintenant je veux que ma dll travaille sur le classeur Excel qui va
l'appeler comme du code VBA qui serait placé dans ce classeur.
Dois-je faire référence au classeur dans la dll ?
Par exemple, voici un bout de code VBA dans Excel
Sub tab_brut()
Dim c3 As Integer 'dernière colonne du tableau de
saisie Dim i As Integer
Application.ScreenUpdating = False
.......... etc.
Puis-je laisser ainsi, la dll étant appelée par le classeur, ou bien
dois-je faire qqch du genre :
Sub tab_brut(nom_du_classeur As String)
Dim c3 As Integer 'dernière colonne du tableau de
saisie Dim i As Integer
Dim SH As New Excel.Workbook
Set SH = nom_du_classeur
SH.Application.ScreenUpdating = False
La version ci-dessus ne marche pas : SH = nom_du_classeur ne colle
pas puisque c'est un string...
Comment faire référence au classeur appellant déjà ouvert ?
Merci !
Salut,
Voila je n'ai pas pu résister j'ai fait un exemple, je le poste en
pièce jointe dans mon prochain message, voici quand même le code :
'//Projet DLL ActiveX nommé VBAExcel avec une ref a excel et un classe
nommée MaClasse1 :
Option Explicit
Private m_oWorkBook As Excel.Workbook
Public Sub SetWorkBook(oWB As Object)
Set m_oWorkBook = oWB
End Sub
Private Sub Class_Terminate()
Set m_oWorkBook = Nothing
End Sub
'//Fonction exemple
Public Sub CompleteCell(wCol As Integer, wFromRow As Integer, wToRow
As Integer)
Dim i As Integer, oSheet As Excel.Worksheet
Set oSheet = m_oWorkBook.ActiveSheet
Call Randomize(Timer)
For i = wFromRow To wToRow
oSheet.Cells(i, wCol) = "Nb VBA #" & i & "="
oSheet.Cells(i, wCol + 1) = Int(Rnd * 10000 + 1000)
Next
End Sub
'//Code dans la feuille excel (qui contient un commandbutton) :
Private Sub CommandButton1_Click()
'//on peut aussi créer ca en public une bonne fois pour toute !
Dim oMaClasse As VBAExcel.MaClasse1
Set oMaClasse = New VBAExcel.MaClasse1
'//référence pr la dll
Call oMaClasse.SetWorkBook(ThisWorkbook)
'//fonction de test :
Call oMaClasse.CompleteCell(2, 5, 25)
Set oMaClasse = Nothing
End Sub
Voila :)
ng wrote:Salut,
Si tu veux travailler ton classeur depuis ta DLL il suffit de faire
ceci par exemple :
'//Code VB de la DLL :
Option Explicit
'//on pourrait typer l'objet mais il faudrait faire une ref a excel
ds ta dll
Private m_oClasseurRef As Object
'//ton code... tu peux travailler avec l'objet m_oClasseurRef qui
sera ton '//classeur excel (si tu veux l'intellisence, type l'objet
cf plus haut).
Public Sub SetClasseurObj(oRef As Object)
Set m_oClasseurRef = oRef
End Sub
Private Sub Class_Terminate()
Set m_oClasseurRef = Nothing
End Sub
'//Sous excel :
'//Déclaration et création d'une instance de ta classe VB avec New...
'//Puis tout au début :
Call oMonObjetClasse.SetClasseurObj(ThisWorkbook)
Voila, si ca t'interesse je peux faire un exemple, je viens (enfin)
de réinstaller excel ;)
PM wrote:Bonjour !
et merci pour les indications qui m'ont déjà été données, par
exemple par Nicolas G, en réponse à ma question du 3 nov 8:50.
J' ai fait un exemple avec affichage de "coucou" et, évidemment, ça
marche. (!)
Maintenant je veux que ma dll travaille sur le classeur Excel qui va
l'appeler comme du code VBA qui serait placé dans ce classeur.
Dois-je faire référence au classeur dans la dll ?
Par exemple, voici un bout de code VBA dans Excel
Sub tab_brut()
Dim c3 As Integer 'dernière colonne du tableau de
saisie Dim i As Integer
Application.ScreenUpdating = False
.......... etc.
Puis-je laisser ainsi, la dll étant appelée par le classeur, ou bien
dois-je faire qqch du genre :
Sub tab_brut(nom_du_classeur As String)
Dim c3 As Integer 'dernière colonne du tableau de
saisie Dim i As Integer
Dim SH As New Excel.Workbook
Set SH = nom_du_classeur
SH.Application.ScreenUpdating = False
La version ci-dessus ne marche pas : SH = nom_du_classeur ne colle
pas puisque c'est un string...
Comment faire référence au classeur appellant déjà ouvert ?
Merci !
Voila l'exemple en question, il fut bien entendu compiler la DLL avant de
faire quoi que ce soit.
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
ng wrote:Salut,
Si tu veux travailler ton classeur depuis ta DLL il suffit de faire
ceci par exemple :
'//Code VB de la DLL :
Option Explicit
'//on pourrait typer l'objet mais il faudrait faire une ref a excel
ds ta dll
Private m_oClasseurRef As Object
'//ton code... tu peux travailler avec l'objet m_oClasseurRef qui
sera ton '//classeur excel (si tu veux l'intellisence, type l'objet
cf plus haut).
Public Sub SetClasseurObj(oRef As Object)
Set m_oClasseurRef = oRef
End Sub
Private Sub Class_Terminate()
Set m_oClasseurRef = Nothing
End Sub
'//Sous excel :
'//Déclaration et création d'une instance de ta classe VB avec New...
'//Puis tout au début :
Call oMonObjetClasse.SetClasseurObj(ThisWorkbook)
Voila, si ca t'interesse je peux faire un exemple, je viens (enfin) de
réinstaller excel ;)
PM wrote:Bonjour !
et merci pour les indications qui m'ont déjà été données, par exemple
par Nicolas G, en réponse à ma question du 3 nov 8:50.
J' ai fait un exemple avec affichage de "coucou" et, évidemment, ça
marche. (!)
Maintenant je veux que ma dll travaille sur le classeur Excel qui va
l'appeler comme du code VBA qui serait placé dans ce classeur.
Dois-je faire référence au classeur dans la dll ?
Par exemple, voici un bout de code VBA dans Excel
Sub tab_brut()
Dim c3 As Integer 'dernière colonne du tableau de
saisie Dim i As Integer
Application.ScreenUpdating = False
.......... etc.
Puis-je laisser ainsi, la dll étant appelée par le classeur, ou bien
dois-je faire qqch du genre :
Sub tab_brut(nom_du_classeur As String)
Dim c3 As Integer 'dernière colonne du tableau de
saisie Dim i As Integer
Dim SH As New Excel.Workbook
Set SH = nom_du_classeur
SH.Application.ScreenUpdating = False
La version ci-dessus ne marche pas : SH = nom_du_classeur ne colle
pas puisque c'est un string...
Comment faire référence au classeur appellant déjà ouvert ?
Merci !
Voila l'exemple en question, il fut bien entendu compiler la DLL avant de
faire quoi que ce soit.
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
ng wrote:
Salut,
Si tu veux travailler ton classeur depuis ta DLL il suffit de faire
ceci par exemple :
'//Code VB de la DLL :
Option Explicit
'//on pourrait typer l'objet mais il faudrait faire une ref a excel
ds ta dll
Private m_oClasseurRef As Object
'//ton code... tu peux travailler avec l'objet m_oClasseurRef qui
sera ton '//classeur excel (si tu veux l'intellisence, type l'objet
cf plus haut).
Public Sub SetClasseurObj(oRef As Object)
Set m_oClasseurRef = oRef
End Sub
Private Sub Class_Terminate()
Set m_oClasseurRef = Nothing
End Sub
'//Sous excel :
'//Déclaration et création d'une instance de ta classe VB avec New...
'//Puis tout au début :
Call oMonObjetClasse.SetClasseurObj(ThisWorkbook)
Voila, si ca t'interesse je peux faire un exemple, je viens (enfin) de
réinstaller excel ;)
PM wrote:
Bonjour !
et merci pour les indications qui m'ont déjà été données, par exemple
par Nicolas G, en réponse à ma question du 3 nov 8:50.
J' ai fait un exemple avec affichage de "coucou" et, évidemment, ça
marche. (!)
Maintenant je veux que ma dll travaille sur le classeur Excel qui va
l'appeler comme du code VBA qui serait placé dans ce classeur.
Dois-je faire référence au classeur dans la dll ?
Par exemple, voici un bout de code VBA dans Excel
Sub tab_brut()
Dim c3 As Integer 'dernière colonne du tableau de
saisie Dim i As Integer
Application.ScreenUpdating = False
.......... etc.
Puis-je laisser ainsi, la dll étant appelée par le classeur, ou bien
dois-je faire qqch du genre :
Sub tab_brut(nom_du_classeur As String)
Dim c3 As Integer 'dernière colonne du tableau de
saisie Dim i As Integer
Dim SH As New Excel.Workbook
Set SH = nom_du_classeur
SH.Application.ScreenUpdating = False
La version ci-dessus ne marche pas : SH = nom_du_classeur ne colle
pas puisque c'est un string...
Comment faire référence au classeur appellant déjà ouvert ?
Merci !
Voila l'exemple en question, il fut bien entendu compiler la DLL avant de
faire quoi que ce soit.
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
ng wrote:Salut,
Si tu veux travailler ton classeur depuis ta DLL il suffit de faire
ceci par exemple :
'//Code VB de la DLL :
Option Explicit
'//on pourrait typer l'objet mais il faudrait faire une ref a excel
ds ta dll
Private m_oClasseurRef As Object
'//ton code... tu peux travailler avec l'objet m_oClasseurRef qui
sera ton '//classeur excel (si tu veux l'intellisence, type l'objet
cf plus haut).
Public Sub SetClasseurObj(oRef As Object)
Set m_oClasseurRef = oRef
End Sub
Private Sub Class_Terminate()
Set m_oClasseurRef = Nothing
End Sub
'//Sous excel :
'//Déclaration et création d'une instance de ta classe VB avec New...
'//Puis tout au début :
Call oMonObjetClasse.SetClasseurObj(ThisWorkbook)
Voila, si ca t'interesse je peux faire un exemple, je viens (enfin) de
réinstaller excel ;)
PM wrote:Bonjour !
et merci pour les indications qui m'ont déjà été données, par exemple
par Nicolas G, en réponse à ma question du 3 nov 8:50.
J' ai fait un exemple avec affichage de "coucou" et, évidemment, ça
marche. (!)
Maintenant je veux que ma dll travaille sur le classeur Excel qui va
l'appeler comme du code VBA qui serait placé dans ce classeur.
Dois-je faire référence au classeur dans la dll ?
Par exemple, voici un bout de code VBA dans Excel
Sub tab_brut()
Dim c3 As Integer 'dernière colonne du tableau de
saisie Dim i As Integer
Application.ScreenUpdating = False
.......... etc.
Puis-je laisser ainsi, la dll étant appelée par le classeur, ou bien
dois-je faire qqch du genre :
Sub tab_brut(nom_du_classeur As String)
Dim c3 As Integer 'dernière colonne du tableau de
saisie Dim i As Integer
Dim SH As New Excel.Workbook
Set SH = nom_du_classeur
SH.Application.ScreenUpdating = False
La version ci-dessus ne marche pas : SH = nom_du_classeur ne colle
pas puisque c'est un string...
Comment faire référence au classeur appellant déjà ouvert ?
Merci !