Copier une image dans la cellule active

Résolu
ESCOUGER Messages postés 31 Statut Membre -  
eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   -
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

  1. UsulArrakis Messages postés 7683 Statut Contributeur 3 196
     
    quel logiciel et quelle version ?
    si c'est pour excel : on ne peut pas mettre d'image dans une cellule
    0
  2. ESCOUGER Messages postés 31 Statut Membre
     
    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.
    0
    1. ESCOUGER Messages postés 31 Statut Membre
       
      Je peux vous transmettre mon tableau si çà peut aider, mais ne sait pas comment faire?
      0
  3. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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
    0
    1. ESCOUGER Messages postés 31 Statut Membre
       
      Merci beaucoup Erilic, çà marche exactement comme je le voulais
      Problème résolu 100%
      0
    2. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      ok :-)
      n'oublie pas de mettre en résolu
      eric
      0
    3. ESCOUGER Messages postés 31 Statut Membre
       
      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
      0
    4. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      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
      0
    5. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      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.
      0