[Résolu] [Calc] collage spécial relatif dans un classeur

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 !
nulenmacro
Fraîchement OOthentifié
Messages : 4
Inscription : 14 mars 2010 19:05

[Résolu] [Calc] collage spécial relatif dans un classeur

Message par nulenmacro »

"
[Calc]
Bonjour,
Pour certains, ma question va être enfantine mais cela fait une journée que je me creuse pour trouver comment coller une plage de données
- depuis une feuille de classeur openoffice (exemple C4:Z4 dans la feuille "reference")
- sur une autre feuille QUELCONQUE (il s'agit d'un classeur annuel avec les douze mois, donc soit sur 01, 02 , 03 etc jusqu'à 12)
- et à partir de la cellule sélectionnée(active) dans la feuille sélectionnée (active)
Je désire donc que ma macro, que je me place sur la feuille 02 ou 10 ou 12, dans une cellule quelconque, qu'elle me recopie la plage C4:Z4 de la feuille "reference"
+ et le tout avec un collage spécial (en ignorant les cellules vides)
+ sans avoir à valider la boite de dialogue correspondante
+ et en n'ayant pas à répondre à un écrasement éventuel de données (car il y a des formats dans la feuille cible; donc la recopie met le message d'alerte par défaut)
UN GRAND MERCI à ceux qui peuvent m'aider"
open office 3.2.0
windows Xp
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25143
Inscription : 03 mars 2006 08:45
Localisation : 127.0.0.1
Contact :

Re: [Calc] collage spécial relatif dans un classeur

Message par Dude »

Poser une question, c'est bien. Répondre aux autres, c'est encore mieux.
Améliorez AOO et votez pour les issues
nulenmacro
Fraîchement OOthentifié
Messages : 4
Inscription : 14 mars 2010 19:05

Re: [Calc] collage spécial relatif dans un classeur

Message par nulenmacro »

