macro excel copier image

kabeha

Membre expert
Club iGen
13 Mai 2002
1 323
54
60
Bourg en Bresse
Bonjour,
Que faut-il modifier dans la macro ci-dessous pour que l'image que contient la cellule C1 soit collée dans la cellule de destination ? C1 contient une valeur et une forme et je veux que la macro copie la valeur et la forme contenues dans la cellule que j'ai sélectionnée dans mon tableau
Telle quelle, seule la valeur est copiée

Sub Active()
Worksheets("Feuil1").Activate
ActiveCell.Value = Range("c1")
End Sub

Merci d'avance
 
Une cellule ne peut pas "contenir" une image. Une image est un objet indépendant, plutôt "posé sur" une cellule (ou un groupe de cellules).

Une image doit être traitée indépendamment, en se servant de son nom ou de l'index qui l'identifie.
 
Excel dispose d'un outil bien utile pour débuter une macro, c'est l'enregistreur. Cela donne souvent des pistes utiles mais ça demande aussi un peu d'habitude, car il y a pas mal de retraitement à faire (il enregistre un peu bêtement ce qu'on fait, pas ce qu'on voudrait faire).

Dans le cas de ta copie, voici un exemple de macro qui copie le contenu de la cellule C1 en C26 et l'image "Image 1" au-dessus de la cellule D26 (fonctionne avec Excel 2011 et 2016) :

Bloc de code:
Sub ActiveRevue()
    Range("C1").Copy
    Range("C26").Select
    ActiveSheet.Paste
    ActiveSheet.Shapes("Image 1").Copy
    Range("D26").Select
    ActiveSheet.Paste
End Sub

Concernant le nom de l'image, on peut l'obtenir lorsqu'on la sélectionne :
Capture d’écran.png

Mais on aurait pu aussi écrire ActiveSheet.Shapes(1).Copy à condition d'être sûr que c'est bien la première image de la série (c'est parfois un peu risqué, parce que l'ordre n'est pas toujours évident à deviner - d'autres fois, c'est bien utile).
 
Bonjour,
Merci pour la réponse.
J'ai mis dans une cellule un texte et un rectangle positionné dessus au milieu:
Si je copie la macro telle quelle, j'ai deux fois l'image dans la cellule de destination, un rectangle en haut à gauche, un au milieu comme dans la cellule initiale, plus le texte.
Si je supprime la deuxième partie de la macro, j'ai exactement la cellule copiée à l'identique : texte + rectangle au milieu, comme je voulais

Sub ActiveRevue()
Range("A1").Copy
Range("B10").Select
ActiveSheet.Paste
End Sub

Mais cela ne me convient pas car je veux que la macro copie la cellule A1 dans une cellule que j'ai sélectionnée au préalable. Je sélectionne par exemple la cellule B10, j'exécute la macro et le contenu et l'image de la cellule A1 sont copiés en B10
 
Je crois comprendre qu'il veut sélectionner manuellement une cellule quelconque du tableau Excel puis lancer la Macron qui va copier le contenu de A1 dans la cellule active.
 
Je ferais un truc du genre (en donnant un nom à la cellule active pour savoir la sélectionner comme destination de la copie)

Sub ActiveRevue()
ActiveWorkbook.Names.Add Name:="Cible", RefersToR1C1:=ActiveCell
Range("A1").Copy
Range("Cible").Select
ActiveSheet.Paste
End Sub
 
Dernière édition:
'...puis lancer la Macron ...
Oups...
Il vaut mieux utiliser une macro! :D
Sinon ça risque de chercher à tout te sélectionner de l'extrême gauche à l'extrême droite du tableau.
 
  • J’aime
Réactions: kabeha et Aliboron
Je ferais un truc du genre (en donnant un nom à la cellule active pour savoir la sélectionner comme destination de la copie)

Sub ActiveRevue()
ActiveWorkbook.Names.Add Name:="Cible", RefersToR1C1:=ActiveCell
Range("A1").Copy
Range("Cible").Select
ActiveSheet.Paste
End Sub
Impeccable, exactement ça
:):up::merci: