× Aidez la recherche contre le COVID-19 avec votre ordi ! Rejoignez l'équipe PC Astuces Folding@home
 > Tous les forums > Forum Bureautique
 libre Office : macro Excel présente et non activeSujet résolu
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
denewton
  Posté le 21/11/2014 @ 12:26 
Aller en bas de la page 
Astucien

Bonjour,

Dans Libre Office calc, en ouvrant un ficher Excel qui contien une macro gérant l'ouverture du fichier (ouverture sur le signet du mois déterminé par la date d'ouverture), Libre office, pour une question de sécurité neutralise cette macro. On la retrouve dans vba project :

Rem Attribute VBA_ModuleType=VBADocumentModule
Option VBASupport 1
Private Sub Workbook_Open()

Select Case Month(Date)
Case 1: Sheets("Janvier").Select
Case 2: Sheets("Février").Select
Case 3: Sheets("Mars").Select
Case 4: Sheets("Avril").Select
Case 5: Sheets("Mai").Select
Case 6: Sheets("Juin").Select
Case 7: Sheets("Juillet").Select
Case 8: Sheets("Août").Select
Case 9: Sheets("Septembre").Select
Case 10: Sheets("Octobre").Select
Case 11: Sheets("Novembre").Select
Case 12: Sheets("Décembre").Select
End Select

Range("A30").End(xlUp).Select

End Sub

Quel est la syntaxe à adopter ?(il semble que le code VBA de Excel ne soit pas entièrement compatible - option et private ne sont pas compris)

Où la placer pour qu'elle s'exécute à l'ouverture ?

Cordialement

Bertrand

Publicité
poussebois
 Posté le 21/11/2014 à 13:47 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Maître astucien

Bonjour ,

Effectivement, VBA et OBasic ne sont pas compatibles.

Tu trouveras ici une documentation sur la programmation en OBasic, ce qui te permettra de faire les modifications nécessaires. Évidemment, ça demande un effort ...

@ +

denewton
 Posté le 21/11/2014 à 18:09 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Bonjour,

merci pour ton lien, mais si j'ai mis ce code, c'est qqn qui me l'aimablement proposé n'y connaissant rien en VBA. C'est pourquoi une aide me serait précieuse.

Cordialement

Bertrand

