Copier une image dans la cellule active

Résolu
Bonjour,
Je souhaiterais ecrire une macro déclenchée par un clic sur une image, qui copierait cette même image dans la cellule active de ma feuille.
Est-ce possible et si oui comment faire?
Merci d'avance de vos conseils

3 réponses

  • Votes
  • Date
  • Date décroissante
  1. Contributeur
    quel logiciel et quelle version ?
    si c'est pour excel : on ne peut pas mettre d'image dans une cellule
    1. C'est en effet pour excel, mais il s'agit plutôt dune forme que d'une image.

      J'ai inseré une forme dans ma feuille, et j'ai assigné une macro à cette forme. Ce que je souhaite faire est de recopier cette forme à l'endroit de la cellule active.
      Exemple: Je selectionne la cellule A1, puis je clique sur ma forme qui se situe ailleurs. Cela déclenche une macro à qui je demande de copier cette forme à l'endroit de la cellule active soit A1. (Je précise qu'il s'agit de toutes petites formes (sorte d'icônes) qui sont des repaires de balisages de sentiers de randonnée.
      1. Je peux vous transmettre mon tableau si çà peut aider, mais ne sait pas comment faire?
    2. Contributeur
      Bonjour,

      Un exemple :
      Private Sub Image1_Click()
          ActiveSheet.Shapes("Image1").Copy
          ActiveSheet.Paste
          Selection.ShapeRange.Left = ActiveCell.Left + 2
          Selection.ShapeRange.Top = ActiveCell.Top + 2
      End Sub


      pour déposer un fichier : cijoint.fr et coller ici le lien fourni.

      eric
      1. Merci beaucoup Erilic, çà marche exactement comme je le voulais
        Problème résolu 100%
      2. Contributeur
        ok :-)
        n'oublie pas de mettre en résolu
        eric
      3. Encore une précision pour améliorer mon code:
        Comment récupérer dans une variable le nom de la forme sur laquelle j'ai cliqué.
        exemple: Signe_balisage= ActiveSheet.Shapes.Name (sauf que name n'est pas le bon code)
        Merci
      4. Contributeur
        Heuuu, bonne question...
        Je ne sais pas répondre à ta question sinon que l'évènement click porte son nom.

        Par contre, les objets créés il vaut mieux les nommer lors de la création, comme ça tu connais leur nom.
        Exemple court :
        Private Sub Image1_Click()
            ActiveSheet.Shapes("Image1").Copy
            ActiveSheet.Paste
            Selection.Name = "forme12"
            Selection.ShapeRange.Left = ActiveCell.Left + 2
            Selection.ShapeRange.Top = ActiveCell.Top + 2
        End Sub
        

        Bien sûr il faut un nouveau nom pour chaque forme.

        eric
      5. Modérateur
        Salut Eriiic,
        ESCOUGER,

        Pour récupérer le nom d'un Shape (j'ai bien dit Shape, ce code ne fonctionne pas avec les objets issus de la boîte à outils contrôle) on peux utiliser Application.Caller.
        Il suffit d'affecter cette même macro aux divers shapes de la feuille :
        Sub test()
        MsgBox Application.Caller
        End Sub

        Ce qui, appliqué à la macro d'Eriiic ci-dessus nous donne :
        Sub CopierShapeDansCellActive()
        Dim NomShape As String
        
        NomShape = Application.Caller
        ActiveSheet.Shapes(NomShape).Copy
        ActiveSheet.Paste
        Selection.ShapeRange.Left = ActiveCell.Left + 2
        Selection.ShapeRange.Top = ActiveCell.Top + 2
        End Sub

        Ne reste qu'à affecter (manuellement) cette macro à toutes les formes (de type Shape!) de la feuille.