Nommer l'image insérée.

  • Initiateur de la discussion Initiateur de la discussion Hulk
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Hulk

XLDnaute Barbatruc
Hello tout le monde,

Dans ce code, l'image est insérée dans E5 (x) en fonction de la valeur de la cellule C5 -> x.Offset(0, -2)

Mais comment la nommer aussi en fonction de C5 ?
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
        
    Dim s As Shape
    Dim x As Range
    
    On Error Resume Next
    
    For Each x In [E5]
        ActiveSheet.Shapes.AddPicture Filename:=ThisWorkbook.Path _
        & "\" & x.Offset(0, -2).Value & ".jpg", _
        LinkToFile:=msoFalse, _
        SaveWithDocument:=msoTrue, _
        Left:=x.Left, _
        Top:=x.Top, _
        Width:=x.Width, _
        Height:=x.RowHeight
        
        
        
        'J'ai essayé avec ceci
        
        'ActiveSheet.Shapes.AddPicture Filename:=ThisWorkbook.Path _
        & "\" & x.Offset(0, -2).Value & ".jpg", _
        LinkToFile:=msoFalse, _
        SaveWithDocument:=msoTrue, _
        Left:=x.Left, _
        Top:=x.Top, _
        Width:=x.Width, _
        Height:=x.RowHeight, _
        Name:=x.[C5].Value
        
        'Ou ceci tout seul après le Height, mais en vain.
        'x.Name = [C5].Value
    
    Next x

End Sub
Là je dois filer, mais je viendrais ce soir jeter un oeil 😀

Merci pour votre aide !
 
Re : Nommer l'image insérée.

Bonjour,
Je ne comprends pas bien ta logique Hulk
Tu utilises une macro événementielle
Tu te référes à la cellule en C5 pour le fichier image
Le changement de nom en C5 devrait supprimer une image si elle existe déjà en E5 et en ajouter une en fonction du nouveau nom en C5
Et ta macro fonctionne à l'envers, non ?!
Et pourquoi une boucle ? A moins que tu n'empiles les images
Sinon, un brin d'explication serait bienvenue
A+
kjin
 
Re : Nommer l'image insérée.

Hello, Kjin 🙂

Oui je n'ai pas été assez clair... Euh non justement comme tel, il ne nomme pas les images insérées, et ce que je souhaiterais, c'est justement qu'à chaque fois qu'il insère une image, qu'il la nomme en fonction de sa cellule, ex. pour l'image en E5, qu'il la nomme en fonction de C5, pour celle de E6 ben C6 et celle de E7, C7.

Euh oui effectivement une boucle parce qu'il y a plusieurs images dans la feuille, je pose le code entier...
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
        
    Dim s As Shape
    Dim x As Range
    
    On Error Resume Next
    
    Efface_Image
    
    For Each x In [E5:E7]
        ActiveSheet.Shapes.AddPicture Filename:=ThisWorkbook.Path _
        & "\" & x.Offset(0, -2).Value & ".jpg", _
        LinkToFile:=msoFalse, _
        SaveWithDocument:=msoTrue, _
        Left:=x.Left, _
        Top:=x.Top, _
        Width:=x.Width, _
        Height:=x.RowHeight
    Next x

End Sub

Sub Efface_Image()

    Dim s As Shape

    For Each s In ActiveSheet.Shapes
        If s.Type = msoPicture Then s.Delete
    Next s

End Sub
Et dans l'événement Change pour qu'il efface l'image au fur et à mesure.

Pour quoi faire ? Pour ensuite faire : une macro quand click sur l'image "toto", une pour l'image "titi" et une pour l'image "tata".
(Disons qu'en C5 -> "toto", en C6 -> "titi" et en C7 -> "tata").

Bon, pas sûr que tu comprennes mieux 😀...
 
Re : Nommer l'image insérée.

salut ...

ainsi peut-être :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
        
    Dim s As Shape
    Dim x As Range
    [B][COLOR="red"]Dim n As Byte[/COLOR][/B]
    On Error Resume Next
    
    Efface_Image
    
    For Each x In [E5:E7]
       [B][COLOR="Red"] n = n + 1[/COLOR][/B]
        ActiveSheet.Shapes.AddPicture[B][COLOR="Red"]([/COLOR][/B]Filename:=ThisWorkbook.Path _
        & "\" & x.Offset(0, -2).Value & ".jpg", _
        LinkToFile:=msoFalse, _
        SaveWithDocument:=msoTrue, _
        Left:=x.Left, _
        Top:=x.Top, _
        Width:=x.Width, _
        Height:=x.RowHeight[B][COLOR="red"]).Select
        Selection.Name = "Photo" & n[/COLOR][/B]
        
    Next x

End Sub
 
Re : Nommer l'image insérée.

Re 🙂

Peut-être que le fichier t'aidera à (me) comprendre (j'aurais du commencer par là aussi), si tu veux, prends le ici.


EDIT : R'marque que si tu as une autre idée pour faire ce que je souhaite, exemple, si j'ai 20 bestioles, éviter d'écrire 20 macros 😀
 
Dernière édition:
Re : Nommer l'image insérée.

Re,

Exact Fo_rum ! T'es un chef (toi aussi Kjin 😉)

Juste modifié comme ça
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
        
    Dim s As Shape
    Dim x As Range
    
    On Error Resume Next
    
    Application.ScreenUpdating = False
    
    For Each s In ActiveSheet.Shapes
        If s.Type = msoPicture Then s.Delete
    Next s
    
    For Each x In [E5:E7]
        ActiveSheet.Shapes.AddPicture(Filename:=ThisWorkbook.Path _
        & "\" & x.Offset(0, -2).Value & ".jpg", _
        LinkToFile:=msoFalse, _
        SaveWithDocument:=msoTrue, _
        Left:=x.Left, _
        Top:=x.Top, _
        Width:=x.Width, _
        Height:=x.RowHeight).Select
        Selection.Name = x.Offset(0, -2).Value
        ActiveCell.Select
    Next x

End Sub
Merci infiniment les gars !!
 
Dernière édition:
Re : Nommer l'image insérée.

Re,

Hulk à dit:
R'marque que si tu as une autre idée pour faire ce que je souhaite, exemple, si j'ai 20 bestioles, éviter d'écrire 20 macros
Ben ouais ça serait pas mal, mon idée ne marche pas...
Si non tant pis 😡 😀

Je reviendrais demain ou tard dans la soirée, pour le cas ou...

Merci encore !
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
1
Affichages
520
Réponses
0
Affichages
459
Réponses
11
Affichages
839
Réponses
2
Affichages
1 K
Retour