How to Insert Multiple Images and Resize Selected Cells

bonjour

je voudrais à partir du code d'une liste d'articles insérer dans une cellule son image correspondante a partir d'un fichier contenant ces images tout en sachant que le nom de l'image est le code de l'article et qu'elle soit redimensionnée automatiquement. 

pour cela je crée un tableau avec comme 1ere colonne le code 2éme colonne la désignation et en 3éme la photo. 

merci pour votre aide

9 réponses

  1. Contributeur

    onjour,

    utilises-tu Excel?

    0
    1. bonjour

      oui bien sur j'utilise excel

      0
      1. Ben non pas bien sûr

        Il y a une dizaine de vb différents. Comme tu ne précises pas la question de yg_be est essentielle

        0
    2. merci de me le préciser.

      comme je ne travaille que sur excel ça m'est complétement échappé.

      merci pour votre soutien et à votre entière disposition pour amples informations.

      0
      1. Contributeur

        as-tu tenté de commencer la macro avec l'enregistreur de macro, afin d'insérer et de redimensionner une image?

        0
        1. bjr yg_be

          franchement non. j'ai seulement trouvé une macro pour redimensionner les images que j'insére manuellement  et c'est là le problème vu le nombre d'articles élevés.

          voici d'ailleur la macro qui marche pour redimensionner les images :

          Public Sub FitPic()
          On Error GoTo NOT_SHAPE
          Dim PicWtoHRatio As Single
          Dim CellWtoHRatio As Single
          With Selection
          PicWtoHRatio = .Width / .Height
          End With
          With Selection.TopLeftCell
          CellWtoHRatio = .Width / .RowHeight
          End With
          Select Case PicWtoHRatio / CellWtoHRatio
          Case Is > 1
          With Selection
          .Width = .TopLeftCell.Width
          .Height = .Width / PicWtoHRatio
          End With
          Case Else
          With Selection
          .Height = .TopLeftCell.RowHeight
          .Width = .Height * PicWtoHRatio
          End With
          End Select
          With Selection
          .Top = .TopLeftCell.Top
          .Left = .TopLeftCell.Left
          End With
          Exit Sub
          NOT_SHAPE:
          MsgBox "Select a picture before running this macro."
          End Sub

          0
          1. Contributeur

            Connais-tu l'enregistreur de macros?

            0
          2. Contributeur

            Sais-tu comment automatiser pour un seul article?

            0
        2. enregistreur de macros tu parle de VB ?

          0
          1. Contributeur

            Dans Excel, il existe un enregistreur de macro, qui crée du code VBA à partir d'actions faites par l'utilisateur.

            0
          2. @yg_be

            j'ai fait de la programmation quand j'étais jeune et j'ai eu mon diplome dans ce domaine mais le boulot m'a amené à faire autre chose. néanmoins je garde tjrs la méthode mais j'avoue que les langages ont beaucoups changé.pour le VBA je suis vraiment novice je copie et je colle puis j'essaye d'adapter à mon cas.

            pour l'insertion des images à partir d'un fichier donné je ne maitrise pas du tout c'est pourquoi je sollicite  votre aide et merci

            0
          3. Contributeur
            @ABDOUWYDADI65

            Essaie d'abord de le faire via Excel, sans VBA

            Ensuite, essaie d'enregistrer une macro quand tu fais tous cela.

            Plus tard, montre-moi cette macro, je tenterai de t'aider à la répéter sur tous les articles.

            Pour le moment prends ton temps.

            0
          4. @yg_be

            merci de tout coeur

            j'essaye et je t'envoie.

            0
          5. @yg_be

            bonjour yg_be

            je me retourne à toi car j'ai commencé une macro dans ce sens je te l'envoie et dis moi quelles sont les erreurs qui empechent l'affichage des photos.

            la macro :

            Sub InsererImage() 'inserer une image a partir d'un fichier externe

            Dim Fichier As String
            Dim objImg As Object
            Dim Emplacement As Range
            Dim FilePath As String
            Dim i As Integer
            i = 2
            FilePath = "C:\Users\Comp1\Pictures\MR\"
             'mon chemin à moi'
            On Error GoTo err
            Do While Cells(i, 1) <> ""
            Fichier = FilePath & Cells(i, 1) & ".jpg"
            Set objImg = ActiveSheet.Pictures.Insert(Fichier)
            objImg.Select
            Set Emplacement = Cells(i, 5)
            Set objImg = ActiveSheet.DrawingObjects(ActiveSheet.Shapes.Count)
            With objImg.ShapeRange
                .LockAspectRatio = msoFalse
                .Left = Emplacement.Left
                .Top = Emplacement.Top
                .Height = Emplacement.Height
                .Width = Emplacement.Width
            End With
            err:
            Cells(i, 5) = "pas d'image"
            Loop
            i = 2
            End Sub
             

            le 1er article n'a pas de photo donc c'est logique qu'il affiche "pas d'image"

            mais la macro s'arrete là merci de m'eclairer sur le probléme

            0
        3. Je ne sais pas encore comment automatiser pour un article.

          0
          1. bonjour

            je reformule ma demande comme suite : je voudrais à partir de la reference d'un article stocké récuperer automatiquement la désignation la qté et l'unité et ce dans un tableau. 

            dans la 1ere colonne a partir de la 2eme ligne (la 1ere est pour les entetes) j'ai la liste de reference de tous les articles stockés. à l'aide d'une macro qui fonctionne bien je récupère les autres données dans les colonnes 2 3 et4.

            l'idée maintenant c'est d'insérer l'image de chaque article dans la colonne 5.

            les images se trouvent dans un fichier externe (lien \\192.168.100.200\Partage\NH50\) le nom de l'image c'est bien sur la reference de l'article.

            pour ce faire verifier si l'image existe inserer l'image pleinement dans la cellule de la colonne 5 sinon afficher un vide et repeter pour les lignes suivantes jusqu'à ce que la reference soit vide.

            j'espére que ce soit plus clair maintenant

            et merci de tout pour votre aide et votre soutien.

            0