Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#26 Le 15/01/2021, à 20:32

AZA66

Re : [Résolu] macro inopérante avec libreofficecalc 6.4.6.2 Ubuntu 20.04

@JBF
Effectivement les "nombres" avec un point comme séparateur décimal viennent bien d'un fichier .csv. Je ne connaissais pas la procédure que tu décris (faire la modif dans la boite de dialogue d'import).
Mais actuellement mon fichier converti en .ods contient dans sa 1ère feuille des nombres qui ne sont pas reconnus comme tels.
Quand je sélectionne toute la plage concernée, soit 11x8674 cellules et que je fais rechercher et remplacer tout (les points en virgules), ça marche, les nombres sont reconnus.
D'ailleurs pour enregistrer la macro en question c'est bien ce que j'ai fait. Le problème c'est quand je repars du classeur non modifié et que j'exécute la macro, rien ne se passe.
En fait cette macro "simple" n'était pour moi qu'un test avant de passer à toutes une série de macros ; car je veux traiter de façon systématique ce classeur .ods qui contient des mesures d'un jour donné (issu d'un Graphtec GL240) pour ensuite faire le même traitement sur tous les enregistrements quotidiens pendant les 2 années à venir, soit plus de 700 classeurs .ods. La bonne maîtrise des macros m'est indispensable.
Je vais quand même essayer une autre macro pour voir, mais elle aussi issue d'un enregistrement, car c'est de toute façon ce que je devrai faire ensuite et non récupérer des macros existantes.
Merci quand même de ta suggestion.

Hors ligne

#27 Le 15/01/2021, à 21:02

JBF

Re : [Résolu] macro inopérante avec libreofficecalc 6.4.6.2 Ubuntu 20.04

Est-ce que tu n'as pas oublié de sélectionner la plage de cellules dans ta macro ?


LibreOffice : https://fr.libreoffice.org/ (téléchargement, documentation, FAQ, assistance, contribuer, ...)
Aide pour LibreOffice par la communauté francophone : https://ask.libreoffice.org/fr/

Hors ligne

#28 Le 16/01/2021, à 10:35

AZA66

Re : [Résolu] macro inopérante avec libreofficecalc 6.4.6.2 Ubuntu 20.04

@JBF
non quand je démarre l'enregistrement de ma macro, je commence par ça.
Ensuite j'ai exploré diverses pistes pour essayer de résoudre mon problème, mais toujours sans succès pour le moment. Par exemple dans le classeur à Edition > Protection de cellule, j'ai décoché cette protection qui se met par défaut à l'ouverture du classeur. Autre exemple : dans Outils > Option > Sécurité > Sécurité des macros,  je suis passé de niveau élevé à moyen. Tout ça sans effet.
J'aimerais savoir si quelqu'un d'autre sur ce forum est ou a été confronté à mon problème avec cette même configuration matérielle (telle qu'indiquée dans le titre) ? Ou alors personne, présent sur ce forum, n'a utilisé de macros avec cette config. Si quelqu'un a la même configuration (libreofficecalc 6.4.6.2 / Ubuntu 20.04) sur ce forum, peut-il essayer de faire une macro, dans la mesure où il est familier de la procédure ? Ca m'aiderait à voir si c'est un bug dans le logiciel (peu probable) ou si j'ai fait une erreur (très probable), que je ne vois pas pour le moment, dans la procédure "macro".

Hors ligne

#29 Le 16/01/2021, à 11:34

eric63

Re : [Résolu] macro inopérante avec libreofficecalc 6.4.6.2 Ubuntu 20.04

salut
je vais dire comme sur le forum de libreoffice ou de openoffice avec les macros il faut un fichier et ta macro pour pouvoir voir ce qui se passe

pour moi le problème ne vient pas de ta version de libroffice mais de ta macro ou de son exécution
pour la macro tu peux essayer le pas a pas qui est fournit avec l’éditeur de macro ça permet de voir les variables attendues

Le problème c'est quand je repars du classeur non modifié et que j'exécute la macro, rien ne se passe.

