Accéder aux images depuis une cellule dans excel 2010

Résolu
Abir MARINA -  
 Abir MARINA -
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. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    Bonjour,

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

    C'est quoi ce menu que tu veux ?
    0
    1. Abir
       
      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. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    Bonjour,

    Voici un exemple:

    http://www.cjoint.com/c/EHriYVzqJBQ
    0
    1. Abir
       
      Bonjour,
      Merci beaucoup pour cet exemple, je le consulte trés vite et vous donne des nouvelles.
      Abir
      0
    2. Abir MARINA
       
      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. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    voici un autre exemple:

    http://www.cjoint.com/c/EHrjFMIvk4Q
    0
  4. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    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. Abir MARINA
       
      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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    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. Abir MARINA
       
      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
  7. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    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. Abir MARINA
       
      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