Aide pour excel

Résolu
Bonjour,

Voila j'ai un tableau sous excel qui décrit une liste de produit avec les colonne codes,
désignation, stock ...
Je voudrais pouvoir rajouter une colonne qui contiendrait des photos de ces articles, photos que
je stock dans un autre dossier et qui ont le même nom que le code des articles.

J'aimerais savoir si c'est fesable

MErci !!
Configuration: Windows Vista
Firefox 2.0.0.15

10 réponses

  1. Contributeur
    Merci pour le retour,
    Bonne journée
    eric
    0
    1. Merci tt l monde probleme résolu
      merci spécial à éric !!
      0
      1. Contributeur
        Bonjour,

        Effectivement j'avais ajouté ça rapidement sans trop avoir le temps de finaliser.
        Voici donc avec une gestion des erreurs correcte (en tout cas meilleure ;-) ) :
        Sub AffImage()
            ' Sélectionner les cellules contenant un lien vers une image et appeler la macro
            ' AffImage les affichera sur le lien ou dans la colonne de gauche ou de droite
            Const hDefaut = 75 ' hauteur des images
            Const imgDefaut = "" ' saisir chemin complet et le nom de l'image par défaut à afficher si erreur
            Dim msg As String, r As Long, h As Long
            Dim c As Range, numfich As Integer
            Dim fich
            msg = "Oui : Afficher les images à gauche des liens sélectionnés" & vbCrLf
            msg = msg & "Non : Afficher les images sur les liens sélectionnés" & vbCrLf
            msg = msg & "Annuler : Afficher les images à droite des liens sélectionnés"
            r = MsgBox(msg, vbYesNoCancel, "Cellules où mettre les images")
            If r = vbYes Then
                r = -1
            ElseIf r = vbNo Then
                r = 0
            Else
                r = 1
            End If
            h = InputBox("Hauteur des lignes :", "Choix hauteur", hDefaut)
            For Each c In Selection
                'c.ColumnWidth = 20
                fich = c.Value
                ' test fichier
                If fich <> "" Then
                    numfich = FreeFile()
                    On Error GoTo errfich
                    Open fich For Input As #numfich
                    Close #numfich
                End If
                    '
                If fich <> "" Then
                    c.RowHeight = h 'fixer la hauteur de ligne
                    ActiveSheet.Pictures.Insert(fich).Select 'ouverture image
                    With Selection.ShapeRange
                        .LockAspectRatio = msoTrue 'conserver les proportions
                        .Height = h - 4 'hauteur de l'image = hauteur des lignes - 4
                        .Left = c.Offset(0, r).Left + 2 'à gauche colonne A (sinon tu calcules avec la largeur de colonne des colonnes
                        .Top = c.Top + 2 'et positionner verticalement
                    End With
                End If
            Next c
            Exit Sub
        errfich:
            fich = imgDefaut
            Resume Next
        End Sub


        eric
        0
        1. re bonjour !!

          Voila toute tes indications marche parfaitement eric, merci bcp
          il me reste k'un seul petit truc c l'utilisation de l'image par defaut en effet g pa mal de codes sans photos et quand j'execute la macro ca s'arrete des qu'il trouve + d'un lien mort ce qui fai qu'il n'affiche l'image par defaut que la 1ere fois et non pa a chaque foi k'il ne trouve pa l'image

          MErcii
          0
          1. Contributeur
            Tes photos ne portent pas le même nom que les codes.
            J'ai modifié les codes en remplaçant le 1er 0 par un 1, et j'ai mis les photos dans le répertoire "c:\photos".
            Si c'est toujours comme ça on peut modifier la formule pour en tenir compte...
            Voilà le résultat : http://www.cijoint.fr/cjlink.php?file=cj200807/cijib8QZ9y.xls

            eric
            0
            1. J'ai vraiment du mal a deposer le fichier

              Voila un lien ou il y a un exemple comme tu m'a demander

              http://www.cijoint.fr/cjlink.php?file=cj200807/cijN2XCKPr.zip

              Merci bcp eric !!
              0
              1. Contributeur
                Tu n'es pas 'obligé' de mettre les liens dans la colonne B, tout comme tes codes ne sont pas forcément en colonne A, c'est un exemple...

                Je corrige un peu la formule,
                en ligne 2, colonne que tu veux : ="c:\images\" & A2 & ".jpg" :
                - remplace ="c:\images\" par ton répertoire oui
                - remplace A2 par la cellule où est ton code article
                - ajoute & ".jpg" si tes images se terminent .jpg . Si elle seterminent par .bmp ajoute & ".bmp" etc. Ca dépend de tes images.

                Si tu as du mal dépose un fichier exemple sur www.cijoint.com et colle ici le lien fourni.

                eric
                0
                1. Contributeur
                  Bonsoir,

                  Supposons tes codes en colonne A, tes images (.jpg) dans le répertoire C:\images\

                  En colonne B tu peux te fabriquer un lien vers les images avec en B2 par exemple :
                  B2: ="c:\images\" & A1 & ".jpg"
                  que tu recopies vers le bas...

                  Ensuite tu colles dans un module le code suivant :
                  Sub AffImage2()
                      ' Sélectionner les cellules contenant un lien vers une image
                      ' AffImage les affichera sur le lien ou dans la colonne de gauche ou de droite
                      Const hDefaut = 75
                      Const imgDefaut = "" ' saisir chemin complet et nom image par défaut à afficher si erreur
                      Dim msg As String, r As Long, h As Long
                      Dim c As Range, numfich As Integer
                      msg = "Oui : Afficher les images à gauche des liens sélectionnés" & vbCrLf
                      msg = msg & "Non : Afficher les images sur les liens sélectionnés" & vbCrLf
                      msg = msg & "Annuler : Afficher les images à droite des liens sélectionnés"
                      r = MsgBox(msg, vbYesNoCancel, "Cellules où mettre les images")
                      If r = vbYes Then
                          r = -1
                      ElseIf r = vbNo Then
                          r = 0
                      Else
                          r = 1
                      End If
                      h = InputBox("Hauteur des lignes :", "Choix hauteur", hDefaut)
                      For Each c In Selection
                          'c.ColumnWidth = 20
                          fich = c.Value
                          ' test fichier
                          If fich <> "" Then
                              numfich = FreeFile()
                              On Error GoTo errfich
                              Open fich For Input As #numfich
                              Close #numfich
                              GoTo suite1
                  errfich:
                              fich = imgDefaut
                  suite1:
                          End If
                              '
                          If fich <> "" Then
                              c.RowHeight = h 'fixer la hauteur de ligne
                              ActiveSheet.Pictures.Insert(fich).Select 'ouverture image
                              With Selection.ShapeRange
                                  .LockAspectRatio = msoTrue 'conserver les proportions
                                  .Height = h - 4 'hauteur de l'image = hauteur des lignes - 4
                                  .Left = c.Offset(0, r).Left + 2 'à gauche colonne A (sinon tu calcules avec la largeur de colonne des colonnes
                                  .Top = c.Top + 2 'et positionner verticalement
                              End With
                          End If
                      Next c
                  End Sub


                  C'est un petit programme sans prétention que j'avais fait pour qcq'un ici.
                  Mais il fait ce pour quoi il est prévu : afficher des images sur une feuille excel.

                  - Sélectionner la plage où sont les liens vers les images (colonne B pour toi dans cet exemple)
                  - lancer la macro
                  - AffImage2 affichera les images sur le lien, ou dans la colonne de gauche ou de droite.
                  - la hauteur par défaut est modifiable dans Const hDefaut
                  - on peut afficher une image par défaut si le lien est erroné en modifiant Const imgDefaut

                  Si tu as des difficultés demande...
                  eric
                  0
                  1. Deja merci bcp pour ton aide, je sens que j'y suis presque vu que ton programme a l'air de marcher ...

                    le seul hic c ce que je dois mettre dans la colonne B (les liens vers les images) tu m'a donné comme exemple:

                    B2: ="c:\tmp\" & A1 & ".jpg"

                    je suppose donc que je remplace c:\tmp\ par le chemin du dossier contenant les images..

                    et j copi cette ligne sur tte les autres mais ca ne marche pas vu que j'ai mis pr tester une image par defaut et c elle ki sort

                    comme je te lé di je sui vraimen novice lol.

                    MErci bcp
                    0
                2. Tu veux vraiement les voir tes photo ou tu veux un lien ? Utilise la fonction hypertexte si tes photos sont accessibles facilement. et si le nom des photo est sequentiel tu peux commencer par faire une focntion de concaténation de texte et ensuite tu tansforme cela en formule. PAs facile à expliquer, et il faudrait tester, mais la base de la solution serait là je pense
                  0
                  1. Oui si possible j'aimerais les voir mais comprenez que je suis novice en Excel, je ne sais pas vraiment en quoi consiste la solution que tu me propose voila dans le lien suivant un exemple avec des photos pour que tu vois ce qu'il en ai

                    Merci bcp !!

                    https://authentification.site/510611320.html
                    0
                3. Bonjour

                  Au plus simple tu te positionne dans une cellule, et tu fais insertion image que tu dois redimentionner
                  0
                  1. Ca ne serait pas vraimen simple car c'est une liste d'environ 2500 articles lol

                    Je voudrais une fonction ou un programme pour automatiser cette action!!

                    Merci quand meme pour ton aide !!
                    0
                  2. @Mehdi_bEh une macro ne résoudrait pas ton problème
                    0