macro copie parfaite

J

jm

Guest
Hello,

Je voudrais faire un copie parfaite d'un bloc de cellules à sélectionner à choix. Copie parfaite = p.ex:

ligne n (source) =a1+$b$1

ligne n+1 (destination) =a1+$b$1
et non pas =a2+$b$1

sans bien sûr transformer mon a1 en $a$1.


je suppose que l'on doit pouvoir faire cela avec une macro style
- ma sélection -> variable
- cellule active = cellule du début de la copie exacte
- une boucle pour copier exactement le contenu de chaque cellule source dans mes cellules cibles?

merci d'aider un total deb en macro XL...

jm
 

jeromegmc

XLDnaute Occasionnel
Salut,

Voici un code qui te permet de copier la formule de B1 vers C1 et ce en gardant les réf:


Code:
Range('C1').Formula = Range('B1').Formula



Pour effectuer une copie automatique en fonction d'un plage défini tu peux faire un truc du genre:

Code:
sub copie

Dim MaPlage
Dim cellule As Range
Dim i,myrow,mycolumn

Set MaPlage = Range('D7:H7') 'defint la plage de cellule à copier
myrow =7 'ligne 7
mycolumn=9 ' colonne 9 = colonne i
i = 0
For Each cellule In MaPlage ' pour chaque cellule dans 'MaPlage'
Cells(myrow, mycolumn + i).formula = cellule.formula 'la formule de la cellule (ligne 7,colonne 9+i) = la formule de la cellule en cours dans la boucle
i = i + 1
Next

End Sub



A+

Message édité par: jeromegmc, à: 18/10/2005 10:36
 
J

jm

Guest
... et aussi que la cible de la copie soit la cellule courante?


l'idée est que je sélectionne une plage de cellules, que je fasse un Copy, puis que je sélectionne une cellule de destination à partir de laquelle je ferai ma copie parfaite.

merci!

jm
 

jeromegmc

XLDnaute Occasionnel
Re,

Yes, utilise ça:

Code:
Set maplage = Selection


ou ça, qui te permet de selectionner ta plage:

Set maplage = Application.InputBox(prompt:='Sélectionnez la plage de cellules.', _
Title:='Plage de cellules', Left:=500, Top:=300, Type:=8)


ou encore ça, pour répondre à l'autre question:

Code:
Private Sub Copy_Paste()
'Copie les valeurs des cellules de la plage sélectionnée et les colle dans
'les cellules de l'autre plage de cellules sélectionnée.
Dim mycells1, mycells2 As Range
Dim cells As Range
Dim i, cellules, cell(100)
Set mycells1 = Application.InputBox(prompt:='Sélectionnez la plage de cellules à copier.', _
Title:='Plage de cellules', Left:=500, Top:=300, Type:=8)
i = 1
For Each cellules In mycells1
cell(i) = cellules.Value
i = i + 1
Next

i = 1
Set mycells2 = Application.InputBox(prompt:='Sélectionnez la plage de cellules de destination.', _
Title:='Plage de cellules', Left:=500, Top:=300, Type:=8)
    

For Each cellules In mycells2
cellules.Value = cell(i)
i = i + 1
Next

End Sub


Pour la dernière solution, le code est à réparitr dans ta macro.

A+

Message édité par: jeromegmc, à: 18/10/2005 10:56
 
J

jm

Guest
j'abuse...

1. la cellule sélectionnée doit être ma cellule de destination. Je suppose que je dois donc pouvoir retrouver la ligne et la colonne de 'Selection'?

2. maplage doit en fait non pas contenir ma sélection courante, mais le bloc de cellules que j'ai 'copié', i.e. mis dans le presse-papier.

merci encore et désolé pour ma lambdatude

jm
 
J

jm

Guest
Selection.Row et Selction.Column, bien reçu.

Pour le reste: je veux travailler sur la base de cellules 'copiées' par Crtl-C:

autrement dit:

- je sélectionne un zone, je fais CTRL-C
- je sélectionne ma cible et j'appelle ma macro pour effectuer une copie parfaite au lieu d'un CTRL-V standard.

ce qui mem manque donc dans ton code est de pouvoir faire pointer 'maPlage' sur le groupe de cellules sources que j'ai initialement copié. ça devrait se trouver qqpart dans le clipboard, ou une table quelconque.

merci encore pour ton support, j'y suis presque...

jm
 

jeromegmc

XLDnaute Occasionnel
Re..........,

Le sub copy_paste qui se trouve plus haut te permet de sélectionner ta zone à copier et ta zone cible, je pense qu'elle répond a ta demande même si ce n'est pas ce que tu voulais faire au début.

Essayes ce sub et dis moi si c'est ok?

A+

Message édité par: jeromegmc, à: 18/10/2005 14:06
 
J

jm

Guest
oui, ça le fait.

J'aurais juste encore voulu que la sélection de la source se fasse sur la base du cplipboard plutôt que par Application.InputBox

c'est juste pour rendre la macro plus convivial, mais ta routine fait le job sans problemo, merci pour tout!

jm
 

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 337
Messages
2 087 391
Membres
103 536
dernier inscrit
komivi