XL 2016 principalement lien d'une photo avec son nom de fichier

ivgu19

XLDnaute Junior
Bonjour le forum

Sur un tableau botanique pae ex, pouvez-vous m’indiquer d’une part comment retrouver le menu contextuel liée à une photo (voir pj contextuel que j’obtiens) je n’ai pas « taille et propriété » ou « déplacer et dimensionner » comme suggéré sur internet.

D’autre part, si c’est réalisable, j’aimerai savoir comment faire pour avoir sur une cellule consécutive le nom de fichier « iris.jpg » de la photo « iris" pour chaque insertion.

En vous remerciant

Ivgu19
 

Pièces jointes

  • menu contextuel.jpg
    menu contextuel.jpg
    170.7 KB · Affichages: 33

fanch55

XLDnaute Barbatruc
Re,
Plusieurs images pour la même cellule,
mais cela ne nuit pas au menu contextuel qui reste normal
1661412297017.png
Le "mauvais menu" affiché est consécutif à un maintien prolongé du "clic droit"
ivgu.gif
 
Dernière édition:

ivgu19

XLDnaute Junior
Bonjour Fanch55
J'ai amélioré mon smash pour le menu contextuel et ça marche, merci ☺️.

ensuite : Insertion d’une image et à coté sa référence

Effectivement sur mon précédent message il y avait plusieurs images superposées, c’est une erreur.

UN code qui redimensionne l’image à 20x20, renomme le fichier, l’insert en j3 puis sur la cellule de droite renseigne la référence photo serait un vrai +

La colonne J du tableau est dimensionnée à 10, les hauteurs de ligne à 57 pour insérer l’image 20x20

Sur le site il y a des questions similaires mais je n’arrive pas à associer les bouts de code😢

Je joins le dossier botanique2 qui comprend img_5509.jpg et fichier jardin5.xlsm
 

Pièces jointes

  • Jardin5.xlsm
    191.6 KB · Affichages: 3
  • IMG_5509-MiNi.JPG
    IMG_5509-MiNi.JPG
    154.7 KB · Affichages: 17

fanch55

XLDnaute Barbatruc
Bonsoir,
Pour vous aiguiller, sub à essayer en selectionnant une cellule vide en colonne J :
VB:
Sub Insert_Me()
If ActiveCell.Column = Columns("J").Column Then
    ActiveCell.RowHeight = 57: ActiveCell.ColumnWidth = 10
    With Application.FileDialog(msoFileDialogFilePicker)
        .InitialFileName = Getpath(&H27) & "\*.jpg"
        .AllowMultiSelect = False
        .Filters.Clear
        .Filters.Add "Fichiers Photos", "*.jpg;*.jpeg"
        .Title = "Sélection d'une photo"
        If .Show Then
            Target = .SelectedItems(1)
            With ActiveSheet.Pictures.Insert(Target)
                .Name = Target
                If .Height > ActiveCell.Height Then .Height = ActiveCell.Height
                If .Width > ActiveCell.Width Then .Width = ActiveCell.Width
           End With
           T = InputBox("Entrez le nom explicite de la photo", "Description Photo", Target)
           ActiveCell.Offset(, 1) = IIf(T = "", Target, T)
        End If
    End With
End If

End Sub
Function Getpath(Cible As Variant) As String
    Dim ObjShell As Object
    On Error Resume Next
    Set ObjShell = CreateObject("Shell.Application").Namespace(Cible).self
        If ObjShell Is Nothing Then Getpath = vbNullString Else Getpath = ObjShell.Path
    Set ObjShell = Nothing
End Function
 

ivgu19

