Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Copier Coller par macro

8 réponses
Avatar
Christian de BXL
Bonjour à tous,
Une opération qui me semblait simple à réaliser ne fonctionne pas (je
devrais me souvenir que "simple" est un mot qu'il ne faut même plus imaginer
en informatique).
Mon problème: je voudrais faire une macro me permettant de sélectionner un
certain nombre de cellules sur une ligne. Cela donne ceci:
Sub Copier_une_ligne()
ActiveCell.Range("A1:M1").Select
Selection.Copy
End Sub
Cela fonctionne
Je voudrais une seconde macro me permettant de coller ces cellules (ou leur
contenu) dans une autre ligne (même nombre de cellules, avec propriétés
identiques). Je sélectionne une cellule de destination. Cela donne ceci en
utilisant l'enregistreur de macro:
Sub Coller
ActiveCell.Range("A1:M1").Select
ActiveSheet.Paste
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=False
End Sub
ou ceci:
ActiveCell.Range("A1:M1").Select
ActiveSheet.Paste
Application.CutCopyMode = False

mais cela ne fonctionne pas. La macro s'arrête sur une erreur à
"Selection.Paste" ou "ActiveSheet.Paste".
Comment écrire l'instruction pour que ce qui se trouve dans le presse papier
soit coller et pas ce qui vient d'être sélectionner par
"ActiveCell.Range("A1:M1").Select" car je suppose que c'est de là que vient
l'erreur.
Merci à vous de me conseiller
Christian

8 réponses

Avatar
Jacky
Bonjour,

La cellule de destination est ici A10 (A adapter)
'----------
Sub Coller()
[A1:M1].Copy
[a10].PasteSpecial Paste:=xlPasteValues
End Sub
'------------

--
Salutations
JJ


"Christian de BXL" a écrit dans
le message de news:
Bonjour à tous,
Une opération qui me semblait simple à réaliser ne fonctionne pas (je
devrais me souvenir que "simple" est un mot qu'il ne faut même plus
imaginer
en informatique).
Mon problème: je voudrais faire une macro me permettant de sélectionner un
certain nombre de cellules sur une ligne. Cela donne ceci:
Sub Copier_une_ligne()
ActiveCell.Range("A1:M1").Select
Selection.Copy
End Sub
Cela fonctionne
Je voudrais une seconde macro me permettant de coller ces cellules (ou
leur
contenu) dans une autre ligne (même nombre de cellules, avec propriétés
identiques). Je sélectionne une cellule de destination. Cela donne ceci en
utilisant l'enregistreur de macro:
Sub Coller
ActiveCell.Range("A1:M1").Select
ActiveSheet.Paste
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:úlse, Transpose:úlse
End Sub
ou ceci:
ActiveCell.Range("A1:M1").Select
ActiveSheet.Paste
Application.CutCopyMode = False

mais cela ne fonctionne pas. La macro s'arrête sur une erreur à
"Selection.Paste" ou "ActiveSheet.Paste".
Comment écrire l'instruction pour que ce qui se trouve dans le presse
papier
soit coller et pas ce qui vient d'être sélectionner par
"ActiveCell.Range("A1:M1").Select" car je suppose que c'est de là que
vient
l'erreur.
Merci à vous de me conseiller
Christian


Avatar
Christian de BXL
Bonjour Jacky,
Je te remercie de ta réponse, mais elle n'est pas utilisable dans mon cas.
Il ne s'agit pas de cellules définies à recopier dans une cellule précise. Je
voudrais pouvoir à partir d'une cellule sélectionnée, copier les 12 cellules
à droite de cette cellule (= macro "copier").
Dans un second temps, je voudrais pouvoir coller ces cellules dans une autre
ligne de mon classeur, en sélectionnant la première cellule de la ligne de
destination (= macro coller)
Je ne peux pas recopier puis coller toute la ligne, car une partie des
cellules (après la série devant être déplacée) contiennent des éléments non
déplaçables.
Je ne sais pas si je suis claire dans le descriptif de mon problème?
A bientôt
Christian
Avatar
Daniel.C
Bonjour.
Peut-être :

Sub test()
Set x = ActiveCell.Offset(, 1).Resize(, 12)
Set c = Application.InputBox("Sélectionnez la cellule à copier",
Type:=8)
x.Copy c
End Sub

Copie les 12 cellules à droite de la cellule active, te permets la sélection
de la cellule cible avec la souris et effectue le collage.
Cordialement.
Daniel
"Christian de BXL" a écrit dans
le message de news:
Bonjour Jacky,
Je te remercie de ta réponse, mais elle n'est pas utilisable dans mon cas.
Il ne s'agit pas de cellules définies à recopier dans une cellule précise.
Je
voudrais pouvoir à partir d'une cellule sélectionnée, copier les 12
cellules
à droite de cette cellule (= macro "copier").
Dans un second temps, je voudrais pouvoir coller ces cellules dans une
autre
ligne de mon classeur, en sélectionnant la première cellule de la ligne de
destination (= macro coller)
Je ne peux pas recopier puis coller toute la ligne, car une partie des
cellules (après la série devant être déplacée) contiennent des éléments
non
déplaçables.
Je ne sais pas si je suis claire dans le descriptif de mon problème?
A bientôt
Christian





