> 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 participer à la discussion.
Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !
Recevoir PC Astuces par e-mail


La Lettre quotidienne +226 000 inscrits
Avec l'actu, des logiciels, des applis, des astuces, des bons plans, ...

Les bonnes affaires
Une fois par semaine, un récap des meilleurs offres.

Les fonds d'écran
De jolies photos pour personnaliser votre bureau. Une fois par semaine.

Les nouveaux Bons Plans
Des notifications pour ne pas rater les bons plans publiés sur le site.

Les bons plans du moment PC Astuces

Tous les Bons Plans
154,77 €SSD Samsung 870 QVO 2 To à 154,77 € livré
Valable jusqu'au 20 Mai

Amazon Allemagne fait une belle promotion sur le tout nouveau SSD Samsung 870 QVO 2 To qui passe à 150,25 € (avec la TVA ajustée). Comptez 4,52 € pour la livraison en France soit un total de 154,77 € livré. Ce SSD offre des vitesses de 560 Mo/s en lecture et 530 Mo/s en écriture. Il est garanti 3 ans.


> Voir l'offre
99,99 €NAS Synology DS120J à 99,99 €
Valable jusqu'au 22 Mai

Amazon propose actuellement le NAS Synology DS120J à 99,99 €. Ce NAS à 1 baie va vous permettre de mettre en place un espace de stockage sécurisé sur votre réseau local et peut aussi faire office de serveur multimédia, DLNA, serveur web, client ftp, bittorent, ... On le trouve ailleurs à partir de 115 € . A l'intérieur, vous devrez glisser un disque dur au format 3.5 pouces.


> Voir l'offre
28,79 €Support écran PC / TV pivotant sur pied (26 à 55 pouces, max 45 kg) à 28,79 € (via coupon)
Valable jusqu'au 20 Mai

Amazon propose actuellement le support écran PC / TV pivotant sur pied Bontec à 28,79 € seulement grâce à un coupon de réduction à activer sur la page du produit. Ce support est adapté aux écrans plats de 26 à 55 pouces LED, LCD et PLASMA à compatibilité VESA de 100x100 jusqu'à 400x400.  Il supporte jusqu'à 45Kg, est régable en hauteur et cache les câbles disgracieux à l'arrière. Vous pouvez le mettre par exemple sur un meuble pour surélever votre TV ou votre PC (et mettre une enceinte dessous ?) sans avoir besoin de percer le mur.


> 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