XLDnaute Junior
Bonsoir,
Le vba ce n’est pas trop mon truc, l’exécution s’arrête sur target avec variable non définie et je ne sais quoi faire. Je joins à nouveau le fichier xlsm à cas où la macro serait incomplète.
Voilà ce que je dois faire manuellement pour une centaine de lignes,
Classeur xls ouvert :
Définir largeur Col J =10 et col K = 25
Sélection d’1 cellule de la col J > hauteur 57 afin d’obtenir un carré de 20x20mm
Ouvrir le dossier photo « botanique2 > clicD sur lMG_5509 > modifier > Paint s’ouvre > accueil > redimensionner > décoche proportions > coche Pixel >saisir 142 en h et V puis OK
Fichier > enregistrer sous « botanique2 » modifier nom IMG_5509.jpg en IMG_5509-redim.jpg > enregistrer
Retour au fichier .xls > insertion > images > IMG_5509-redim.jpg > insérer.
L’image s’insère dans le carré.
Sur la cellule consécutive, saisir le texte IMG_5509-redim.jpg et aligner au centre et centrer.
Enregistrer-sous ‘botanique2’
Je suis navré de vous avoir fait perdre votre temps et désolé que cette tâche ne puisse s’automatiser mais si vous pouvez me corriger, j’accepte avec grand plaisir.
Ivgu19
 

Pièces jointes

  • Jardin5.xlsm
    202.2 KB · Affichages: 1

fanch55

XLDnaute Barbatruc
Bonsoir,
Le vba ce n’est pas trop mon truc, l’exécution s’arrête sur target avec variable non définie et je ne sais quoi faire
VB:
Sub Insert_Me()
Dim Target,T
If ActiveCell.Column = Columns("J").Column Then
    ActiveCell.RowHeight = 57: ActiveCell.ColumnWidth = 10
    With Application.FileDialog(msoFileDialogFilePicker)
        .InitialFileName = Getpath(&H27) & "\*.jpg"
        .AllowMultiSelect = False
        .Filters.Clear
        .Filters.Add "Fichiers Photos", "*.jpg;*.jpeg"
        .Title = "Sélection d'une photo"
        If .Show Then
            Target = .SelectedItems(1)
            With ActiveSheet.Pictures.Insert(Target)
                .Name = Target
                If .Height > ActiveCell.Height Then .Height = ActiveCell.Height
                If .Width > ActiveCell.Width Then .Width = ActiveCell.Width
           End With
           T = InputBox("Entrez le nom explicite de la photo", "Description Photo", Target)
           ActiveCell.Offset(, 1) = IIf(T = "", Target, T)
        End If
    End With
End If

End Sub
Function Getpath(Cible As Variant) As String
    Dim ObjShell As Object
    On Error Resume Next
    Set ObjShell = CreateObject("Shell.Application").Namespace(Cible).self
        If ObjShell Is Nothing Then Getpath = vbNullString Else Getpath = ObjShell.Path
    Set ObjShell = Nothing
End Function
 

ivgu19

XLDnaute Junior
Bonjour,

L’image s’insère au bon endroit mais n’est pas traitée et la cellule reste vide.

La description photo marche bien laissant une totale liberté de choix de dossier

Pouvez-vous inclure dans la condition que la cellule choisie n’appartient pas à J si c’est le cas.
La solution semble toute proche
 

ivgu19

XLDnaute Junior
Bonjour,
L’exécution en pas à pas, permet de visualiser que l'image d'origine s'insère bien au bon endroit (voir pj exécution pàp), mais qu'à la ligne de code suivante elle s'insère en P.

Exécuter la macro, après avoir répondu à la question "Description photo" l'image s'insère en col P. (hors écran ce qui m'a fait dire qu'elle n'était pas insérée). Je note qu’elle n'est pas carrée (voir pj exécution macro).

Pour résumé : l’image n’est pas insérée en col J et n’est pas aux dim de J3
Bon WE
 

Pièces jointes

  • exécution pàp-MiNi.jpg
    exécution pàp-MiNi.jpg
    35 KB · Affichages: 18
  • exécution_macro-MiNi.jpg
    exécution_macro-MiNi.jpg
    34 KB · Affichages: 17

ivgu19

XLDnaute Junior
Bonjour,
C'est une belle animation pour les nuls Et je suis plus que nul.
cas picto "erreur 404": La macro insère une image en J si le fichier est < 2x2 cm
cas image issue d'1 APN : La macro n'insère pas l'image en J ? (fichier autour des 5 Mo)
Qu'en pensez vous?
 

Pièces jointes

  • Jardin.xlsm
    247.4 KB · Affichages: 3
Dernière édition: