Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
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 26/08/2011, 11h14   #1
Invité de passage
 
Inscription : juillet 2011
Messages : 7
Détails du profil
Informations forums :
Inscription : juillet 2011
Messages : 7
Points : 1
Points : 1
Par défaut Excel ou Open Office ?

Bonjour,
ma société envisage de passer sous open office prochainement. Je suis donc en train de voir l'impact sur les macros qui ont été développées dans nos fichiers Excel.

A première vue, ce n'est pas trop catastrophique mais il y a quand même quelques ajustements. J'essaie de modifier le code pour avoir une version qui puisse être utilisée indifféremment sur Excel ou Open Office. Comme il y a des cas où ça ne semble pas possible, je voudrais pouvoir tester quel logiciel vient de lancer la macro pour déterminer la syntaxe à utiliser. Quelque chose du type :

Code :
1
2
3
4
5
if Application.Name = "Microsoft Excel" then
    'Code valide pour Excel
  else 
    'Code valide pour Open Office
  end if
D'où ma question : connaissez-vous un moyen pour déterminer si mon fichier xls a été ouvert par Excel ou par Open Office ? Je pensais utiliser Application.Name ou Application.Version mais ça me donne la même chose sur les deux environnements. Je peux aussi lancer une instruction qui "plante" sous OO. En cas de On error je sais que je suis sous OO mais ce n'est pas très "propre".

Si l'un de vous a une idée, je suis preneur.

Merci.
ced92 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/08/2011, 11h21   #2
Membre actif
 
Inscription : novembre 2008
Messages : 188
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 188
Points : 194
Points : 194
Je suis peut-être hors-sujet mais autant que je me souvienne, le modèle objet d'OO n'est pas du tout le même que celui de Microsoft Office...comment fais-tu pour coder des applications compatibles avec les deux du coup?

Sinon je ne connais pas l'astuce pour ton problème mais pour éviter les tests inutiles, tu peux définir une compilation conditionnelle avec VBA (http://www.dailydoseofexcel.com/arch...ion-arguments/).

...si t'as beaucoup de divergences et des codes un peu lourd, ça permet d'accélérer l'exécution.
Sclarckone est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/08/2011, 09h11   #3
Invité de passage
 
Inscription : juillet 2011
Messages : 7
Détails du profil
Informations forums :
Inscription : juillet 2011
Messages : 7
Points : 1
Points : 1
Bonjour Sclarckone,
les dernières versions d'OO sont capables de lire et interpréter les macros VBA....à quelques erreurs prêt ! Par exemple, je rencontre systématiquement une erreur sur l'instruction Redim Preserve pour un tableau à plusieurs dimensions. Pour que ma macro VBA fonctionne sous OO, il faut dans ce cas que déclare une première fois mon tableau sous la forme Dim tab (0,0).
ced92 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/08/2011, 09h31   #4
Expert Confirmé
 
Homme Philippe
ex Observeur CGG / Analyste prog.
Inscription : juin 2006
Messages : 1 706
Détails du profil
Informations personnelles :
Nom : Homme Philippe
Localisation : France, Finistère (Bretagne)

Informations professionnelles :
Activité : ex Observeur CGG / Analyste prog.

Informations forums :
Inscription : juin 2006
Messages : 1 706
Points : 3 627
Points : 3 627
Salut,peut-être sur ce doc Pdf http://documentation.openoffice.org/...rBasicXref.pdf
__________________
Pensez à Voter, d'avance merci. ( Pouces en bas à la droite de Citer )
Balisez votre code après l'avoir indenté sous Excel via Smart Indenter
Autre utilitaire : MZ Tools 3.0 VBA

Contribution : Excel / Word / PDF avec Adobe Acrobat Pro / PDFCreator 1 2
kiki29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/08/2011, 10h27   #5
Expert Confirmé
 
Philippe Tulliez
Développeur et formateur VBA, Excel et Word.
Inscription : janvier 2010
Messages : 1 311
Détails du profil
Informations personnelles :
Nom : Philippe Tulliez
Localisation : Belgique

Informations professionnelles :
Activité : Développeur et formateur VBA, Excel et Word.

Informations forums :
Inscription : janvier 2010
Messages : 1 311
Points : 2 674
Points : 2 674
Bonjour,
Je suis assez d'accord avec Sclarckone et suis très attentif à ce que ced92 nous annonce car pour ma part, j'ai OOo et je n'ai jamais réussis à faire tourner mes codes VBA sur OOo Basic.
Connaissez vous ce lien Convert VBA to OpenOffice Basic ?
__________________
Philippe Tulliez
http://philippe.tulliez.be
Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)

Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
corona est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/08/2011, 10h59   #6
Invité de passage
 
Inscription : juillet 2011
Messages : 7
Détails du profil
Informations forums :
Inscription : juillet 2011
Messages : 7
Points : 1
Points : 1
Novell et SUN travaillent sur un projet pour qu'OO puisse interpréter des macros écrites en VBA : http://wiki.services.openoffice.org/wiki/VBA
ced92 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/08/2011, 11h05   #7
Expert Confirmé
 
Philippe Tulliez
Développeur et formateur VBA, Excel et Word.
Inscription : janvier 2010
Messages : 1 311
Détails du profil
Informations personnelles :
Nom : Philippe Tulliez
Localisation : Belgique

Informations professionnelles :
Activité : Développeur et formateur VBA, Excel et Word.

