Copier ( équivalent du copié collé) en VBA

Le
Thierry 46
Bonsoir à tous,

Une personne utilise un fichier Excel pour copier une cellule, la coller
dans une autre application. Pour son suivi et ne pas se tromper elle
note "fait". et ainsi de suite.

On me demande que sur un "double clic" la cellule soit copiée et soit
coloriée.
Pour le coloriage je sais:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As
Boolean)
Target.Interior.ColorIndex = 36
Cancel = True
End Sub

Mais comment pour copier de telle sorte que la personne puisse coller
dans une autre application?
Si vous avez une piste. Merci
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
michdenis
Le #20855351
Bonjour,

Tu n'as qu'à ajouter une ligne de code : Target.Copy
et le contenu de la cellule se retrouvera dans le Presse-Papier.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Target.Interior.ColorIndex = 36
Target.copy
Cancel = True
End Sub




Mais comment pour copier de telle sorte que la personne puisse coller
dans une autre application?
Si vous avez une piste. Merci
michdenis
Le #20855431
Pour coller l'information du presse-papier dans la nouvelle application,
l'usager peut utiliser le raccourci clavier Ctrl + V
Gloops
Le #20856821
Bonjour,

michdenis a écrit, le 29/12/2009 21:57 :
Pour coller l'information du presse-papier dans la nouvelle application ,
l'usager peut utiliser le raccourci clavier Ctrl + V



Effectivement ...

Toutefois en partant du principe que les simulations de touches ne sont
à utiliser que lorsqu'on ne sait pas faire mieux, du fait qu'elles
risquent d'être dirigées vers une autre fenêtre que celle visée s i
l'utilisateur effectue un clic au moment fatidique, la question du
collage sera à poser dans le newsgroup dédié à l'application cibl e.

Par exemple, comme j'ai Word 2002 sous la main je regarde, je vois que
l'objet Range (de Word, j'insiste puisque ce n'est pas le cas sous
Excel) dispose de la méthode Paste, qui colle le contenu du
presse-papier dans le champ désigné.

Pour ce qui est d'Excel je travaille de mémoire, on copie un champ, mai s
on colle sur une feuille (si on fait autrement on se ramasse).
Attention, on ne doit coller que sur la feuille active, il faut donc
activer la feuille cible avant de coller dessus.

WorkSheets("FeuilleSource").Activate
WorkSheets("FeuilleSource").Range("A3:C4").Copy
WorkSheets("FeuilleCible").Activate
WorkSheets("FeuilleCible").Range("H24").Select
'Attention si on sélectionne plusieurs cellules
'il faut qu'elles constituent un champ de même forme
'que le champ copié
WorkSheets("FeuilleCible").Paste
'Attention de gérer le cas où des données sont déjà prés entes
'quelque part dans la zone cible visée

J'ai simplifié en mettant la feuille cible et la feuille source dans le
même classeur, sinon il faut activer le classeur en même temps qu'on
active la feuille (ou plus exactement juste avant).

Il peut arriver lorsqu'on effectue un copier-coller d'une application à
une autre qu'on ait à gérer le verrouillage du presse-papier. Je ne s uis
pas très sûr de savoir faire ça sous Excel sans recourir aux API -e n
tout cas à cette heure-ci :) .

A noter que pour transférer des informations d'une application à une
autre, le recours au copier-coller n'est pas toujours la meilleure
méthode. Je crois que je risquerais de ne pas être clair sans laisser
d'abord décrire le travail à effectuer, avant de me risquer à entre r
dans le détail de sa mise en œuvre.
michdenis
Le #20856921
Le demandeur veut copier l'information dans une autre application
non dans une autre feuille. Il n'est nullement mentionné de quelle
application il s'agit.

Et dans Excel, l'objet "Range" possède la méthode "PasteSpecial"
qui est l'équivalent de la commande "Collage spécial" avec toutes
ces caractéristiques de ce dernier.




"Gloops"
Bonjour,

michdenis a écrit, le 29/12/2009 21:57 :
Pour coller l'information du presse-papier dans la nouvelle application,
l'usager peut utiliser le raccourci clavier Ctrl + V



Effectivement ...

Toutefois en partant du principe que les simulations de touches ne sont
à utiliser que lorsqu'on ne sait pas faire mieux, du fait qu'elles
risquent d'être dirigées vers une autre fenêtre que celle visée si
l'utilisateur effectue un clic au moment fatidique, la question du
collage sera à poser dans le newsgroup dédié à l'application cible.

Par exemple, comme j'ai Word 2002 sous la main je regarde, je vois que
l'objet Range (de Word, j'insiste puisque ce n'est pas le cas sous
Excel) dispose de la méthode Paste, qui colle le contenu du
presse-papier dans le champ désigné.

Pour ce qui est d'Excel je travaille de mémoire, on copie un champ, mais
on colle sur une feuille (si on fait autrement on se ramasse).
Attention, on ne doit coller que sur la feuille active, il faut donc
activer la feuille cible avant de coller dessus.

WorkSheets("FeuilleSource").Activate
WorkSheets("FeuilleSource").Range("A3:C4").Copy
WorkSheets("FeuilleCible").Activate
WorkSheets("FeuilleCible").Range("H24").Select
'Attention si on sélectionne plusieurs cellules
'il faut qu'elles constituent un champ de même forme
'que le champ copié
WorkSheets("FeuilleCible").Paste
'Attention de gérer le cas où des données sont déjà présentes
'quelque part dans la zone cible visée

