Aide pour excel

Résolu/Fermé
Mehdi_b - 14 juil. 2008 à 16:33
eriiic Messages postés 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 - 17 juil. 2008 à 11:58
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 !!

10 réponses

Bonjour

Au plus simple tu te positionne dans une cellule, et tu fais insertion image que tu dois redimentionner
0
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
0032cachou > Mehdi_b
14 juil. 2008 à 18:26
Eh une macro ne résoudrait pas ton problème
0
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
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
eriiic Messages postés 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 7 239
14 juil. 2008 à 20:04
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
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
eriiic Messages postés 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 7 239
14 juil. 2008 à 21:59
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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
eriiic Messages postés 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 7 239
14 juil. 2008 à 22:51
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
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
eriiic Messages postés 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 7 239
15 juil. 2008 à 15:44
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
Merci tt l monde probleme résolu
merci spécial à éric !!
0
eriiic Messages postés 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 7 239
17 juil. 2008 à 11:58
Merci pour le retour,
Bonne journée
eric
0