Accéder aux images depuis une cellule dans excel 2010
Résolu
Abir MARINA
-
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.
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:
- Accéder aux images depuis une cellule dans excel 2010
- Excel cellule couleur si condition texte - Guide
- Liste déroulante excel - Guide
- Aller à la ligne dans une cellule excel - Guide
- Proteger cellule excel - Guide
- Déplacer une colonne excel - Guide
6 réponses
Bonjour,
il accède au menu windows pour pouvoir y ajouter une photo
C'est quoi ce menu que tu veux ?
il accède au menu windows pour pouvoir y ajouter une photo
C'est quoi ce menu que tu veux ?
Bonjour,
Voici un exemple:
http://www.cjoint.com/c/EHriYVzqJBQ
Voici un exemple:
http://www.cjoint.com/c/EHriYVzqJBQ
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
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
Voir ceci:
https://forum.excel-pratique.com/viewtopic.php?forum_uri=cours-astuces&t=1314&start=
Mettre ceci dans la feuille1
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
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
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Ne jamais rien mettre au dessus de Option Explicit!
voici le code:
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
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
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
1_
.Left = Range(position).Left + 100 distance du bord gauche de la cellule
2_
chemin = Application.GetOpenFilename
3_
je n'ai pas compris
4_
.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
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
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
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!