Bonjour,
N'ayant pas respecté le balisage, mon précédent message a été verrouillé.
Je le reproduis donc en respectant les règles cette fois-ci.
Pouvez-vous m'aider à écrire une macro qui déplace une colonne de 2 col vers la gauche en utilisant le "Couper/Collage Spécial" + le paramètre "Additionner".
Merci
[Résolu][Calc] Couper/Collage spécial d'une colonne
Modérateur : Vilains modOOs
Règles du forum
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 !
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 !
-
- Membre cOOnfirmé
- Messages : 299
- Inscription : 02 févr. 2012 00:51
[Résolu][Calc] Couper/Collage spécial d'une colonne
Dernière modification par Drake le 20 janv. 2015 17:49, modifié 2 fois.
LibreOffice 6.2.7.1 (x64), Java (64b), Windows 10 (64b)
-
- Membre cOOnfirmé
- Messages : 299
- Inscription : 02 févr. 2012 00:51
Re: [Calc] Couper/Collage spécial d'une colonne
Bonjour,
J'ai eu la réponse sur un autre site (Merci à son auteur jurassic pork)
.
La voici pour ceux que ça intéresse.
a+
J'ai eu la réponse sur un autre site (Merci à son auteur jurassic pork)
.
La voici pour ceux que ça intéresse.
Code : Tout sélectionner
Sub CopierCollerSpecial
' J.P Janvier 2015
dim oDoc as object, oSheet as object, oFrame1 as object, oDispatcher as object, rng as object
oDoc = thisComponent
oDispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
oFrame1 = oDoc.CurrentController.Frame
' On sélectionne la plage de cellule à copier
oSheet = oDoc.Sheets(0)
rng = oSheet.getCellRangeByName("F1:F6103")
oDoc.CurrentController.Select(rng)
' On utilise un Dispatch pour copier la plage
oDispatcher.executeDispatch(oFrame1, ".uno:Cut", "", 0, Array())
' On sélectionne la première cellule de l'endroit où copier
rng = oDoc.Sheets(0).getCellRangeByName("D1")
oDoc.CurrentController.Select(rng)
' on renseigne les arguments pour le coller spécial
dim args1(5) as new com.sun.star.beans.PropertyValue
' Flags : A=Tout VSD=Valeurs T=Formats F=Formules VSDT=Valeurs&Formats
args1(0).Name = "Flags"
args1(0).Value = "A"
'FormulaCommand : 0=aucune 1=addition 2=soustraction 3=multiplication 4=Division
args1(1).Name = "FormulaCommand"
'1 : on additionne les valeurs de la plage de départ à celle d'arrivée
args1(1).Value = 1
args1(2).Name = "SkipEmptyCells"
args1(2).Value = false
args1(3).Name = "Transpose"
args1(3).Value = false
args1(4).Name = "AsLink"
args1(4).Value = false
args1(5).Name = "MoveMode"
args1(5).Value = 4
oDispatcher.executeDispatch(oFrame1, ".uno:InsertContents", "", 0, args1())
end sub
LibreOffice 6.2.7.1 (x64), Java (64b), Windows 10 (64b)
-
- IdOOle de la suite
- Messages : 25181
- Inscription : 03 mars 2006 07:45
- Localisation : 127.0.0.1
Re: [Calc] Couper/Collage spécial d'une colonne
Dans les règles, il y a mentionné : Tu aurais eu sensiblement le même code.Drake a écrit :Pouvez-vous m'aider à écrire une macro
Tu sais aussi qu'il faut ajouter [Résolu] au début du titre de ton 1er message sans oublier de cocher la case de l'icône de sujet (le V vert).
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
-
- Membre cOOnfirmé
- Messages : 299
- Inscription : 02 févr. 2012 00:51
Re: [Calc] Couper/Collage spécial d'une colonne
re,
J'ai effectivement essayé de passer par l'enregistreur de macro mais dans le code généré il manquait la sélection de la colonne à déplacer ainsi que l'adresse de la destination.Tu aurais eu sensiblement le même code.
Code : Tout sélectionner
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Cut", "", 0, Array())
rem ----------------------------------------------------------------------
dim args2(5) as new com.sun.star.beans.PropertyValue
args2(0).Name = "Flags"
args2(0).Value = "A"
args2(1).Name = "FormulaCommand"
args2(1).Value = 1
args2(2).Name = "SkipEmptyCells"
args2(2).Value = false
args2(3).Name = "Transpose"
args2(3).Value = false
args2(4).Name = "AsLink"
args2(4).Value = false
args2(5).Name = "MoveMode"
args2(5).Value = 4
dispatcher.executeDispatch(document, ".uno:InsertContents", "", 0, args2())
LibreOffice 6.2.7.1 (x64), Java (64b), Windows 10 (64b)
-
- NOOuvel adepte
- Messages : 22
- Inscription : 18 mai 2017 14:03
Re: [Résolu][Calc] Couper/Collage spécial d'une colonne
Si je peux aporté de l'aide a ceux qui consulte le sujet:
voici un code qui copie et qui colle en collage spécial des case suivant les coordonnées:
Celui-ci pour un copie entre plusieurs feuille:
Celui-ci pour une copie sur la même feuille :
et voici un fichier pour que ce soit plus claire :
En espérant que sa puissent aidée.
Cordialement Matthieu
voici un code qui copie et qui colle en collage spécial des case suivant les coordonnées:
Celui-ci pour un copie entre plusieurs feuille:
Code : Tout sélectionner
Sub Copiecolleentrefeuille 'copie ligne
dim FeuilleDI as object
dim PysSource as object
dim PysDest as object
dim FeuilleTableau as object
FeuilleDI = thiscomponent.sheets.getByName("DI") 'Prend la référence de la feuille 1 ou l'on copie les case
PysSource = FeuilleDI.getCellRangeByName("A10:N10") 'dans la feuille référencé feuille 1 prend la position de la case a copié
FeuilleTableau = thiscomponent.sheets.getByName("tableau") 'Prend la référence de la feuille 2 ou l'on colle les case
PysDest = FeuilleTableau.getCellRangeByName("A1:N1") ' dans la feuille référencé feuille 2 prend la position d'ou on copie la case
PysDest.FormulaArray = PysSource.FormulaArray 'attribue la valeur de la case sources à la case dest:formulaArray permet de faire collage spécial
End Sub
Code : Tout sélectionner
Sub copiecollememefeuille1 'copie case collage spécial
dim PysFeuille as object
dim PysSource as object
dim PysDest as object
PysFeuille = thiscomponent.sheets.getByName("DI") 'Prend la référence de la feuille
PysSource = PysFeuille.getCellRangeByName("A1") 'dans la feuille référencer prend la position de la case a copié
PysDest = PysFeuille.getCellRangeByName("A10") ' dans la feuille référencé prend la position d'ou on copie la case
PysDest.FormulaArray = PysSource.FormulaArray 'attribue la valeur de la case souces à la case dest formulaArray permet de faire collage spécial
End Sub
Cordialement Matthieu
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Libre office Version: 5.3.2.2 Windows 7
-
- RespOOnsable modération
- Messages : 3952
- Inscription : 06 oct. 2008 08:03
Re: [Résolu][Calc] Couper/Collage spécial d'une colonne
Bonjour,
Plutôt que d’exhumer un sujet datant de plus de 2 ans, un nouveau fil (éventuellement marqué [Résolu]) aurait été bienvenue.
D’autre part, merci de citer vos sources, par exemple le fil d’origine d’où vous avez recopié le code.
Cordialement
Plutôt que d’exhumer un sujet datant de plus de 2 ans, un nouveau fil (éventuellement marqué [Résolu]) aurait été bienvenue.
D’autre part, merci de citer vos sources, par exemple le fil d’origine d’où vous avez recopié le code.
Cordialement
Pour tout savoir sur le fonctionnement de ce forum À lire avant tout !