Accéder aux images depuis une cellule dans excel 2010

Résolu/Fermé
Abir MARINA - 17 août 2015 à 00:34
 Abir MARINA - 20 août 2015 à 16:51
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.


A voir également:

6 réponses

gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 714
17 août 2015 à 09:19
Bonjour,

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

C'est quoi ce menu que tu veux ?
0
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
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729
17 août 2015 à 10:52
Bonjour,

Voici un exemple:

http://www.cjoint.com/c/EHriYVzqJBQ
0
Bonjour,
Merci beaucoup pour cet exemple, je le consulte trés vite et vous donne des nouvelles.
Abir
0
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
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729
17 août 2015 à 11:32
voici un autre exemple:

http://www.cjoint.com/c/EHrjFMIvk4Q
0
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729
17 août 2015 à 14:54
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
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729
17 août 2015 à 16:19
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
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
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729
18 août 2015 à 08:16
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
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