comment exécutes tu la macro depuis ce classeur ?depuis une commande, un bouton, une commande liée au bouton, lièe à la feuille, au classeur
??
donne au moins le contenu de ta macro


Kubuntu 23.10 - WAYLAND- 64 bits + backports bêta = plasma 5.27.10 KDE 5.112.0 Qt 5.15.10 et noyau 6.5.0-27  4x intel i5-4570 3.2Ghz 12Go nvidia GTX 1060 6GB 3écrans
Comment installer une brother avec le script de demonipuch

J’utilise le clavier french AFNOR de chez LDLC c‘est fort

En ligne

#30 Le 16/01/2021, à 11:50

Rafbor

Re : [Résolu] macro inopérante avec libreofficecalc 6.4.6.2 Ubuntu 20.04

Hello @AZA66,
je suis bien en Calc 6.4.6.2 sous 20.04.
J'ai un fichier avec

1,1
1,2
2,5
3,6
4,5

Je fais Outils->Macros->Enregistrer une macro, j'ai un message qui me dit que LibreOffice a besoin d'un environnement java, j'installe libreoffice-java-common mais pas le JRE (la commande java --version me dit que java n'a pas été trouvée et que je peux installer des openjdk)
Donc pas de JRE défini dans Options->Avancé
Je tente quand même l'enregistrement d'une macro (sélection des cellules, Edition->Rechercher & remplacer, rechercher ",", remplacer ".", clic sur 'Tout remplacer', Terminer l'enregistrement en laissant le nom par défaut 'Main')
J'ai bien

1.1
1.2
2.5
3.6
4.5

Je quitte LO, je relance, ouvre mon fichier d'origine, je fais 'Exécuter la macro', je recherche ma macro dans 'Mes macros' 'Standard', 'Module1', 'Main'
et ça fonctionne.


Xubuntu 22.04 - Mes projets sur Github

Hors ligne

#31 Le 16/01/2021, à 11:52

JBF

Re : [Résolu] macro inopérante avec libreofficecalc 6.4.6.2 Ubuntu 20.04

AZA66 a écrit :

@JBF
non quand je démarre l'enregistrement de ma macro, je commence par ça.

As-tu vérifié dans le code de la macro qu'il y a bien sélection de la plage de cellule ? L'enregistreur de macro n'est pas parfait, c'est bien pour ça qu'il est désactivé par défaut.

D'ailleurs tu pourrais nous montrer le code de cette macro.


LibreOffice : https://fr.libreoffice.org/ (téléchargement, documentation, FAQ, assistance, contribuer, ...)
Aide pour LibreOffice par la communauté francophone : https://ask.libreoffice.org/fr/

Hors ligne

#32 Le 16/01/2021, à 15:38

AZA66

Re : [Résolu] macro inopérante avec libreofficecalc 6.4.6.2 Ubuntu 20.04

Merci pour ces 3 dernières réponses,
@Rafbor : la macro que tu présentes est très semblable à ce que je veux faire, et elle marche.
Les petites différences sont (certaines n'ont aucune importance, je les cite pour être exhaustif) :
1/ dans mon cas je transforme les points en virgules ;
2/ le nombre de cellules à transformer est beaucoup plus grand et sur plusieurs colonnes ;
3/ surtout j'enregistre la macro dans "mes macros" puis dans une bibliothèque que j'ai créée (GL240 en l'occurrence) et pas dans la bibliothèque "standard" suivant en cela les recommandations de la doc de LO (indiquée dans mon 1er message). Du coup j'ai voulu essayé d'enregistrer ma macro dans standard comme tu l'as fait. Ca ne marche toujours pas !

Je copie ci-dessous ma macro dans sa version de départ, c-à-d enregistrée dans "mes macros" > GL240 > traitementfichier > pointenvirgule :

REM  *****  BASIC  *****

rem Sub Main

rem End Sub


sub pointenvirgule
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(20) as new com.sun.star.beans.PropertyValue
args1(0).Name = "SearchItem.StyleFamily"
args1(0).Value = 2
args1(1).Name = "SearchItem.CellType"
args1(1).Value = 0
args1(2).Name = "SearchItem.RowDirection"
args1(2).Value = true
args1(3).Name = "SearchItem.AllTables"
args1(3).Value = false
args1(4).Name = "SearchItem.SearchFiltered"
args1(4).Value = false
args1(5).Name = "SearchItem.Backward"
args1(5).Value = false
args1(6).Name = "SearchItem.Pattern"
args1(6).Value = false
args1(7).Name = "SearchItem.Content"
args1(7).Value = false
args1(8).Name = "SearchItem.AsianOptions"
args1(8).Value = false
args1(9).Name = "SearchItem.AlgorithmType"
args1(9).Value = 0
args1(10).Name = "SearchItem.SearchFlags"
args1(10).Value = 71680
args1(11).Name = "SearchItem.SearchString"
args1(11).Value = "."
args1(12).Name = "SearchItem.ReplaceString"
args1(12).Value = ","
args1(13).Name = "SearchItem.Locale"
args1(13).Value = 255
args1(14).Name = "SearchItem.ChangedChars"
args1(14).Value = 2
args1(15).Name = "SearchItem.DeletedChars"
args1(15).Value = 2
args1(16).Name = "SearchItem.InsertedChars"
args1(16).Value = 2
args1(17).Name = "SearchItem.TransliterateFlags"
args1(17).Value = 1280
args1(18).Name = "SearchItem.Command"
args1(18).Value = 3
args1(19).Name = "SearchItem.SearchFormatted"
args1(19).Value = false
args1(20).Name = "SearchItem.AlgorithmType2"
args1(20).Value = 1

dispatcher.executeDispatch(document, ".uno:ExecuteSearch", "", 0, args1())

rem ----------------------------------------------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "Visible"
args2(0).Value = false

dispatcher.executeDispatch(document, ".uno:SearchResultsDialog", "", 0, args2())


end sub

j'espère que ce sera lisible et compréhensible pour vous (moi je ne maîtrise pas encore le Basic).

modif1 : @ Eric63. Le classeur que je veux traiter n'a pour le moment qu'une feuille. Je cherche à Exécuter la macro, la feuille à traiter étant active, à partir de Outils > macros > mes macros puis dans la boite de dialogue je sélectionne GL240 (ma bibliothèque), puis Traitementfichierjour  qui est mon module différent de "standard" et qui ne contient à ce stade qu'une macro intitulée " pointenvirgule" et ensuite j'appuie sur exécuter. Et puis toujours rien...

Dernière modification par AZA66 (Le 16/01/2021, à 15:49)

Hors ligne

#33 Le 16/01/2021, à 16:10

Rafbor

Re : [Résolu] macro inopérante avec libreofficecalc 6.4.6.2 Ubuntu 20.04

@AZA66: j'ai l'impression que tu n'as pas sélectionné la plage de cellules, sur ma maco j'ai ces lignes (juste après la ligne
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper") )

rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$A$1:$A$5"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())

c'est ça qui sélectionne ma plage de cellules A1 à A5

Refais ta macro, et sélectionne ta plage après avoir cliqué sur Enregistrer une macro.

EDIT: j'ai refais une nouvelle macro PointEnVirgule sur une plage de 3 colonnes, ça fonctionne, voici le code

sub PointEnVirgule
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$A$1:$C$10"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())

rem ----------------------------------------------------------------------
dim args2(20) as new com.sun.star.beans.PropertyValue
args2(0).Name = "SearchItem.StyleFamily"
args2(0).Value = 2
args2(1).Name = "SearchItem.CellType"
args2(1).Value = 0
args2(2).Name = "SearchItem.RowDirection"
args2(2).Value = true
args2(3).Name = "SearchItem.AllTables"
args2(3).Value = false
args2(4).Name = "SearchItem.SearchFiltered"
args2(4).Value = false
args2(5).Name = "SearchItem.Backward"
args2(5).Value = false
args2(6).Name = "SearchItem.Pattern"
args2(6).Value = false
args2(7).Name = "SearchItem.Content"
args2(7).Value = false
args2(8).Name = "SearchItem.AsianOptions"
args2(8).Value = false
args2(9).Name = "SearchItem.AlgorithmType"
args2(9).Value = 0
args2(10).Name = "SearchItem.SearchFlags"
args2(10).Value = 71680
args2(11).Name = "SearchItem.SearchString"
args2(11).Value = "."
args2(12).Name = "SearchItem.ReplaceString"
args2(12).Value = ","
args2(13).Name = "SearchItem.Locale"
args2(13).Value = 255
args2(14).Name = "SearchItem.ChangedChars"
args2(14).Value = 2
args2(15).Name = "SearchItem.DeletedChars"
args2(15).Value = 2
args2(16).Name = "SearchItem.InsertedChars"
args2(16).Value = 2
args2(17).Name = "SearchItem.TransliterateFlags"
args2(17).Value = 1280
args2(18).Name = "SearchItem.Command"
args2(18).Value = 3
args2(19).Name = "SearchItem.SearchFormatted"
args2(19).Value = false
args2(20).Name = "SearchItem.AlgorithmType2"
args2(20).Value = 1

dispatcher.executeDispatch(document, ".uno:ExecuteSearch", "", 0, args2())

rem ----------------------------------------------------------------------
dim args3(0) as new com.sun.star.beans.PropertyValue
args3(0).Name = "Visible"
args3(0).Value = false

dispatcher.executeDispatch(document, ".uno:SearchResultsDialog", "", 0, args3())


end sub

Dernière modification par Rafbor (Le 16/01/2021, à 16:28)


Xubuntu 22.04 - Mes projets sur Github

Hors ligne

#34 Le 16/01/2021, à 17:45

AZA66

Re : [Résolu] macro inopérante avec libreofficecalc 6.4.6.2 Ubuntu 20.04

Bon ça y est !
@Rafbor
Effectivement dans ma macro la ligne :

args2(0).Value = false

différait de la tienne.
J'ai d'abord essayé de sélectionner une plage de cellules plus petite mais quand même sur plusieurs colonnes. Ca a marché, j'étais donc sur la bonne voie, en tout cas ça me prouvait que ma procédure d'enregistrement et d'exécution était bonne sur les autres points.
Quand j'ai voulu sélectionner toutes mes cellules (86400 en fait sur 8674 lignes), là à nouveau rien !
J'ai essayé sur une seule colonne en la sélectionnant au début de l'enregistrement de la macro, et ... toujours rien.

Et puis j'ai trouvé le bug.
Dans le début de l'enregistrement de la macro je commence par une partition verticale de la fenêtre de façon à voir à la fois le début des colonnes (sur 40 lignes environ) et les 3 dernières lignes (8671 à 8674).
Puis j'effectue Rechercher et remplacer, et pendant l'enregistrement de la macro ça marche, les points sont bien transformés en virgules (sur 86400 cellules).
Mais ça ne marche plus à l'exécution.

En revanche, si pendant l'enregistrement de la macro je ne fais pas cette partition, tout en sélectionnant toutes ces 86400 cellules pour mon opération de Chercher/Tout remplacer, et qu'ensuite j'exécute la macro sur mon classeur d'origine, là ça marche !
Donc la seule différence qui a fait que la macro s'exécute correctement ou ne s'exécute pas est qu'il y avait au début de la macro "déficiente" une partition verticale de la feuille de LOcalc. Ca me semble être un bug du logiciel, heureusement on peut le contourner.
En tout cas grace à cette discussion j'ai pû progresser.
Merci à tous.

Hors ligne

#35 Le 17/01/2021, à 10:56

Rafbor

Re : [Résolu] macro inopérante avec libreofficecalc 6.4.6.2 Ubuntu 20.04

Petite précision: si tu veux que la macro s'applique à tout l'onglet, il n'est pas nécessaire de sélectionner une plage ce cellules au début de l'enregistrement.
Dans ce cas, vérifie que dans la boite de dialogue "Rechercher & remplacer", la case "Sélection active seulement" ne soit pas cochée.


Xubuntu 22.04 - Mes projets sur Github

Hors ligne