Bonjour,
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
Bonjour,
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
hello,
pour t'aider , pour ce qui me paraît le plus compliqué (le paste spécial), voici un exemple qui copie une plage de cellules, et fait un coller spécial avec addition :
A toi d'adapter cet exemple et de compléter pour ce que tu veux faire
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 Sub CopierCollerSpecial ' J.P Janvier 2015 oDoc1 = thisComponent oDispatcher = createUnoService("com.sun.star.frame.DispatchHelper") oFrame1 = oDoc1.CurrentController.Frame ' On sélectionne la plage de cellule à copier oSheet = oDoc1.Sheets(0) rng = oSheet.getCellRangeByName("A1:A10") oDoc1.CurrentController.Select(rng) ' On utilise un Dispatch pour copier la plage oDispatcher.executeDispatch(oFrame1, ".uno:Copy", "", 0, Array()) ' On sélectionne la première cellule de l'endroit où copier rng = oDoc1.Sheets(0).getCellRangeByName("B1") oDoc1.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
Ami calmant, J.P
Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko
Bonjour,
Merci de ton aide JP.
Je vais essayer d'adapter ton code à mon besoin.
Une petite question néanmoins;
Pourquoi as-tu mis la valeur 4 dans le paramètre "MoveMode" alors que celui-ci n'en propose que 3 ? (Ne pas déplacer/Vers le bas/A droite).
A+
N'oubliez pas le Tag afin de faciliter la recherche, et en votant cela permet de mieux la cibler.
Je ne réponds pas aux messages privés s'ils sont liés à une question technique
Re,
Merci pour la précision Zoom61.
Après avoir adapté le code, le résultat est partiel.
En effet j'obtiens une copie au lieu d'un déplacement. Est-ce du à la commandeJe joins le code modifié:
Code : Sélectionner tout - Visualiser dans une fenêtre à part oDispatcher.executeDispatch(oFrame1, ".uno:Copy", "", 0, Array())
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46 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:Copy", "", 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 subEdit
C'était ça. J'ai modifié la commande Copy par Cut et cela fonctionne parfaitement.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager