Précédent   Forum des professionnels en informatique > Logiciels > Autres Logiciels > OpenOffice
OpenOffice Forum d'entraide sur OpenOffice.org. Avant de poster : La F.A.Q OpenOffice
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 13/01/2012, 11h02   #1
Invité de passage
 
Homme Cédric
Inscription : décembre 2011
Messages : 2
Détails du profil
Informations personnelles :
Nom : Homme Cédric
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Secteur : Associations - ONG

Informations forums :
Inscription : décembre 2011
Messages : 2
Points : 2
Points : 2
Par défaut [Macro] Comment copier une plage de données d'une Feuille "A" vers la Feuille Active

Bonjour.

Je débute, je ne maîtrise pas bien les macros, je me contente de les enregistrer.

J'ai un fichier qui regroupe mes activités. Certaines taches sont quotidiennes.

Par conséquent j'ai pensé mettre dans un onglet base, les tâches que je dois effectuer quotidiennement et à l'aide d'une macro que j'assignerai à un bouton, copier coller ces taches

Voici ma macro enregistrée avec l'aide de l'outils "Enregistrer Macro"
Code :
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
sub Copier_Dans_Base_Et_Coller_Dans_Feuille_Actve
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 = "Nr"
args1(0).Value = 1

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

rem ----------------------------------------------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "ToPoint"
args2(0).Value = "$B$15:$L$18"

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

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

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

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

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

dispatcher.executeDispatch(document, ".uno:GoToEndOfData", "", 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:GoDown", "", 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:GoLeftToStartOfData", "", 0, args7())

rem ----------------------------------------------------------------------
dim args8(1) as new com.sun.star.beans.PropertyValue
args8(0).Name = "By"
args8(0).Value = 1
args8(1).Name = "Sel"
args8(1).Value = false

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

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

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

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


end sub
Le hic, c'est qu'il faut que ça fonctionne tout au long de l'année sur tous mes onglets mois. Ca fonctionne pour janvier, pas de soucis, mais en février, quand j’exécute la macro, elle colle le texte en janvier

Comment lui dire de le faire sur l'onglet actif ?

Je pense que l erreur se trouve ici dans ma macro :
Code :
1
2
3
4
5
6
rem ----------------------------------------------------------------------
dim args4(0) as new com.sun.star.beans.PropertyValue
args4(0).Name = "Nr"
args4(0).Value = 2
dispatcher.executeDispatch(document, ".uno:JumpToTable", "", 0, args4())
Car je pense qu une fois la copie effectué dans la feuille base il saute de 2 feuilles pour coller. Mais moi je veux qui colle sur la feuille active !!!!!

Merci pour votre aide.

D'ailleurs je pense que la ligne de ma macro :
Code :
1
2
3
4
5
6
rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Nr"
args1(0).Value = 1
dispatcher.executeDispatch(document, ".uno:JumpToTable", "", 0, args1())
Je dois mettre :
Code :
1
2
3
4
5
6
7
rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Base"
args1(0).Value = 1

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

Encore merci pour votre aide

Cordialement,
Fichiers attachés
Type de fichier : ods exemple.ods (20,2 Ko, 6 affichages)
clduick est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2012, 14h15   #2
Futur Membre du Club
 
Homme
Inscription : septembre 2009
Messages : 22
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Vendée (Pays de la Loire)

Informations professionnelles :
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : septembre 2009
Messages : 22
Points : 19
Points : 19
Bonjour,
Voici un exemple de code:
Code :
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 CopierZone()
 Dim monDocument As Object
 'Pour désigner les feuilles
 Dim mesFeuilles As Object
 'Pour désigner la feuille source
 Dim feuilleSource As Object
 'Pour désigner la feuille destination
 Dim feuilleDestination As Object
 'Pour désigner les cellules sources
 Dim celluleSource As Object
 'Pour désigner la cellule destination
 Dim zoneDestination As Object
 'Pour désigner la feuille active
 Dim FeuilleActive As Object

 monDocument = thisComponent
 mesFeuilles = monDocument.Sheets
 'Feuille source qui contient les connées à copier
 feuilleSource = mesFeuilles.getByName("Feuille1")
 'Zone des cellules à copier
 celluleSource = feuilleSource.getCellRangeByName("A1:A5")

 'Désignation de la feuille destination si on veut la désigner
 feuilleDestination = mesFeuilles.getByName("Feuille2")
 'CHOISIR CI DESSUS OU CI DESSOUS EN FONCTION
 'Ou bien je désigne la feuille active à l'écan comme étant la feuille destination
 feuilleDestination = monDocument.getCurrentController().getActiveSheet() 'Je récupére le nom de la feuille active
 
 'Je désigne la cellule où la copie va commencer
 zoneDestination = feuilleDestination.getCellRangeByName("F8")
 'Là je procéde à la copie
 feuilleDestination.copyRange(zoneDestination.CellAddress, celluleSource.RangeAddress)
End Sub
Mobydick_62 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 03/02/2012, 11h39   #3
Invité de passage
 
Homme Cédric
Inscription : décembre 2011
Messages : 2
Détails du profil
Informations personnelles :
Nom : Homme Cédric
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Secteur : Associations - ONG

Informations forums :
Inscription : décembre 2011
Messages : 2
Points : 2
Points : 2
Par défaut Merci

Merci de ton aide ,

