Information pour inserer une image

Bonsoir

Quelqu'un pourrait il m'expliquer comment insérer dans un tableau dans la cellule à coté de la cellule qui contient le nom ,une photo.

Les cellules dans mon tableau font 60 de haut et 14 de large pour insérer la photo . (Tableau protégé)

Les lignes de ce tableau vont bouger, puisqu'il y aura assez fréquemment un tri.

Donc la photo devra suivre avec le nom

Si quelqu'un peut m'envoyer un exemple avec explications je suis preneur.

J'ai tenté plusieurs chose sans succès

Merci pour votre implication

Bonsoir,

petite procédure pour mettre une image dans une cellule centrée sur cette dernière sans toucher "aux bords" ici

Si l'image est plus petite que la cellule alors elle suivra les tris.

@ bientôt

LouReeD

Bonsoir

Le problème j'ai une dizaine de photo a mettre

Crdlt

Si vous avez la liste des noms sur une feuille par exemple alors une boucle pourra faire l'affaire, ou bien alors sur la ligne du tableau où il faut mettre les images vous avez peut-être soit le nom soit une donnée qui permet d'en déduire le nom.

Le code est utilisé sur mon application "Machine à sous" et cela gère trois rouleaux de 5 images et elles n'arrêtent pas de changer...

@ bientôt

LouReeD

Bonjour à tous

Je joins un exemple du fichier avec explications du résultat souhaité

Je précise que j'aurais plusieurs logos à insérer

Merci pour votre aide

Bonjour,

le principe énoncé dans mes messages ne fonctionne pas du fait que le tri que vous faites est devancé par un code VBA qui modifie la structure de la plage.
De ce fait, la valeur "dark legion" change de place mais le logo reste où il est car ce code ne prend pas en compte cette donnée. Ensuite lors du tri, le logo suit "la nouvelle valeur" à laquelle il a été affecté lors du déroulé du code précédent.

@ bientôt

LouReeD

Bonjour LouReeD

Merci pour ta réponse

peux tu me dire ce que je dois modifier pour que cela fonctionne bien

Il faudrait qu'à mon niveau je comprenne ce que fait la macro avant le tri...

Mon idée serait qu'elle remplisse le tableau, qui serait structuré, puis on utilise la fonction tri de ce dernier pour mettre les données dans l'ordre voulu.
A ce moment, les logo suivront les lignes sur lesquelles ils se trouvent.

@ bientôt

LouReeD

Je te remercie pour ton aide

Si tu me trouvais la solution ,je ne saurais comment te remercier

Oui, mais la procédure qui tourne avant le tri, elle a quel but ? Quel est son fonctionnement ?

@ bientôt

LouReeD

Bonsoir LouReeD,

A titre indicatif je te répond sur le pc de mon épouse ,le mien a rendu l’âme ,DD HS

Pour info la procédure qui tourne avant le tri a pour but de récupérer les infos du Classement journalier

Je ne peux pas te transmettre la macro sur cette ordi pas Office

Je te recontacte dés que j'ai changé de pc

A bientot

Bonsoir,

mon idée vu que je ne comprend pas tout :
je laisse votre code de récupération de données sur les différentes journées, je laisse votre code de tri, mais ensuite sous contrôle des erreurs, je lance une boucle sur les shapes de la feuille, si son nom commence par Logo_ alors je le supprime. Ensuite je lance une deuxième boucle allant de la ligne 3 à 83, je récupère le nom en colonne G afin de télécharger l'image correspondant que je "colle" dans la cellule de gauche en colonne F en la réduisant afin qu'elle soit plus petite que la cellule et en la centrant, tout ceci en modifiant son aspect. pour ne pas avoir cette modification de largeur hauteur il faut mettre en commentaire la ligne de code :
.ShapeRange.LockAspectRatio = msoFalse
alors il ne faudra mettre que le Height ou le Width dans les lignes suivantes, sinon c'est la dernière dimension qui sera prise en compte pour afficher l'image.

Le code :

Private Sub CommandButton1_Click()
    Dim Sh As Shape
    Worksheets("Classement Général").Unprotect "joco"
    copieclasstgénéral
    Call trigen
    ' on gère les éventuelles erreurs
    On Error Resume Next
        ' on supprime les logos
        For Each Sh In Shapes
            If Left(Sh.Name, 5) = "Logo_" Then Sh.Delete
        Next Sh
        ' on les recré
        For i = 1 To 83
            Image Cells(i, 6), ThisWorkbook.Path & "\" & Cells(i, 6).Offset(, 1).Value & ".png", "Logo_" & Cells(i, 6).Offset(, 1).Value
        Next i
    On Error GoTo 0
    Worksheets("Classement Général").Range("A1").Select
    Worksheets("Classement Général").Protect "joco"
End Sub
Sub Image(ByVal RgImage As Range, ByVal NomImage As String, N_Img As String)
    Dim Rg As Range, Image As Picture
    Set Rg = ActiveSheet.Range(RgImage.Address)
    With Rg
        Set Image = ActiveSheet.Pictures.Insert(NomImage)
    End With
    With Image
        .Name = N_Img
        .ShapeRange.LockAspectRatio = msoFalse
        .Width = Rg.Width - 6
        .Height = Rg.Height - 6
        .Left = Rg.Left + 3
        .Top = Rg.Top + 3
    End With
    Set Rg = Nothing
End Sub

@ bientôt

LouReeD

Bonsoir

Je viens de refaire un autre essai cela ne fonctionne pas

Crdlt

Bonsoir.
Chez moi ça fonctionne.

Les images des logos doivent être dans le même dossier que le fichier Excel et être en format png, ou bien il faut changer le chemin d'accès ou l'extension dans le code VBA.

Maintenant sans plus d'information sur "la panne" pas évident de comprendre le pourquoi.

@ bientôt

LouReeD

Bonjour

J'ai créé un dossier nommé joco , à l'intérieur j'ai mis le fichier excel V14 .
J'ai renommé toutes les photos en majuscule à l'identique de la colonne G, au format jpg , j'ai modifié dans le code au lieu de png
ensuite j'ai mis toutes les photos dans le dossier joco
J'ai insérer les photos dans le tableau en face des noms correspondants et j'ai fait un tri ,je te joins le résultat en photo jointe tu verras que rien ne correspond

Je viens de m'apercevoir à18heures 15 qu'en faisant 6 fois le tri d'affilé les logos se remettent à leur place?

lrd

Crdlt

Bonjour,

personne n'a de solution à me proposer?

Crdlt

Merci à tous pour votre aide

Je laisse tomber la synchronisation des logos lors du tri

Crdlt

Bonjour,

j'ai trouvé !
Tout fonctionne bien à condition de ne pas mettre les protections !

La procédure du bouton retire bien la protection mais la procédure incluse dedans "copieclasstgénéral" qui va chercher les nouvelles valeurs remet cette protection !
Retirez les deux lignes de protect de cette procédure et tout rentrera dans l'ordre :

Sub copieclasstgénéral()
'Worksheets("Classement Général").Unprotect "joco"
     Set Dict = CreateObject("scripting.dictionary") 'créer votre dictionaire
     Dict.comparemode = vbTextCompare
     SansDoublons Sheets("Journée1").Range("E14:E23") 'traiter chaque plage
     SansDoublons Sheets("Journée2").Range("E14:E23")
     SansDoublons Sheets("Journée3").Range("E14:E23")
     SansDoublons Sheets("Journée4").Range("E14:E23")
     SansDoublons Sheets("Journée5").Range("E14:E23")
     SansDoublons Sheets("Journée6").Range("E14:E23")
     SansDoublons Sheets("Journée7").Range("E14:E23")
     SansDoublons Sheets("Journée8").Range("E14:E23")
     'MsgBox "et les autres plages, la même chose"
     With Sheets("Classement Général").Range("G3:G81") 'destination
          .ClearContents 'RAZ
          If Dict.Count Then .Resize(Dict.Count) = Application.Transpose(Dict.keys) 'coller contenu du dictionaire (keys)
     End With
     Application.CutCopyMode = False
'Worksheets("Classement Général").Protect "joco"
End Sub

Ici je les aie mis en commentaire...

Une dernière chose, dans la liste d'inscription il y a un espace à la fin de REPTILES ! attention ! il faut de la rigueur dans la saisie des données.
Soit vous ajoutez un espace au nom du logo, soit vous enlevez l'espace sur la feuille inscription.

@ bientôt

LouReeD

bonjour

merci pour ton aide

j'ai mis en place et j'ai un beug sur la ligne .ClearContents

Rechercher des sujets similaires à "information inserer image"