J'ai simplifié en mettant la feuille cible et la feuille source dans le
même classeur, sinon il faut activer le classeur en même temps qu'on
active la feuille (ou plus exactement juste avant).

Il peut arriver lorsqu'on effectue un copier-coller d'une application à
une autre qu'on ait à gérer le verrouillage du presse-papier. Je ne suis
pas très sûr de savoir faire ça sous Excel sans recourir aux API -en
tout cas à cette heure-ci :) .

A noter que pour transférer des informations d'une application à une
autre, le recours au copier-coller n'est pas toujours la meilleure
méthode. Je crois que je risquerais de ne pas être clair sans laisser
d'abord décrire le travail à effectuer, avant de me risquer à entrer
dans le détail de sa mise en œuvre.
Modeste
Le #20856991
Bonsour® michdenis avec ferveur ;o))) vous nous disiez :

Il peut arriver lorsqu'on effectue un copier-coller d'une application à
une autre qu'on ait à gérer le verrouillage du presse-papier. Je ne suis
pas très sûr de savoir faire ça sous Excel sans recourir aux API -en
tout cas à cette heure-ci :) .



;o))))
il n'y a pas d'heure pour les braves !!!
Gloops
Le #20857191
michdenis a écrit, le 30/12/2009 00:46 :
Le demandeur veut copier l'information dans une autre application
non dans une autre feuille. Il n'est nullement mentionné de quelle
application il s'agit.

Et dans Excel, l'objet "Range" possède la méthode "PasteSpecial"
qui est l'équivalent de la commande "Collage spécial" avec toutes
ces caractéristiques de ce dernier.




Effectivement, j'avais pris l'exemple de Word (en me disant qu'avec un
exemple ça peut être plus parlant), mais pendant qu'on y était je
prenais aussi l'exemple d'Excel puisque c'est là qu'on est -en laissant
entendre qu'il faudra mener la même réflexion dans le newsgroup de
l'application cible.

Sous Excel en tant qu'application cible effectivement il faut un peu
affiner. Le piège auquel il faut être attentif, sauf si ça a changé au
cours des versions, est qu'on se fait jeter si on colle vers une autre
feuille que la feuille active.
Est-ce bien toujours le cas ?

C'est vrai que collage spécial, ça peut être intéressant si c'est des
données qu'on transmet. A la main c'est quoi le raccourci clavier déj à ?
Gloops
Le #20857181
Modeste a écrit, le 30/12/2009 00:59 :
Bonsour® michdenis avec ferveur ;o))) vous nous disiez :

Il peut arriver lorsqu'on effectue un copier-coller d'une application à
une autre qu'on ait à gérer le verrouillage du presse-papier. Je n e suis
pas très sûr de savoir faire ça sous Excel sans recourir aux API -en
tout cas à cette heure-ci :) .



;o))))
il n'y a pas d'heure pour les braves !!!




:)

Tu vois, MichDenis, il y a un souci de paramétrage avec ton logiciel de
news : moi aussi j'ai eu du mal à retrouver mon propre texte dans ta
citation.
Thierry 46
Le #20857631
Le 29/12/2009 21:42, michdenis a écrit :
Bonjour,

Tu n'as qu'à ajouter une ligne de code : Target.Copy
et le contenu de la cellule se retrouvera dans le Presse-Papier.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Target.Interior.ColorIndex = 36
Target.copy
Cancel = True
End Sub




Mais comment pour copier de telle sorte que la personne puisse coller
dans une autre application?
Si vous avez une piste. Merci




Bonjour,

J'avais bien essayé Target.copy en premier. Un "copy" avant le
changement de couleur en pensant mettre dans le presse-papier que le
contenu de la cellule, or lors du coller dans une autre cellule cela me
colle aussi la couleur!

Je cherche donc à copier le contenu de la cellule puis la colorier
ensuite afin de pouvoir coller que la valeur.
Mais malgré ce mystère, la solution est bonne car le collage doit se
faire dans un formulaire Web.
Merci de ton aide.
Caetera
Le #20857671
"Thierry 46"

J'avais bien essayé Target.copy en premier. Un "copy" avant le changement de
couleur en pensant mettre dans le presse-papier que le contenu de la cellule



***************
Tu peux passer par une cellule intermédiaire :

[xxx]=Target.value
[xxx].Copy

le reste.......

[xxx] = ""

Etc
Gloops
Le #20863561
Thierry 46 a écrit, le 30/12/2009 08:11 :
Bonjour,

J'avais bien essayé Target.copy en premier. Un "copy" avant le
changement de couleur en pensant mettre dans le presse-papier que le
contenu de la cellule, or lors du coller dans une autre cellule cela me
colle aussi la couleur!

Je cherche donc à copier le contenu de la cellule puis la colorier
ensuite afin de pouvoir coller que la valeur.
Mais malgré ce mystère, la solution est bonne car le collage doit s e
faire dans un formulaire Web.
Merci de ton aide.



Ah oui, quand tu copies, ça crée un pointeur sur la source, et si tu
trouves le moyen de modifier la source avant de coller, eh bien comme tu
vois la source est copiée comme elle est au moment du collage.

Comme le laisse entendre Caetera tu peux ne copier/coller que le texte.
Autrement, pour transférer avec la mise en forme précédente, le
changement de couleur ne doit intervenir qu'après avoir collé dans
l'autre application.

Un formulaire web ... tu veux dire que tu colles dans un des champs d'un
formulaire trouvé sur Internet ?
L'usage de DHTML semble recommandé.
Publicité
Poster une réponse
Anonyme