Copier une image d'une feuille excel à une autre
Résolu
Cactophile
-
MMYSofts -
MMYSofts -
Bonjour le Forum !
Ce que je veux faire semble très simple et pourtant je bloque !!
L'idée est de créer plusieurs images depuis une feuille excel (Copier en tant qu'image). Je les renomme toute par un nom différents. et je les colle dans une feuille "tampon"
Ensuite je voudrai afficher la bonne image en fonction de la valeur d'une cellule ...
C'est la que je bloque ! comment sélectionner l'image que j'ai renommer pour le coller ensuite dans ma feuille Excel ??
Voila le code que j'utilise pour copier et renommer mon image :
<code>
Sheets("Feuil1").Select
Application.CutCopyMode = False
Sheets("Feuil1").Range("A7:AU45").Copy
Sheets("Pertes").Select
Range("J48").Select
ActiveSheet.Pictures.Paste.Select
Selection.Name = "PDB"
Application.CutCopyMode = False<
/code>
Voila et en gros maintenant je voudrai lui dire :
Prend l'image qui s'appelle PDB et colle la dans la cellule A1 par exemple
J'arrive à selectionner et à copier l'image mais je bloque pour lui dire de ce coller dans une cellule données : La ligne :
Selection.Copy Destination:=Sheets("Pertes").Range("J86")
Me renvoie un beug ...Mais le selection.Copy tout seul fonctionne !
Merci de votre aide !!
:)
Ce que je veux faire semble très simple et pourtant je bloque !!
L'idée est de créer plusieurs images depuis une feuille excel (Copier en tant qu'image). Je les renomme toute par un nom différents. et je les colle dans une feuille "tampon"
Ensuite je voudrai afficher la bonne image en fonction de la valeur d'une cellule ...
C'est la que je bloque ! comment sélectionner l'image que j'ai renommer pour le coller ensuite dans ma feuille Excel ??
Voila le code que j'utilise pour copier et renommer mon image :
<code>
Sheets("Feuil1").Select
Application.CutCopyMode = False
Sheets("Feuil1").Range("A7:AU45").Copy
Sheets("Pertes").Select
Range("J48").Select
ActiveSheet.Pictures.Paste.Select
Selection.Name = "PDB"
Application.CutCopyMode = False<
/code>
Voila et en gros maintenant je voudrai lui dire :
Prend l'image qui s'appelle PDB et colle la dans la cellule A1 par exemple
J'arrive à selectionner et à copier l'image mais je bloque pour lui dire de ce coller dans une cellule données : La ligne :
Selection.Copy Destination:=Sheets("Pertes").Range("J86")
Me renvoie un beug ...Mais le selection.Copy tout seul fonctionne !
Merci de votre aide !!
:)
2 réponses
-
Bonjour,
Pour connaître le nom de l'image (celle d'Excel) pas celle que tu lui a donnée.
Tu vas dans le ruban en haut à droite:
Rechercher sélectionner- Volet sélection.
Si tu en as plusieurs, pour la retrouver tu cliques sur l'oeil, cela va l'effacer.
Là tu verras le nom de ton image que tu mettras dans cette macro:
ActiveSheet.Shapes("Image 1").Copy 'adapter le nom de l'image Sheets("Feuil2").Select 'adapter Range("A1").Select 'adapter ActiveSheet.Paste
-
Merci beaucoup Le Pivert !
J'arrive effectivement à retrouvé le nom de mon image et à la mettre dans la macro, mais celle-ci plante à la ligne Range("A1").Select !
Le message d'erreur est : "Erreur définie par l'application ou par l'objet"
Je ne comprend pas pourquoi cela beug ...
Et si j'essaye de relancer la macro un seconde fois elle plante ou moment du :
ActiveSheet.Shapes("Picture 12").Copy
Une idée ?
Merci beaucoup de votre aide :)- Essaye ceci pour trouver le numéro de la Shape:
Sub shapes_count() Dim intCounter As Integer Dim intShapeCount As Integer Dim img As Object Set img = Worksheets(1).Shapes intShapeCount = img.Count If intShapeCount > 0 Then For intCounter = 1 To intShapeCount MsgBox img.Item(intCounter).Name MsgBox "Shape N° " & (intCounter) Next intCounter Else MsgBox "No Shapes" End If End Sub
ensuite quand tu as le numéro de la Shape, tu mets ce code:
ActiveSheet.Shapes(1).Copy 'adapter le numéro de la shape Sheets("Feuil2").Select 'adapter Range("A1").Select 'adapter ActiveSheet.Paste
-
-
-
-
-
Bonjour,
Tu n'as pas besoin de VBA pour cela, regarde 2 façons d'afficher une image contenue dans le fichier en fonction du contenu d'une cellule
https://www.cjoint.com/c/EDctxLATHvM