[Résolu][Calc] Réaction différente si assignation bouton

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur : Vilains modOOs

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
clduick
Membre lOOyal
Membre lOOyal
Messages : 42
Inscription : 10 oct. 2007 14:36
Localisation : Paris

[Résolu][Calc] Réaction différente si assignation bouton

Message par clduick »


La modération vous a écrit: Titre modifié : "macro" est implicite. Toutes les questions ici, traitent des macros.

Bonjour,
Dans mon fichier Calc j'ai une macro qui fonctionne lorsque je la lance manuellement, ou pas à pas.
Mais dès que je l'assigne à un bouton ça change de comportement.
Pouvez vous m'aider car je ne comprends pas.
Je suis débutant :?
Je joint le fichier.
Merci
Pièces jointes
TEST Vnet.ods
(12.07 Kio) Téléchargé 70 fois
Dernière modification par micmac le 01 juin 2021 16:44, modifié 2 fois.
Raison : Ajout de la coche verte
LibreOffice 7.1 sous W10 Obligation de Version
Avatar de l’utilisateur
Jean-Louis Cadeillan
GourOOu
GourOOu
Messages : 5734
Inscription : 03 janv. 2009 00:56

Re: [Calc] Macro réagit différemment lors de l'assignation

Message par Jean-Louis Cadeillan »

Bonjour,
Je ne reproduis pas sous Win7, Lib0 7.06 en l'assignant un bouton, à l'évènement Exécuter l'action.
clduick a écrit :Mais dès que je l'assigne à un bouton ça change de comportement.
Mais peut-être devrais-tu être plus explicite quant à la façon dont tu l'assignes et quel est ce changement de comportement.
Cordialement,
Jean-Louis
LibO 7.6.5.2 (x64 avec Java 1.8.0_401) et AOO 4.1.15 (avec Java x32 1.8.0_381), Windows 7 Édition Intégrale 64 SP1
clduick
Membre lOOyal
Membre lOOyal
Messages : 42
Inscription : 10 oct. 2007 14:36
Localisation : Paris

Re: [Calc] Macro réagit différemment lors de l'assignation

Message par clduick »

Normalement, la macro me copie/colle en transposant les plages sélectionné de l'onglet 2, vers l'onglet 1, sur la 1er ligne vide, et retourne sur l'onglet 2 pour continuer la création d'une nouvelle fiche en effacent les données sur ma plage sélectionnée.

Je viens de reproduire et comprendre le problème si je ne suis pas sur ma "Feuille 2" en D32 avant de cliquer sur la macro avec le bouton, les données ne se collent pas sur la ligne vide en B mais toujours sur la "Feuille 1" en D4, je ne comprends pas. ( Test 60 lorsque je mets qu'une valeur dans "Creation de Fiche" Cellule D4.
Et si je lance manuellement ma macro avec la valeur Test70 elle se place correctement dans ma première feuille.

Je suis claire dans mes explications ???? :?

Code : Tout sélectionner

sub Creation

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

rem ----------------------------------------------------------------------
dim args0(0) as new com.sun.star.beans.PropertyValue
args0(0).Name = "Nr"
args0(0).Value = 2
 
'dispatcher.executeDispatch(document, ".uno:JumpToTable", "", 0, args0())
 

rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$D$4:$D$32"

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

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())

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

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

rem ----------------------------------------------------------------------
dim args4(0) as new com.sun.star.beans.PropertyValue
args4(0).Name = "Sel"
args4(0).Value = false
 
dispatcher.executeDispatch(document, ".uno:GoToEndOfData", "", 0, args4())
 
rem ----------------------------------------------------------------------
dim args5(1) as new com.sun.star.beans.PropertyValue
args5(0).Name = "By"
args5(0).Value = 1
args5(1).Name = "Sel"
args5(1).Value = false
 
dispatcher.executeDispatch(document, ".uno:GoDown", "", 0, args5())

rem ----------------------------------------------------------------------
dim args6(1) as new com.sun.star.beans.PropertyValue
args6(0).Name = "By"
args6(0).Value = 1
args6(1).Name = "Sel"
args6(1).Value = false
 
dispatcher.executeDispatch(document, ".uno:GoLeftToStartOfData", "", 0, args6())
 
rem ----------------------------------------------------------------------
dim args7(1) as new com.sun.star.beans.PropertyValue
args7(0).Name = "By"
args7(0).Value = "1"
args7(1).Name = "Sel"
args7(1).Value = false
 
dispatcher.executeDispatch(document, ".uno:GoRight", "", 0, args7())

rem ----------------------------------------------------------------------
dim args8(5) as new com.sun.star.beans.PropertyValue
args8(0).Name = "Flags"
args8(0).Value = "SVDF"
args8(1).Name = "FormulaCommand"
args8(1).Value = 0
args8(2).Name = "SkipEmptyCells"
args8(2).Value = false
args8(3).Name = "Transpose"
args8(3).Value = true
args8(4).Name = "AsLink"
args8(4).Value = false
args8(5).Name = "MoveMode"
args8(5).Value = 4

dispatcher.executeDispatch(document, ".uno:InsertContents", "", 0, args8())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:JumpToTable", "", 0, args0())
 
rem ----------------------------------------------------------------------
dim args9(0) as new com.sun.star.beans.PropertyValue
args9(0).Name = "ToPoint"
args9(0).Value = "D4"

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

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:ClearContents", "", 0, Array())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args9()


end sub
Je joint le fichier avec l'erreur.
Pièces jointes
TEST Vnet.ods
(17.44 Kio) Téléchargé 65 fois
LibreOffice 7.1 sous W10 Obligation de Version
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25145
Inscription : 03 mars 2006 08:45
Localisation : 127.0.0.1
Contact :

Re: [Calc] Réaction différente si assignation bouton

Message par Dude »

Salut,


Si tu cherches à saisir dans un formulaire (Création de fiche) pour remplir une feuille Données, le tableur n'est pas une solution.
Il faut te tourner vers Base. Ce module serait plus adapté.
capture.png
clduick
Membre lOOyal
Membre lOOyal
Messages : 42
Inscription : 10 oct. 2007 14:36
Localisation : Paris

Re:[Calc] Réaction différente si assignation bouton

Message par clduick »

Bonjour,

J'ai solutionné cette macro en rajoutant un arg, qui sélection la cellule D32 en début de macro. Si quelqu'un pouvez m'expliquer pourquoi.
Merci

Code : Tout sélectionner

sub Creation

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

rem ----------------------------------------------------------------------
dim args0(0) as new com.sun.star.beans.PropertyValue
args0(0).Name = "Nr"
args0(0).Value = 2
 
dispatcher.executeDispatch(document, ".uno:JumpToTable", "", 0, args0())

rem ----------------------------------------------------------------------
dim args10(0) as new com.sun.star.beans.PropertyValue
args10(0).Name = "ToPoint"
args10(0).Value = "D32"

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

rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$D$4:$D$32"

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

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())

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

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

rem ----------------------------------------------------------------------

rem ----------------------------------------------------------------------
dim args4(0) as new com.sun.star.beans.PropertyValue
args4(0).Name = "Sel"
args4(0).Value = false
 
dispatcher.executeDispatch(document, ".uno:GoToEndOfData", "", 0, args4())
 
rem ----------------------------------------------------------------------
dim args5(1) as new com.sun.star.beans.PropertyValue
args5(0).Name = "By"
args5(0).Value = 1
args5(1).Name = "Sel"
args5(1).Value = false
 
dispatcher.executeDispatch(document, ".uno:GoDown", "", 0, args5())

rem ----------------------------------------------------------------------
dim args6(1) as new com.sun.star.beans.PropertyValue
args6(0).Name = "By"
args6(0).Value = 1
args6(1).Name = "Sel"
args6(1).Value = false
 
dispatcher.executeDispatch(document, ".uno:GoLeftToStartOfData", "", 0, args6())
 
rem ----------------------------------------------------------------------
dim args7(1) as new com.sun.star.beans.PropertyValue
args7(0).Name = "By"
args7(0).Value = 1
args7(1).Name = "Sel"
args7(1).Value = false
 
dispatcher.executeDispatch(document, ".uno:GoRight", "", 0, args7())

rem ----------------------------------------------------------------------
dim args8(5) as new com.sun.star.beans.PropertyValue
args8(0).Name = "Flags"
args8(0).Value = "SVDF"
args8(1).Name = "FormulaCommand"
args8(1).Value = 0
args8(2).Name = "SkipEmptyCells"
args8(2).Value = false
args8(3).Name = "Transpose"
args8(3).Value = true
args8(4).Name = "AsLink"
args8(4).Value = false
args8(5).Name = "MoveMode"
args8(5).Value = 4

dispatcher.executeDispatch(document, ".uno:InsertContents", "", 0, args8())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:JumpToTable", "", 0, args0())
 
rem ----------------------------------------------------------------------
dim args9(0) as new com.sun.star.beans.PropertyValue
args9(0).Name = "ToPoint"
args9(0).Value = "D4"

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

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:ClearContents", "", 0, Array())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args9()


end sub
LibreOffice 7.1 sous W10 Obligation de Version
Verrouillé