Informations forums :
Inscription : janvier 2010
Messages : 1 311
Points : 2 674
Points : 2 674
Bonjour ced92
Citation:
Envoyé par ced92 Voir le message
Novell et SUN travaillent sur un projet pour qu'OO puisse interpréter des macros écrites en VBA : http://wiki.services.openoffice.org/wiki/VBA
Oui, cela je l'avais lu et je crois que c'est payant mais ce qui m'a interpellé c'est ton message.
Citation:
Envoyé par ced92 Voir le message
Bonjour Sclarckone,
les dernières versions d'OO sont capables de lire et interpréter les macros VBA....à quelques erreurs prêt ! Par exemple, je rencontre systématiquement une erreur sur l'instruction Redim Preserve pour un tableau à plusieurs dimensions. Pour que ma macro VBA fonctionne sous OO, il faut dans ce cas que déclare une première fois mon tableau sous la forme Dim tab (0,0).
Ton expérience à ce sujet m'intéresse au plus haut point.
__________________
Philippe Tulliez
http://philippe.tulliez.be
Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)

Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
corona est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/08/2011, 15h15   #8
Responsable Access
 
Avatar de Arkham46
 
Inscription : septembre 2003
Messages : 4 300
Détails du profil
Informations personnelles :
Localisation : France, Loiret (Centre)

Informations forums :
Inscription : septembre 2003
Messages : 4 300
Points : 7 939
Points : 7 939
bjr,

en début de module permet de coder en VBA

mais effectivement ça ne marche pas à 100%

Sinon essaye la constante de compilation VBA6
Code :
1
2
3
4
5
#IF VBA6 then
  ' code pour Office
#Else
  ' code pou OOo
#End if
VBA6 est True à partir de Office 2000
Je ne sais pas ce que ça donne en basic ooo (je ne sais même pas s'il accepte des constantes de compilation ...)
__________________
Assistant de création/modification de rubans Office
Utilisez en VBA les librairies graphiques GDI, GDI+ et openGL

Blog Office Mon Site DVP
Arkham46 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/08/2011, 16h35   #9
Invité de passage
 
Inscription : juillet 2011
Messages : 7
Détails du profil
Informations forums :
Inscription : juillet 2011
Messages : 7
Points : 1
Points : 1
La constante de compilation ne fonctionne pas. Je vais creuser. Merci pour l'idée.

Pour Corona :
le code Option VBASupport 1 permet effectivement de lire une macro VBA. Après quelques tests, je trouve un certain nombre de limites, telles que :
  • Redim preserve tab(0 to 2, 0 to k) ne fonctionne pas (il faut au préalable déclarer un dim tab(0,0))
  • Application.ScreenUpdating = False n'est pas pris en compte
  • Le .ShowAllData semble aussi poser problème
  • ...
ced92 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/08/2011, 16h37   #10
Membre actif
 
Inscription : novembre 2008
Messages : 188
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 188
Points : 194
Points : 194
Citation:
Envoyé par ced92 Voir le message
Redim preserve tab(0 to 2, 0 to k) ne fonctionne pas (il faut au préalable déclarer un dim tab(0,0))
Y a pas moyen de surcharger les fonctions avec OO (auquel cas tu pourrais tester ton tableau avant de le redimensionner...)?
Sclarckone est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/08/2011, 17h04   #11
Responsable
Office & Excel

 
Avatar de Pierre Fauconnier
 
Homme Pierre Fauconnier
Formateur et développeur informatique indépendant
Inscription : novembre 2003
Messages : 8 198
Détails du profil
Informations personnelles :
Nom : Homme Pierre Fauconnier
Âge : 45
Localisation : Belgique

Informations professionnelles :
Activité : Formateur et développeur informatique indépendant
Secteur : Enseignement

Informations forums :
Inscription : novembre 2003
Messages : 8 198
Points : 14 398
Points : 14 398
Envoyer un message via Skype™ à Pierre Fauconnier
Salut.

Il y a de fortes chances que le code qui utilise l'interface pose problème, car les boites de dialogue ne sont pas identiques sur Ooo et Excel.

Il faudrait passer les objets en revue, mais il y a fort à parier que des différences importantes se feront sentir.

Pour des macros "un peu costaudes", je ne suis pas certain que ce soit une bonne chose de transposer le code puis de (tenter de) résoudre les problèmes un à un au moement où ils se posent.
__________________
"Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
---------------

Ma nouvelle vidéo: comparer des listes via une MFC - Mes articles sur DVP
Vous souhaitez rédiger pour DVP? Contactez-moi
Amoureux de la langue française? Venez corriger nos ressources
VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
N'oubliez pas de VOTER (en bas à droite d'un message)

---------------
Pierre Fauconnier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/08/2011, 17h05   #12
Expert Confirmé
 
Philippe Tulliez
Développeur et formateur VBA, Excel et Word.
Inscription : janvier 2010
Messages : 1 311
Détails du profil
Informations personnelles :
Nom : Philippe Tulliez
Localisation : Belgique

Informations professionnelles :
Activité : Développeur et formateur VBA, Excel et Word.

Informations forums :
Inscription : janvier 2010
Messages : 1 311
Points : 2 674
Points : 2 674
Bonjour,
Citation:
Envoyé par ced92 Voir le message
Pour Corona :
le code Option VBASupport 1 permet effectivement de lire une macro VBA. Après quelques tests, je trouve un certain nombre de limites, telles que :
  • Redim preserve tab(0 to 2, 0 to k) ne fonctionne pas (il faut au préalable déclarer un dim tab(0,0))
  • Application.ScreenUpdating = False n'est pas pris en compte
  • Le .ShowAllData semble aussi poser problème
  • ...
Merci pour le tuyau, je vais faire des tests
__________________
Philippe Tulliez
http://philippe.tulliez.be
Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)

Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
corona est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h04.


 
 
 
 
Partenaires

Hébergement Web