Avatar
Jacky
Re...
Ou encore en deux macros
'----------
Dim x As Range

Sub copie()
Set x = ActiveCell.Offset(, 1).Resize(, 12)
End Sub

Sub colle()
x.Copy ActiveCell
End Sub
'------------

--
Salutations
JJ


"Christian de BXL" a écrit dans
le message de news:
Bonjour Jacky,
Je te remercie de ta réponse, mais elle n'est pas utilisable dans mon cas.
Il ne s'agit pas de cellules définies à recopier dans une cellule précise.
Je
voudrais pouvoir à partir d'une cellule sélectionnée, copier les 12
cellules
à droite de cette cellule (= macro "copier").
Dans un second temps, je voudrais pouvoir coller ces cellules dans une
autre
ligne de mon classeur, en sélectionnant la première cellule de la ligne de
destination (= macro coller)
Je ne peux pas recopier puis coller toute la ligne, car une partie des
cellules (après la série devant être déplacée) contiennent des éléments
non
déplaçables.
Je ne sais pas si je suis claire dans le descriptif de mon problème?
A bientôt
Christian





Avatar
isabelle
bonjour Christian,

Sub Coller()
x = Selection.Address
Set y = Application.InputBox(prompt:="Selectionner la cellule de destination", Type:=8)
Range(x).Resize(1, 12).Copy
y.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
End Sub

isabelle

Bonjour Jacky,
Je te remercie de ta réponse, mais elle n'est pas utilisable dans mon cas.
Il ne s'agit pas de cellules définies à recopier dans une cellule précise. Je
voudrais pouvoir à partir d'une cellule sélectionnée, copier les 12 cellules
à droite de cette cellule (= macro "copier").
Dans un second temps, je voudrais pouvoir coller ces cellules dans une autre
ligne de mon classeur, en sélectionnant la première cellule de la ligne de
destination (= macro coller)
Je ne peux pas recopier puis coller toute la ligne, car une partie des
cellules (après la série devant être déplacée) contiennent des éléments non
déplaçables.
Je ne sais pas si je suis claire dans le descriptif de mon problème?
A bientôt
Christian





Avatar
Christian de BXL
Merci à vous trois pour vos réponses.
Dans l'ordre: Daniel, ta macro fonctionne parfaitement, j'ai simplement
changé
"Set x = ActiveCell.Offset(, 1).Resize(, 12)" en "Set x =
ActiveCell.Offset(, 0).Resize(, 12)" pour copier aussi la cellule
sélectionnée.
Le seul problème est si on clique sur "Annuler" dans la MessageBox la macro
s'arrête sur " Set c = Application.InputBox("Sélectionnez la cellule à
copier",
Type:=8) " et affiche le débogeur. Y a-t-il moyen de palier à cela?

Jacky,la macro 2 s'arrête sur " x.Copy ActiveCell " .Je ne sais pas non plus
où mettre "Dim x As Range ". Si je le laisse à la place que tu m'indique, il
passe au dessus de la ligne séparant les macros.

Isabelle,la macro s'arr^te sur "Range(x).Resize(1, 12).Copy " je ne sais pas
quoi y changer.

La macro de Daniel me convient parfaitement, si j'arrive à faire fonctionner
les deux autres, cela me ferait plaisir pour faire avancer le schmilblik.
Encore une grand merci à vous
Christian
Avatar
Jacky
Re...
Si je le laisse à la place que tu m'indique, il passe au dessus de la ligne
séparant les macros.
C'est bien la qu'il doit être ;o)


pour faire avancer le schmilblik
Essaie ici (avec la modif "ActiveCell.Resize(, 12)")


http://cjoint.com/?fBvkefGiPO

--
Salutations
JJ


"Christian de BXL" a écrit dans
le message de news:
Merci à vous trois pour vos réponses.
Dans l'ordre: Daniel, ta macro fonctionne parfaitement, j'ai simplement
changé
"Set x = ActiveCell.Offset(, 1).Resize(, 12)" en "Set x > c" pour copier aussi la cellule
sélectionnée.
Le seul problème est si on clique sur "Annuler" dans la MessageBox la
macro
s'arrête sur " Set c = Application.InputBox("Sélectionnez la cellule à
copier",
Type:=8) " et affiche le débogeur. Y a-t-il moyen de palier à cela?

Jacky,la macro 2 s'arrête sur " x.Copy ActiveCell " .Je ne sais pas non
plus
où mettre "Dim x As Range ". Si je le laisse à la place que tu m'indique,
il
passe au dessus de la ligne séparant les macros.

Isabelle,la macro s'arr^te sur "Range(x).Resize(1, 12).Copy " je ne sais
pas
quoi y changer.

La macro de Daniel me convient parfaitement, si j'arrive à faire
fonctionner
les deux autres, cela me ferait plaisir pour faire avancer le schmilblik.
Encore une grand merci à vous
Christian




Avatar
Christian de BXL
Bonsoir Jacky,
C'est parfait, j'ai appliquer tes consignes, cela fonctionne farfaitement
Merci à toi
Christian