PS. Je ne suis bon qu'en Qbasic, j'ai bien fait du Fortran IV dans mon jeune temps (il n'y avait pas encore les micro), corrigé du Cobol, mais le Pascal, le C++, ou Python m'est obscure et je m'en sortait bien en Qbasic. Si le code est simple (VBA ou Obasic), je peux le comprendre et qqf l'adapter (le code fourni dans mon premier post, je l'ai adapté pour que le curseur dans la feuille soit à la bonne place).



Modifié par denewton le 21/11/2014 18:54
denewton
 Posté le 25/11/2014 à 22:51 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Bonsoir,

J'aimerai que quelqu'un qui connaisse bien l'équivalent du code VBA d'Excel mis dans le premier post, (VBA = ? Obasic dans Libre Office, je crois) me donne quelques tuyaux pour que le module traduit en Obasic fasse la même chose sous Libre Office Calc. C'est à dire qu'à l'ouverture du classeur, la feuille dont l'onglet est celui du mois courant s'ouvre (il y a 12 onglets dont les titres sont les mois de l'année) et se positionne si possible sur la première cellule libre ici A3 (ce n'est pas parfait), mais comme on est tenu à mettre la date sur une ligne vide, c'est déjà pas mal.

J'ai cru comprendre que le mois de la date est MONTH(CURRENT_DATE) ce qui remplacerait Month(Date) en VBA

Les formules utilisées dans chaque feuilles et la protection installée pour les protèger (d'origine Excel) fonctionnent très bien.

Merci à l'avance

Bertrand

Image de l'ouverture du fichier Excel de ce soir, 25 Novembre

Mytå
 Posté le 26/11/2014 à 00:10 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Salut le Forum

Un début de solution pour sélectionner la feuille selon la date.

Sub Run_at_open

Dim Document As Object

Dim Sheets As Object

Dim Sheet As Object

Document = ThisComponent

Sheets = Document.Sheets

Select Case Month(Date)

Case 1: Sheet = Sheets.getByName("Janvier")

Case 2: Sheet = Sheets.getByName("Février")

Case 3: Sheet = Sheets.getByName("Mars")

Case 4: Sheet = Sheets.getByName("Avril")

Case 5: Sheet = Sheets.getByName("Mai")

Case 6: Sheet = Sheets.getByName("Juin")

Case 7: Sheet = Sheets.getByName("Juillet")

Case 8: Sheet = Sheets.getByName("Août")

Case 9: Sheet = Sheets.getByName("Septembre")

Case 10: Sheet = Sheets.getByName("Octobre")

Case 11: Sheet = Sheets.getByName("Novembre")

Case 12: Sheet = Sheets.getByName("Décembre")

End Select

Controller = Document.getcurrentController

Controller.setActiveSheet(Sheet)

End Sub

Mytå



Modifié par Mytå le 26/11/2014 00:16
denewton
 Posté le 26/11/2014 à 12:14 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Bonjour,

Je vais faire la manip et donne réponse.

Merci

Bertrand

denewton
 Posté le 27/11/2014 à 00:30 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

bonjour,

J'ai mis dans modèle du document la macro (copier coller), et voici ce que ça me répond à l'exécution. J'ai inhibé les macros d'origine Excel en mettant "rem" à chaque ligne, ne sachant pas encore supprimer les macros. La macro LO est-elle à sa bonne place ? (j'ai enlevé dans la macro toutes les majuscules des mois mais ne faut-il pas faire le contraire et rajouter des majuscules dans le nom des onglets ?)

Cordialement

Bertrand



Modifié par denewton le 27/11/2014 10:15
denewton
 Posté le 27/11/2014 à 11:16 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Bonjour,

J'ai bien réussi à enlever les macros issues de Excel dans VBA project (suppression de VBA Projec).

Le résultat est le même. Pourtant il ne reste plus que la macro recopiée. (les majuscules ou les minuscules n'ont aucuns effets secondaires, si non, qu'il faut que les noms correspondent).

Qu'y a-t-il de trop ou de pas assez.

Les options de sécurité des macros sont au minimum.

Là, je calle.

Cordialement

Bertrand

denewton
 Posté le 27/11/2014 à 13:09 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Bonjour,

comme je ne sais pas rester tranquille avec un problème :

1- Je ne sais plus supprimer la bibliothèque issue d'Excel, mais je l'ai nettoyée de tous ses ingrédients. J'avais réussi une fois mais je ne sais plus comment pour que supprimer ne soit pas grisé.

2- la macro fournie fonctionne mais il faut l'exécuter à la main : elle ne le fait pas à l'ouverture directement. Comment la rendre automatique à l'ouverture ? Comme elle est faite pour simplifier le travail d'un utilisateur, si elle n'est pas automatique, elle devient inutile car il faut entrer dans les arcanes de Libre Office pour la trouver et l'exécuter.

3-le niveau de sécurité des macros doit être descendu à moyen, si non ça ne marche pas du tout, même en manuel. Libre Office est très prudent même pour ses propres macros...

Cordialement

Bertrand

Publicité
denewton
 Posté le 28/11/2014 à 00:06 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Bonjour,

Si, sous LO je charge un des fameux fichiers XLS, et que je lui garde ce format, il fonctionne très bien pour l'ouverture. Si je le convertis en ODS, c'est là que les ennuis commencent, puisque la macro en VBA n'est plus compatible Obasic.

Donc dans un premier temps je charge les fichiers XLS et les sauve en XLS. Quand on aura résolu le PB du démarrage de la macro Obasic équivalente dès l'ouverture, je passerai en totalité en LO.

Cordialement

Bertrand

Je ne mets pas le sujet comme résolu

mjd535
 Posté le 28/11/2014 à 09:33 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Bonjour,

je charge les fichiers XLS et les sauve en XLS

Ouvrir un .xls avec Calc et travailler dessus sans l'enregistrer préalablement au format .ods va immanquablement vous amener vers une corruption du fichier.

A vous de vous organiser pour adapter vos macros.

Je vous invite à sauvegarder un fichier sain et, si vous voulez continuer à travailler du xls sur LibO, de le faire sur une copie.



Modifié par mjd535 le 28/11/2014 09:34
denewton
 Posté le 28/11/2014 à 11:39 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien
mjd535 a écrit :

Bonjour,

je charge les fichiers XLS et les sauve en XLS

Ouvrir un .xls avec Calc et travailler dessus sans l'enregistrer préalablement au format .ods va immanquablement vous amener vers une corruption du fichier.

A vous de vous organiser pour adapter vos macros.

Je vous invite à sauvegarder un fichier sain et, si vous voulez continuer à travailler du xls sur LibO, de le faire sur une copie.

Bonjour,

Comment garder un fichier sain xls qui évolue donc à travers Lo. L'ods issu de cet xls perd la macro Excel ou du moins elle devient inefficace (incompatibilité des codes Vba et Obasic). Faut-il faire une sauvegarde xls puis ods, l'ods devenant le fichier sain et l'xls le fichier de travail ?

Cordialement

Bertrand

mjd535
 Posté le 28/11/2014 à 14:10 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Bonjour,

Il est toujours indispensable de travailler avec le format natif d'une application plutôt que de travailler avec d'autres formats.

Cela signifie que si vous ouvrez un document avec 'LibO', le format natif est odt, ods,...


Donc, lorsque vous avez un document créé avec MS'Office', l'ouvrir avec 'LibO', l'enregistrer immédiatement au format ODF (odt, ods…), travailler, enregistrer les modifications, et c'est seulement à partir de ce moment que vous pourrez enregistrer au format MS'Office'.

Bien évidemment, si vous avez des macros, le problème reste entier, les formats de macros n'étant pas compatibles.
C'est donc une impasse.

Lorsque vous aurez résolu le problème des macros, travaillez au format Open Document.
Je vous ai conseillé de sauvegarder votre fichier original en .xls s'il est sain avant qu'il soit corrompu par les modifications que vous lui apportez sous le format xls et de travailler sur une copie en respectant la procédure ci-dessus.



Modifié par mjd535 le 28/11/2014 14:13
denewton
 Posté le 29/11/2014 à 11:07 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Bonjour,

si, au risque de corrompre, on travaille avec le fichier XLS sous LiO et qu'on le sauvegarde sous ods et sous xls, j'espère que la macro xls qui est encore fonctionnelle à l'ouverture sous LiO est reconduite en intégralité dans le nouvel xls modifié, si non c'est la galère, car tout le monde n'a pas LiO ou Oo et tout le monde n'a pas excel (question d'OS, linux, windows ou Aple).

Cordialement

Bertrand

mjd535
 Posté le 29/11/2014 à 20:02 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Bonjour,

Si vous faites des allers/retours avec les deux formats, vous aurez des problèmes.

LibO ou AOO étant des produits libre s(et gratuits), vous devriez essayer de convaincre vos correspondants de travailler sur le logiciel libre.

denewton
 Posté le 30/11/2014 à 20:11 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Bonjour,

pour rendre automatique le macro à l'ouverture, il faut faire liaison entre l'évenement ouvrir le document et cette macro. (merci à mjd535 et mita et au forum de open office)

Attention l'ancienne macro VBA du fichier xls qui fonctionne à l'ouverture sous Libre Office, si on sauvegarde sous ods, sera perdue dans le fichier xls, si on passe de l'ods à l'xls et donc réciproquement la construction de l'automatisme ods n'est pas reconduite dans le fichier xls.

Cordialement

Bertrand



Modifié par denewton le 30/11/2014 20:45
Page : [1] 
Page 1 sur 1

Vous devez être connecté pour poster des messages. Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !


Les bons plans du moment PC Astuces

Tous les Bons Plans
29,79 €Plaque à induction portable Aicok 2000W à 29,79 € (via coupon)
Valable jusqu'au 30 Mai

Amazon fait une belle promotion sur la plaque à induction portable Aicok  2000W qui passe à 29,79 € livrée gratuitement. Pour profiter de l'offre, appliquer le coupon de 20 € de réduction présent sur la page du produit. Le prix passera à 29,79 € sur la page de confirmation de commande. Cette plaque à induction possède 10 niveaux de puissance et une minuterie jusqu'à 3 heures. 


> Voir l'offre
34,99 €Enceinte connectée Amazon Echo Dot avec horloge et assistant Alexa à 34,99 €
Valable jusqu'au 29 Mai

Amazon fait une promotion sur l'enceinte Amazon Echo Dot (3ème génération) qui passe à 34,99 € (au lieu de 69,99 €). Contrairement au modèle classique, cette version dispose d'un affichage LED pour consulter l'heure, la température extérieure ou les minuteurs. L'appareil piloté par la voix fonctionne avec Alexa, l’intelligence artificielle développée par Amazon. Vous pourrez avec elle écouter de la musique, interagir avec vos appareils domotiques, écouter les infos, la radio, connaître la météo et d’accéder à des milliers d’autres possibilités grâce aux Skills : recettes de cuisine, petits jeux, etc. Par rapport à la génération précédente, le son est amélioré et l'enceinte arbore un nouveau design. 


> Voir l'offre
15,99 €Multiprise Parafoudre Belkin 4 prises et cordon de 2 mètres à 15,99 €
Valable jusqu'au 30 Mai

Amazon fait une offre éclair sur la multiprise Parafoudre Belkin BSV400ca2M qui passe à 15,99 € alors qu'on la trouve habituellement à 19,99 €. Cette multiprise possède 4 prises et un cordon de 2 mètres. Elle offre une protection contre les surtensions.


> Voir l'offre

Sujets relatifs
open/libre office et les fichiers excel avec macro
Macro Excel : Sommes dans première ligne libre
Macro d'Excel à Open Office
Conversion Macro Excel 2003 en Open Office Calc
Bouton qui active une macro excel
Macro excel et Open office
Libre office
Macro Excel 4
LIBRE OFFICE CALC RECAPITULATION
mise à jour libre office
Plus de sujets relatifs à libre Office : macro Excel présente et non active
 > Tous les forums > Forum Bureautique