J'ai choisi cette macro qui a été faite par une autre personne dans le forum OpenOffice. Il m'a donné la solution en indiquant dans la macro le mois en cours pour coller directement ma sélection de l onglet Base dans l'onglet correspondant au mois.
Code :
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
REM  *****  BASIC  *****
sub Copier_Dans_Base_Et_Coller_Dans_Feuille_Actve
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")

monDocument = Thiscomponent 													' le doc
lesFeuilles = monDocument.Sheets 												' les feuilles

varmois =  Month(Now) 															' le mois en cours

rem ----------------------------------------------------------------------		' active la feuille Base
 maFeuille = lesFeuilles.getByName("Base")
         monDocument.currentController.activeSheet = maFeuille
rem ----------------------------------------------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "ToPoint"
args2(0).Value = "$B$15:$L$22"												'plage de cellule a copier

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

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

rem ----------------------------------------------------------------------
																				'Vérification du mois en cours
        
    select case  varmois
         case 1
         maFeuille = lesFeuilles.getByName("Janvier")
         monDocument.currentController.activeSheet = maFeuille
         case 2
         maFeuille = lesFeuilles.getByName("Février")
         monDocument.currentController.activeSheet = maFeuille
         case 3
         maFeuille = lesFeuilles.getByName("Mars")
         monDocument.currentController.activeSheet = maFeuille
         case 4
         maFeuille = lesFeuilles.getByName("Avril")
         monDocument.currentController.activeSheet = maFeuille
         case 5
         maFeuille = lesFeuilles.getByName("Mai")
         monDocument.currentController.activeSheet = maFeuille
         case 6
         maFeuille = lesFeuilles.getByName("Juin")
         monDocument.currentController.activeSheet = maFeuille
         case 7
         maFeuille = lesFeuilles.getByName("juillet") 
         monDocument.currentController.activeSheet = maFeuille
         case 8
         maFeuille = lesFeuilles.getByName("Aout")
         monDocument.currentController.activeSheet = maFeuille
         case 9
         maFeuille = lesFeuilles.getByName("Septembre")
         monDocument.currentController.activeSheet = maFeuille
         case 10
         maFeuille = lesFeuilles.getByName("Octobre")
         monDocument.currentController.activeSheet = maFeuille
         case 11
         maFeuille = lesFeuilles.getByName("Novembre")
         monDocument.currentController.activeSheet = maFeuille
         case 12
         maFeuille = lesFeuilles.getByName("Décembre")
         monDocument.currentController.activeSheet = maFeuille
     end select

rem ----------------------------------------------------------------------		'copie sur la feuille du mois en cours

dim args5(0) as new com.sun.star.beans.PropertyValue
args5(0).Name = "Sel"
args5(0).Value = false

dispatcher.executeDispatch(document, ".uno:GoToEndOfData", "", 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:GoDown", "", 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:GoLeftToStartOfData", "", 0, args7())

rem ----------------------------------------------------------------------
dim args8(1) as new com.sun.star.beans.PropertyValue
args8(0).Name = "By"
args8(0).Value = 1
args8(1).Name = "Sel"
args8(1).Value = false

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

rem ----------------------------------------------------------------------		'collage speciale Texte et Date
dim args9(5) as new com.sun.star.beans.PropertyValue
args9(0).Name = "Flags"
args9(0).Value = "SD"
args9(1).Name = "FormulaCommand"
args9(1).Value = 0
args9(2).Name = "SkipEmptyCells"
args9(2).Value = false
args9(3).Name = "Transpose"
args9(3).Value = false
args9(4).Name = "AsLink"
args9(4).Value = false
args9(5).Name = "MoveMode"
args9(5).Value = 4

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

rem ----------------------------------------------------------------------		'descent la case en fin de ligne
dim args10(0) as new com.sun.star.beans.PropertyValue
args10(0).Name = "Sel"
args10(0).Value = false

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

rem ----------------------------------------------------------------------
dim args11(1) as new com.sun.star.beans.PropertyValue
args11(0).Name = "By"
args11(0).Value = 1
args11(1).Name = "Sel"
args11(1).Value = false

dispatcher.executeDispatch(document, ".uno:GoDown", "", 0, args11())

rem ----------------------------------------------------------------------
dim args12(1) as new com.sun.star.beans.PropertyValue
args12(0).Name = "By"
args12(0).Value = 1
args12(1).Name = "Sel"
args12(1).Value = false

dispatcher.executeDispatch(document, ".uno:GoLeftToStartOfData", "", 0, args12())

rem ----------------------------------------------------------------------
dim args13(1) as new com.sun.star.beans.PropertyValue
args13(0).Name = "By"
args13(0).Value = 1
args13(1).Name = "Sel"
args13(1).Value = false

dispatcher.executeDispatch(document, ".uno:GoRight", "", 0, args13())

end sub
C'est une grande macro, je pense que nous pouvons la simplifier, mais elle fonctionne parfaitement donc je la garde.

Ta solution est plus que valable et je pense vraiment la regarder de plus près C'est vraiment ce que je voulais au départ.

Je mets en pièce jointe un exemple du doc
Encore merci pour les explications dans ta macro, écrit comme cela j arrive a comprendre le raisonnement.
Fichiers attachés
Type de fichier : ods exemple.ods (19,0 Ko, 3 affichages)
clduick est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h21.


 
 
 
 
Partenaires

Hébergement Web