Accéder aux images depuis une cellule dans excel 2010

Résolu
Bonjour,

Je suis en train de faire un tableau pour un professionnel. Celui ci doit être "esthétique" et surtout très simple!
Je souhaite que dans la cellule B5, par exemple, lorsqu'il clique, il accède au menu windows pour pouvoir y ajouter une photo. Celle ci aura une taille fixe et sera attachée à la cellule.
Je ne connais pas le VBA :(

J'ai déjà fais une recherche sur le forum mais rien ne correspond exactement.

Je peux vous envoyer mon fichier. Ne vous moquez pas de mes méthodes qui ne sont certainement pas les plus efficaces!

Je vous remercie par avance pour votre aide.

6 réponses

  1. Contributeur
    Bonjour,

    il accède au menu windows pour pouvoir y ajouter une photo

    C'est quoi ce menu que tu veux ?
    0
    1. Bonjour,
      Plus précisément, je voudrais soit un "bouton" qui permet d'accéder à parcourir, soit que les photos se rangent toutes seules comme des grandes selon leur nom.
      par exemple que "Dupont Martin1" "Dupont Martin2"... se rangent dans La colonne Dupont Martin.

      Merci!
      0
  2. Contributeur
    Bonjour,

    Voici un exemple:

    http://www.cjoint.com/c/EHriYVzqJBQ
    0
    1. Bonjour,
      Merci beaucoup pour cet exemple, je le consulte trés vite et vous donne des nouvelles.
      Abir
      0
    2. C'est génial!!! Merci beaucoup, c'est exactement ce que je souhaite.
      Dois-je rajouter ce code à "feuille1" ou le copier coller dans un nouveau module?
      Je ne comprends pas dans le code ce qui correspondrait à la cellule.
      Par exemple si je voudrais accéder à cela pour les cellules B11 et B12, où dois-je le mentionner dans le code?
      Abir
      0
  3. Contributeur
    voici un autre exemple:

    http://www.cjoint.com/c/EHrjFMIvk4Q
    0
    1. Contributeur
      Voir ceci:

      https://forum.excel-pratique.com/viewtopic.php?forum_uri=cours-astuces&t=1314&start=

      Mettre ceci dans la feuille1

      Option Explicit
      Dim chemin, Var As Variant
      Dim position, largeur, hauteur, ratio, Ligne, Colonne
      Dim img As Object
      Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
      If Not Application.Intersect(Target, Range("B11:B12")) Is Nothing Then
      position = Target.Address
      Ligne = Target.Row
      Colonne = Target.Column
      position = Replace(position, "$", "")
      ImportImages
      End If
      End Sub
      Sub ImportImages()
         Dim oPict As New stdole.StdPicture
        chemin = Application.GetOpenFilename
        If chemin = False Then Exit Sub 'annulation
        hauteur = 100 'a adapter la hauteur de l'image
       Set oPict = stdole.LoadPicture(chemin)
       ratio = oPict.Width / oPict.Height
      If oPict.Height < oPict.Width Then 'mode paysage
      largeur = hauteur * ratio
      Else
      largeur = hauteur * ratio
      End If
           Columns(Colonne).ColumnWidth = largeur / 5.5
           Rows(Ligne & ":" & Ligne).RowHeight = hauteur
        ActiveSheet.Pictures.Insert(chemin).Select
        Var = Selection.Name
        Selection.ShapeRange.LockAspectRatio = msoFalse
        With ActiveSheet.Shapes(Var)
          .Top = Range(position).Top
          .Left = Range(position).Left
          .Height = hauteur
          .Width = largeur
           End With
           End Sub
      Sub efface()
          For Each img In Worksheets(1).Shapes 'ou Worksheets("nom").Shapes
           img.Delete
          Next
      End Sub
      Sub BoucleHauteur()
       Dim Ligne As Range
       For Each Ligne In ActiveSheet.UsedRange.Rows
       Ligne.RowHeight = 15
       Next
       End Sub
       Sub BoucleLargeur()
       Dim Colonne As Range
       For Each Colonne In Range("A1:Z2000").Columns
       Colonne.ColumnWidth = 10.71
       Next
       End Sub
      Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
      efface
      BoucleHauteur
      BoucleLargeur
      End Sub
      

      0
      1. Merci! J'y suis presque! J'ai une erreur d'execution 1004 : erreur définie pour l'application ou l'objet
        le débogage me surligne cette étape : Columns(Colonne).ColumnWidth = largeur / 5.5

        J'ai d'autres choses dans ma colonne, c'est surement ce qui gène le redimensionnement.
        Voici mon fichier : http://www.cjoint.com/c/EHrnZNZhwBd

        Je veux mettre les photos B12 et B13
        0
    2. Contributeur
      Ne jamais rien mettre au dessus de Option Explicit!

      voici le code:

      Option Explicit
      Dim chemin, Var As Variant
      Dim position, largeur, hauteur, ratio, Ligne, Colonne
      Dim img As Object
      Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
      If Not Application.Intersect(Target, Range("B12:B13")) Is Nothing Then
      position = Target.Address
      Ligne = Target.Row
      Colonne = Target.Column
      position = Replace(position, "$", "")
      ImportImages
      End If
      End Sub
      Sub ImportImages()
         Dim oPict As New stdole.StdPicture
        chemin = Application.GetOpenFilename
        If chemin = False Then Exit Sub 'annulation
        hauteur = 40 'a adapter la hauteur de l'image à la cellule
       Set oPict = stdole.LoadPicture(chemin)
       ratio = oPict.Width / oPict.Height
      If oPict.Height < oPict.Width Then 'mode paysage
      largeur = hauteur * ratio
      Else
      largeur = hauteur * ratio
      End If
          ' Columns(Colonne).ColumnWidth = largeur / 5.5
           'Rows(Ligne & ":" & Ligne).RowHeight = hauteur
        ActiveSheet.Pictures.Insert(chemin).Select
        Var = Selection.Name
        Selection.ShapeRange.LockAspectRatio = msoFalse
        With ActiveSheet.Shapes(Var)
          .Top = Range(position).Top
          .Left = Range(position).Left
          .Height = hauteur
          .Width = largeur
           End With
           End Sub
      Sub efface()
          For Each img In Worksheets(1).Shapes 'ou Worksheets("nom").Shapes
           img.Delete
          Next
      End Sub
      Sub BoucleHauteur()
       Dim Ligne As Range
       For Each Ligne In ActiveSheet.UsedRange.Rows
       Ligne.RowHeight = 15
       Next
       End Sub
       Sub BoucleLargeur()
       Dim Colonne As Range
       For Each Colonne In Range("A1:Z2000").Columns
       Colonne.ColumnWidth = 10.71
       Next
       End Sub
      Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
      efface
      'BoucleHauteur
      'BoucleLargeur
      End Sub
      Private Sub DTPicker1_CallbackKeyDown(ByVal KeyCode As Integer, ByVal Shift As Integer, ByVal CallbackField As String, CallbackDate As Date)
      
      End Sub
      
      Private Sub DTPicker3_CallbackKeyDown(ByVal KeyCode As Integer, ByVal Shift As Integer, ByVal CallbackField As String, CallbackDate As Date)
      
      End Sub
      
      Private Sub DTPicker4_CallbackKeyDown(ByVal KeyCode As Integer, ByVal Shift As Integer, ByVal CallbackField As String, CallbackDate As Date)
      
      End Sub
      
      Private Sub DTPicker6_CallbackKeyDown(ByVal KeyCode As Integer, ByVal Shift As Integer, ByVal CallbackField As String, CallbackDate As Date)
      
      End Sub
      
      

      0
      1. Tout fonctionne à merveille!!!!

        Si tu as le temps de répondre à ces quelques dernières questions :

        - peut-on changer pur avoir un habillage de la photo centrer horizontale et verticale dans la cellule?

        - J'ai essayé de comprendre un peu le VBA associé, pas facile! Quelle ligne permet de diriger sur "parcourir"? Aurait-on pu changer de chemin?

        - est-il possible d'avoir un mot écrit sur une cellule et lorsqu'on clic dessus on rentre ce qu'on veut? Par exemple, sur une cellule il est écrit Age et dans cette cellule je dois rentrer un nombre.

        - enfin, est-il possible dans une cellule de garder un mot fixe et de compléter la cellule. Je veux simplement écrire "ans" et que la personne rentre l'age. Je connais la solution en allant sur 2 cellules...

        Si tu as peu de temps, ne t'inquiète pas, tu m'as déjà amplement fait progresser dans ma tâche et je t'en remercie infiniment.

        Abir
        0
    3. Contributeur
      1_

      .Left = Range(position).Left + 100 distance du bord gauche de la cellule

      2_

      chemin = Application.GetOpenFilename

      3_

      je n'ai pas compris

      4_

      Private Sub Worksheet_SelectionChange(ByVal Target As Range)
      If Not Application.Intersect(Target, Range("B2")) Is Nothing Then
      Target.Value = Target.Value & " ans"
      End If
      End Sub

      0
      1. Bonjour,

        Je te remercie encore pour tes réponses efficaces.
        Pour la question 3. Je voulais te demander s'il était possible qu'un mot n'apparaisse dans une cellule seulement jusqu'à ce que tu la remplisses. pas facile à expliquer!

        Je classe le sujet en résolu.
        Merci de toutes les aides apportées.

        Abir
        0