copier coller avec vba

  • Initiateur de la discussion Initiateur de la discussion laurent
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

L

laurent

Guest
Bonjour à tous

Merci de votre aide, je n'ai pas était très clair dans le sujet
("vba coller-->copier")


J'ai refait mon exemple je pense qu'il est plus clair

Salut

Laurent

@+
 
Salut Michel
Et merci ça marche

mais étant un débutant je ne comprend pas ta formule pourrais tu me l'expliquer

s'il te plait

Car tu as changé

ActiveSheet.Shapes.AddShape(msoShapeSmileyFace, 16.5, 223.5, 17.25, 17.25). _
Select

par

Dim cible As String
cible = ActiveCell.Address

ActiveSheet.Shapes("AutoShape 16").Select
Selection.Copy
Range(cible).Select
ActiveSheet.Paste

merci
@+
laurent
 
Bonsoir Laurent


Je vais essayer de t’expliquer :

Lorsque tu as lancé l’enregistreur de macro, tu as créé la forme (addshape) donc, tu as les parametres complets (forme, position, taille) inscrits dans ta macro. Pour t’en convaincre consultes l’aide microsoft

Une fois que ta forme est construite Tonton VBA lui donne un nom et un numéro « autoshape 16 » je ne sais pas comment il fait ni comment les retrouver.


Lorsque j’ai lancé l’enregistreur de macros,

1/j’ai cliqué sur la forme existante (le smileyface) donc je ne l’ai pas créé (donc pas de addshape) et son numéro s’est inscrit dans la macro
2/ j’ai cliqué sur copier
3 : j’ai sélectionné une cellule de destination (au hasard C6)
4/ j’ai cliqué sur coller

les 2 dernières de la macro étaient donc :
range(« C6 »). Select
activesheet. Paste

au besoin, refais cette manip pour bien piger.

Maintenant, il faut employer VBA car la destination est variable et tu ne peux pas le faire avec l’enregistreur

Je vais donc créer une variable (cible)
Qui sera affectée de l’adresse de la cellule active (ma destination : C6,B4…)
Cible=activecell.address

Address renvoit du texte donc cible est dimensionné en string (string= chaine (de caractères) comme quoi les américains peuvent être des fois égrillards) Dim cible as string

J’arr^te de délirer…

Dans range (cible) il y a la valeur de la variable (C6,B4…) on a donc par exemple range(« C6 »)
Et il n’y a plus qu’à coller

Tu peux suivre le procédé pas à pas avec le débogueur (touche F8) et tu peux suivre la valeur de cible en installant un espion (débog…| ajouter un espion)

Bonne soirée
Michel
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
1
Affichages
247
Réponses
12
Affichages
282
Retour