> 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
  Grand 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

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
Publicité
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
Tablette 10.1 pouces TECLAST P40HD (8 coeurs, FHD, 8 Go RAM, 128 Go, 4G) à 99,99 €
99,99 € 189,99 € -47% @Amazon

Amazon fait une vente flash sur la tablette 10.1 pouces TECLAST T40 Pro qui passe à 99,99 € grâce à un coupon à activer sur la page du produit et le code promo RC9GEEHZ à saisir au moment du paiement. On la trouve habituellement à 189,99 €. Cette tablette possède un processeur octo core, 8 Go de RAM, 128 Go de stockage extensibles par MicroSD, un écran FHD IPS (1920x1200) et tourne sous Android 13. Le WiFi, le bluetooth et le GPS sont également de la partie. Il possède même un emplacement SIM pour utiliser la 4G en mobilité.


Voir le bon plan
Hub USB C 7 en 1 Baseus (HDMI 4K, 3xUSB 3.0, lecteurs SD et MicroSD, 1xUSB C PD 100W) à 16,14 €
16,14 € 25,99 € -38% @Amazon

Amazon fait une promotion sur le hub USB C 7 en 1 Baseus qui passe à 16,14 € au lieu de 25,99 €. Ce hub vous permettra de rajouter un port HDMI 4K, 3 ports USB 3.0, un lecteur de cartes mémoire SD et MicroSD et un port USB C à votre ordinateur via un simple USB-C. Le port USB C est compatible PD 100W ce qui vous permettra d'alimenter votre ordinateur en même temps.


Voir le bon plan
Acer Nitro 5 (15,6'' FHD 144 Hz, Ryzen 7 5800H, 8 Go, SSD 512 Go, GeForce RTX 3060) à 799,99 €
799,99 € 999 € -20% @RueDuCommerce

RueDuCommerce fait une belle promotion sur l'ordinateur portable Acer Aspire Nitro AN515-45-R3HA qui passe à 799,99 € au lieu de 999 €. Ce portable dédié aux joueurs dispose d'un écran 15,6 pouces FHD 1920 x 1080 144 Hz, d'un processeur AMD Ryzen 7 5800H, de 8 Go de mémoire RAM, d'un SSD de 512 Go et d'une carte graphique Nvidia GeForce RTX 3060 6 Go

L'ordinateur est livré sans OS mais vous pouvez facilement installer Windows 10/11 pour quelques euros. 

De quoi faire tourner tous vos jeux en haute définition.


Voir le bon plan
Boitier PC Fractal Design North Charcoal White (moyen tour, ATX, panneau mesh, façade chêne) à 124,29 € livré
124,29 € 160 € -22% @Amazon Allemagne

Amazon Allemagne fait une promotion sur le beau boitier PC Fractal Design North Charcoal White qui passe à 108,80 € (avec la TVA ajustée). Comptez 15,49 € pour la livraison en France soit un total de 124,29 € livré au lieu de 160 €. Le boitier Fractal Design North doit son originalité, à l'introduction de matériaux naturels comme le chêne et des détails sur mesure pour intégrer élégamment ce boitier à votre espace de vie. Alliant design épuré et ingénierie avancée du flux d'air, le boîtier est doté d'un panneau latéral et d'un dessus en mesh mais aussi d'une façade ouverte avec de véritables panneaux en chêne. Le design est complété par des détails élégants et une languette intégrée pour un accès facile au-dessus du boîtier. À l'intérieur, le boitier North de Fractal Design offre un aménagement intérieur intuitif et une compatibilité généreuse.


Voir le bon plan
SSD externe portable USB 3.1 SanDisk Extreme NVMe 2 To (1050 Mo/s) à 135,99 €
135,99 € 180 € -24% @Amazon

Amazon fait une promotion sur le SSD externe portable USB 3.1 SanDisk Extreme NVMe 2 To qui passe à 135,99 € alors qu'on trouve le SSD à plus de 180 € ailleurs. 

Le disque SSD SanDisk Extreme NVMe Portable 2 To permet, grâce à sa connectique USB 3.1, des haute vitesse de transfert pouvant aller jusqu'à 1050 Mo/s grâce au disque NVMe qu'il contient. Sa coque robuste et certifiée IP55 (eau et poussière) protège vos données partout où vous allez. Vous ne craindrez pas de l'emporter partout avec vous grâce à sa conception robuste et résistante avec un coeur de SSD résistant aux chocs. Le logiciel SanDisk inclu SecureAccess peut crypter vos fichiers personnels. Garantie 5 ans. Interface : USB 3.1 Type A et C.


Voir le bon plan
Echelle télescopique Ansobea extensible à 3,8 m à 69,27 €
69,27 € 108,99 € -36% @Amazon

Amazon fait une promotion sur l'échelle télescopique Ansobea extensible à 3,8 m à 69,27 € au lieu de 108,99 €. Livrée avec 2 crochets. La livraison est gratuite.


Voir le bon plan

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