OVH Cloud OVH Cloud

On tourne sous VB / sous VBA / en VB ?

17 réponses
Avatar
YannX
Bonjour,

Une question saugrenue, car je peine a faire tourner
sous VBA/Access un module de classe récupéré :
existe-t-il une fonction rendant simplement à l'exécution
un résultat dans
enum 0=VBcompiled, 1 = vBasic , 2 = VBA .....

Histoire de pouvoir utiliser (selon le cas) :
App.Path & App.EXEName
ou
Application.CurrentDb.Name ....
par exemple ?

Merci
YannX

10 réponses

1 2
Avatar
YannX
> Bonjour,

Une question saugrenue, car je peine a faire tourner
sous VBA/Access un module de classe récupéré :
existe-t-il une fonction rendant simplement à l'exécution
un résultat dans
enum 0=VBcompiled, 1 = vBasic , 2 = VBA .....

Histoire de pouvoir utiliser (selon le cas) :
App.Path & App.EXEName
ou
Application.CurrentDb.Name ....
par exemple ?

Merci
YannX




Entre-temps, et grace à un autre message.....
je me dis que cela ne doit pas être possible,
car cela voudrait dire de la compilation conditionnelle :

en effet, pour compiler, il faut que mes variables soient connues :

#ifDef VBA
Public App_Path$ ...
App_path = App.Path
#else
Public App_Path$ = Application.CurrentDB.Name
#endif


En bref l'histoire du serpent qui se mort la queue !

Un Work-around ?
Merci qd meme de m'avoir lu

YannX
Avatar
Antoine Labusquière
C'est simple: sous Access ou Excel, c'est du VBA.
Sous Bisual Basic, c'est du VB :)

Donc tu dois adapter ton code en fonction de l'endroit où tu veux
l'exécuter.
Sachant qu'il n'y pas beaucoup de problèmes de différences de langage comme
celui-ci.


"YannX" a écrit dans le message de
news:e5tM5X8$
Bonjour,

Une question saugrenue, car je peine a faire tourner
sous VBA/Access un module de classe récupéré :
existe-t-il une fonction rendant simplement à l'exécution
un résultat dans
enum 0=VBcompiled, 1 = vBasic , 2 = VBA .....

Histoire de pouvoir utiliser (selon le cas) :
App.Path & App.EXEName
ou
Application.CurrentDb.Name ....
par exemple ?

Merci
YannX




Avatar
Clive Lumb
"YannX" a écrit dans le message de
news:e5tM5X8$
Bonjour,

Une question saugrenue, car je peine a faire tourner
sous VBA/Access un module de classe récupéré :
existe-t-il une fonction rendant simplement à l'exécution
un résultat dans
enum 0=VBcompiled, 1 = vBasic , 2 = VBA .....

Histoire de pouvoir utiliser (selon le cas) :
App.Path & App.EXEName
ou
Application.CurrentDb.Name ....
par exemple ?

Merci
YannX




Voici un test

Sub VersionTest()
On Error GoTo inVB
Debug.Print Application.Name ' genère un erreur dans VB, mais pas dans
VBA
MsgBox "VBA"
Exit Sub

MustBeVB:
On Error GoTo inIDE
Debug.Print 1 / 0 ' genère un erreur sous l'IDE, mais pas en compilé
MsgBox "VB compilé"
Exit Sub

inVB:
Resume MustBeVB

inIDE:
MsgBox "VB IDE"

End Sub

Clive
Avatar
YannX
Bnjr,

merci : super cette solutiion !
en fait je n'y pense pas assez,
à raisonner par exceptions,
depuis qu''il commence a exister un vrai controle d'erreurs !
que l'on peut traiter comme un test spécifique !

D'ailleurs, cette technique apparait dans
de plus en plus nombreuses fonctions
utilitaires vues ces derniers temps !

@+

"Clive Lumb" a écrit dans le message
de news:ef%

"YannX" a écrit dans le message de
news:e5tM5X8$
> Bonjour,
>
> Une question saugrenue, car je peine a faire tourner
> sous VBA/Access un module de classe récupéré :
> existe-t-il une fonction rendant simplement à l'exécution
> un résultat dans
> enum 0=VBcompiled, 1 = vBasic , 2 = VBA .....
>
> Histoire de pouvoir utiliser (selon le cas) :
> App.Path & App.EXEName
> ou
> Application.CurrentDb.Name ....
> par exemple ?
>
> Merci
> YannX
>

Voici un test

Sub VersionTest()
On Error GoTo inVB
Debug.Print Application.Name ' genère un erreur dans VB, mais pas dans
VBA
MsgBox "VBA"
Exit Sub

MustBeVB:
On Error GoTo inIDE
Debug.Print 1 / 0 ' genère un erreur sous l'IDE, mais pas en compilé
MsgBox "VB compilé"
Exit Sub

inVB:
Resume MustBeVB

inIDE:
MsgBox "VB IDE"

End Sub

Clive






Avatar
YannX
Bnjr (re)