Merci, j'avais vu cette proposition mais je ne désire pas changer de classeur. ça ce n'est pas grave et cela pouvait s'adapter =>Mais je ne veux pas à avoir à nommer ma destination dans la macro : je voudrais qu'elle s'applique à la feuille active au moment du déclenchement de cette macro sans compter qu'il me faudrait après
+ pouvoir faire le ok de la boite de dialogue du collage spécial et enfin
+ passer outre le message d'écrasement...
je sais, suis exigeant mais c'est pour le boulot...
Voici, à l'aide d'un classeur en pièce jointe ce que je souhaiterais (expliqué à la première feuille nommée "reference")
Par avance, Merci (et désolé pour le message, à l'attention du modérateur)
Pièces jointes
copie_relative.ods
(15.95 Kio) Téléchargé 133 fois
Dernière modification par nulenmacro le 15 mars 2010 13:40, modifié 1 fois.
open office 3.2.0
windows Xp
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25143
Inscription : 03 mars 2006 08:45
Localisation : 127.0.0.1
Contact :

Re: [Calc] collage spécial relatif dans un classeur

Message par Dude »

nulenmacro a écrit :Mais je ne veux pas à avoir à nommer ma destination dans la macro : je voudrais qu'elle s'applique à la feuille active au moment du déclenchement de cette macro
Autres pistes trouvées avec "copie* +colle* +plage*" :
http://user.services.openoffice.org/fr/ ... A+plage%2A
http://user.services.openoffice.org/fr/ ... A+plage%2A
http://user.services.openoffice.org/fr/ ... A+plage%2A
Poser une question, c'est bien. Répondre aux autres, c'est encore mieux.
Améliorez AOO et votez pour les issues
nulenmacro
Fraîchement OOthentifié
Messages : 4
Inscription : 14 mars 2010 19:05

Re: [Calc] collage spécial relatif dans un classeur

Message par nulenmacro »

Je n'y arrive pas, désolé
Tant pis si cela ne fonctionne pas sur n'importe quelle feuille, je la renommerai (mais je ne peux pas la déplacer dans le classeur)
Dans le cas de feuilles que je renomme tous les mois, voici ce que j'avais sous excel (le code est affiché en page exemple dans le fichier joint et répété ici)

Code : Tout sélectionner

Sub copir()
' copir Macro
' Macro enregistrée le 15/03/2010 par nulenmacro
    Sheets("MODELE").Select
    Range("B12:H12").Select
    Selection.Copy
    Sheets("mois").Select
    ActiveCell.Select
    Selection.PasteSpecial Paste:=xlAll, Operation:=xlNone, SkipBlanks:=True _
        , Transpose:=False
End Sub
MERCI beaucoup pour votre aide car je m'arrache le reste de cheveux qu'il me reste ! Je n'arrive pas à appeler et sélectionner les feuilles :(
Pièces jointes
Classeur1.ods
voir l'équivalent excel
(11.12 Kio) Téléchargé 157 fois
Dernière modification par Oukcha le 16 mars 2010 07:39, modifié 1 fois.
Raison : Pose balise [code] et [/code] = lecture et sélection simplifiées.
open office 3.2.0
windows Xp
pic-epeiche
Fraîchement OOthentifié
Messages : 2
Inscription : 18 juin 2009 17:41

Re: [Calc] collage spécial relatif dans un classeur

Message par pic-epeiche »

Bonjour,

Je ne suis pas non plus une pro des macro et ce que je fais n'est pas forcement trés élégant, mais ça fonctionne !!
si j'ai bien compris, ce qui te manque c'est juste le positionnement sur la feuille active :
ça tu peux le récupérer comme ça :
FeuilleDest = Doc.CurrentController.ActiveSheet
Ensuite, après avoir fait le "copy" sur ta feuille d'origine, tu te replaces en inversant la formule :
Doc.CurrentController.ActiveSheet = FeuilleDest

Sinon, si tu as des cochonneries dans les cellules, avant de faire le coller, tu peux tout virer pour être tranquille .
Après avoir sélectionner la plage de cellules :
args1(0).Name = "Flags"
args1(0).Value = "A"
dispatcher.executeDispatch(document, ".uno:Delete", "", 0, args1())

Après ça, le "paste" devrait se faire sans message.

bon courage
OpenOffice 3.2.0 sous Windows XP
nulenmacro
Fraîchement OOthentifié
Messages : 4
Inscription : 14 mars 2010 19:05

[Resolu] [Calc] collage spécial relatif dans un classeur

Message par nulenmacro »

RESOLU Merci à ceux qui m'ont apporté leur contribution, cela a été laborieux ; certainement enfantins pour les pros mais j'offre ma solution à ceux à qui cela pourrait servir

Code : Tout sélectionner

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

Sub lessai
dim Classeur as Object, Fdep as Object, PlageDep as Object, Farr as Object, Cellarr as Object,PlageDep2 as Object, Cellarr2 as Object
dim NumL as integer, NumC as integer, NumC2 as integer
Classeur = thisComponent
'identifier la page active comme page d'arrivée
Farr=Classeur.CurrentController.ActiveSheet
'identifier la page de depart ainsi que les plages à copier
Fdep=Classeur.Sheets.getByName("modele")
PlageDep = Fdep.getCellRangeByName("C3:F3")
'Farr=Classeur.Sheets.getByName("mois")
Classeur.CurrentController.ActiveSheet = Farr
Cellarr = Classeur.CurrentSelection
'Obtenir le numéro de la ligne
NumL = Cellarr.RangeAddress.StartRow
'Obtenir les numéros des colonne à copier
NumC = Cellarr.RangeAddress.StartColumn
'identifier la colonne de la deuxième plage copiée
NumC2 = NumC + 5
'copie de la ppremière plage
Farr.copyrange(Cellarr.cellAddress, PlageDep.rangeAddress)
'selection de la deuxième plage
Fdep=Classeur.Sheets.getByName("modele")
PlageDep2 = Fdep.getCellRangeByName("H3:K3")
'copie de la deuxième plage en retournant sur la page active du départ
Classeur.CurrentController.ActiveSheet = Farr
Cellarr2 = Farr.getCellByPosition (NumC2, NumL)
Farr.copyrange(Cellarr2.cellAddress, PlageDep2.rangeAddress)
end sub
:D
Dernière modification par Flip le 20 mars 2010 22:44, modifié 1 fois.
Raison : Balisage CODE.
open office 3.2.0
windows Xp
Répondre