Je m'empressai d'utiliser cette version
(quoique j'ai éliminé l'usage d'un enum).

Mais je voudrais te suggérer de le transmettre à la FAQ VB developpez
(avec ta permission, et le respect de tes idées /droit d'auteur)

Et peut-etre, mieux meme, si tu connais comme cela
une expression sur le meme principe qui ferait
la différence entre MDB et MDE, ou bien
entre RunTime Access et version complète d'Access !

Voila un outil qui risque d'amuser bcp les Devs.....

Bon WE


"Clive Lumb" a écrit dans le message
de news:ef%

"YannX" a écrit dans le message de
news:e5tM5X8$
> Bonjour,
>
> Une question saugrenue, car je peine a faire tourner
> sous VBA/Access un module de classe récupéré :
> existe-t-il une fonction rendant simplement à l'exécution
> un résultat dans
> enum 0=VBcompiled, 1 = vBasic , 2 = VBA .....
>
> Histoire de pouvoir utiliser (selon le cas) :
> App.Path & App.EXEName
> ou
> Application.CurrentDb.Name ....
> par exemple ?
>
> Merci
> YannX
>

Voici un test

Sub VersionTest()
On Error GoTo inVB
Debug.Print Application.Name ' genère un erreur dans VB, mais pas dans
VBA
MsgBox "VBA"
Exit Sub

MustBeVB:
On Error GoTo inIDE
Debug.Print 1 / 0 ' genère un erreur sous l'IDE, mais pas en compilé
MsgBox "VB compilé"
Exit Sub

inVB:
Resume MustBeVB

inIDE:
MsgBox "VB IDE"

End Sub

Clive



'*********** Code End **************
Function VersionTest() As Integer
' sur une idée signalée par Clive Lumb sur mpfVb
' 1 = VBA / 11 = VB_IDE / 13 = VB compilé
On Error GoTo inVB
Debug.Print Application.Name ' genère un erreur dans VB, mais pas
dans VBA
VersionTest = 1 ' MsgBox "VBA"
Exit Function
inVB:
Resume MustBeVB
MustBeVB:
On Error GoTo inIDE
Debug.Print 1 / 0 ' genère un erreur sous l'IDE, mais pas en compilé
VersionTest = 13 ' MsgBox "VB compilé"
Exit Function
inIDE:
VersionTest = 11 ' MsgBox "VB IDE"
End Function ' VersionText
Avatar
Raymond [mvp]
Bonjour.

pour le MDE, regarde la page :
http://officesystem.access.free.fr/ex_base_mde.htm

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"YannX" a écrit dans le message de news:

Bnjr (re)

Je m'empressai d'utiliser cette version
(quoique j'ai éliminé l'usage d'un enum).

Mais je voudrais te suggérer de le transmettre à la FAQ VB developpez
(avec ta permission, et le respect de tes idées /droit d'auteur)

Et peut-etre, mieux meme, si tu connais comme cela
une expression sur le meme principe qui ferait
la différence entre MDB et MDE, ou bien
entre RunTime Access et version complète d'Access !

Voila un outil qui risque d'amuser bcp les Devs.....

Bon WE


Avatar
Raymond [mvp]
.../...

pour le runtime, ouvre un formulaire en design, tu sauras tout de suite.

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Raymond [mvp]" a écrit dans le message de
news: %23$
Bonjour.

pour le MDE, regarde la page :
http://officesystem.access.free.fr/ex_base_mde.htm



Avatar
Raymond [mvp]
je plaisantais mais tu as une fiche technique la-dessus:
http://support.microsoft.com/default.aspx?scid=kb;fr;103182

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Raymond [mvp]" a écrit dans le message de
news: Ojj%
.../...

pour le runtime, ouvre un formulaire en design, tu sauras tout de suite.



Avatar
YannX
Merci pour ces informations, je vais rajouter.

un doute tout de meme en VB : comment VB accepte-t-il
toutes les constantes acXXX :
est-ce bien par la référence à "Microsoft Access XX.X Object Library ?

Bon WE

"Raymond [mvp]" a écrit dans le message de
news:
je plaisantais mais tu as une fiche technique la-dessus:
http://support.microsoft.com/default.aspx?scid=kb;fr;103182

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Raymond [mvp]" a écrit dans le message


de
news: Ojj%
> .../...
>
> pour le runtime, ouvre un formulaire en design, tu sauras tout de suite.
>




Avatar
Raymond [mvp]
les constantes sont dans toutes les librairies.
par exemple dans la librairie Access objects library, tu as la classe
AcCommand dans laquelle tu retrouves tous les constantes énumérées AcCmd...
qu'on retrouve dans DoCmd.RunCommand AcCmd....

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"YannX" a écrit dans le message de news:

Merci pour ces informations, je vais rajouter.

un doute tout de meme en VB : comment VB accepte-t-il
toutes les constantes acXXX :
est-ce bien par la référence à "Microsoft Access XX.X Object Library ?

Bon WE


1 2