Bug affichage images excel
kerdaven_urburck
Messages postés
17
Date d'inscription
Statut
Membre
Dernière intervention
-
kerdaven_urburck -
kerdaven_urburck -
Bonjour à tous,
J'ai développé une macro pour insérer une image liée à une cellule :
- dans le fichier excel le chemin vers l'image est créé
- la macro va chercher l'image dans un dossier "base image", l'ajoute sur une cellule en fin de ligne, la dimensionne "comme il faut" et la lie à la cellule.
Les images apparaissent bien mais quand on ouvre le fichier sur un autre PC, elles ne sont plus visibles et le message suivant remplace chaque image "impossible d'afficher le fichier lié etc...."
Je pensais que ma macro insérait l'image sans faire de lien pour exporter ce fichier sans avoir à exporter la base avec.
Qui sait m'aider ?
Merci beaucoup
ci-dessous un lien pour récupérer mon fichier et un dossier avec les images
https://wetransfer.com/downloads/2ec8576bd928883882396e3c0d5aff1d20210201151755/a309b6
Merci pour votre aide
J'ai développé une macro pour insérer une image liée à une cellule :
- dans le fichier excel le chemin vers l'image est créé
- la macro va chercher l'image dans un dossier "base image", l'ajoute sur une cellule en fin de ligne, la dimensionne "comme il faut" et la lie à la cellule.
Les images apparaissent bien mais quand on ouvre le fichier sur un autre PC, elles ne sont plus visibles et le message suivant remplace chaque image "impossible d'afficher le fichier lié etc...."
Je pensais que ma macro insérait l'image sans faire de lien pour exporter ce fichier sans avoir à exporter la base avec.
Qui sait m'aider ?
Merci beaucoup
ci-dessous un lien pour récupérer mon fichier et un dossier avec les images
https://wetransfer.com/downloads/2ec8576bd928883882396e3c0d5aff1d20210201151755/a309b6
Merci pour votre aide
Sub insertion_img() Dim i As Integer Nlignes = Application.CountA(Range("B:B")) Range("Y3").Select For i = 1 To (Nlignes - 2) chemin = ActiveCell.Value If WorksheetFunction.IsNA(ActiveCell.Address) Then ActiveCell.Offset(0, 1).Value = "pas d'image" ActiveCell.Offset(1, -1).Select Else ActiveCell.Offset(0, 1).Select ActiveCell.RowHeight = 100 Set img = ActiveSheet.Pictures.Insert(chemin) On Error Resume Next With img img.Top = ActiveCell.Top img.Left = ActiveCell.Left img.Name = Left(chemin, Len(chemin) - 4) & i ' Donne un nom à l'image img.Height = 100 ' s'ajuste à la hauteur de la ligne img.Placement = xlMoveAndSize ActiveCell.Offset(1, -1).Select End With End If Next MsgBox ("fin de traitement") End Sub
A voir également:
- Bug affichage images excel
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
- Excel moyenne - Guide
17 réponses
Re,
Ben, deja ce n'est pas le fichier que vous avez mis a dispo.
Z'etes sur qu'il n'y a pas de code qui lance le
Et etes vous sur que la personne n'a pas fait une insertion image?
Parce que lorsque j'ai ouvert votre fichier x fois je n'ai pas eu de probleme
Ben, deja ce n'est pas le fichier que vous avez mis a dispo.
Z'etes sur qu'il n'y a pas de code qui lance le
sub insertdans
ThisWorkbook Private Sub Workbook_Open() End Sub
Et etes vous sur que la personne n'a pas fait une insertion image?
Parce que lorsque j'ai ouvert votre fichier x fois je n'ai pas eu de probleme
Bonsoir,
Merci pour votre réponse.
Il n'y a pas moyen d'enregistrer les images dans le fichier comme toute image insérée en mode manuel sans passer par une macro ?
Le fichier est assez lourd (je n'ai mis qu'un extrait pour l'exemple) mais le fichier initial comporte 4000 lignes !
Merci
Merci pour votre réponse.
Il n'y a pas moyen d'enregistrer les images dans le fichier comme toute image insérée en mode manuel sans passer par une macro ?
Le fichier est assez lourd (je n'ai mis qu'un extrait pour l'exemple) mais le fichier initial comporte 4000 lignes !
Merci
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Re,
Sans macro, ben vous faites un copier coller dans une feuille et modifier le code pour les récupérer
Votre code insertion image est appelé comment ?
Y a un truc qui m'échappe.
Sans macro, ben vous faites un copier coller dans une feuille et modifier le code pour les récupérer
Votre code insertion image est appelé comment ?
Y a un truc qui m'échappe.
Re
l'insertion image se fait avec img = ActiveSheet.Pictures.Insert(chemin)
Je ne comprends pas la manip du copier coller ? les liens resterons attendus non ?
l'insertion image se fait avec img = ActiveSheet.Pictures.Insert(chemin)
Je ne comprends pas la manip du copier coller ? les liens resterons attendus non ?
Bonjour,
La procedure d'insertion d'image s' execute a chaque ouverture du fichier Excel ou ?
Je recupere vos zip, je verrais e qu'il en est
Suite:
Comment les noms d'image arrivent dans la feuille Listing_Images_Trouvees?
La procedure d'insertion d'image s' execute a chaque ouverture du fichier Excel ou ?
Je recupere vos zip, je verrais e qu'il en est
Suite:
Comment les noms d'image arrivent dans la feuille Listing_Images_Trouvees?
Bonjour,
Non la macro s'exécute sur demande avec le bouton insert
merci pour votre avis
Non la macro s'exécute sur demande avec le bouton insert
merci pour votre avis
Re,
Lire la derniere ligne que je viens d'ajouter svp
Suite:
Je viens de regarder dans mes archives de traitement d'image venant d'une feuille du meme classeur.
Ben vous auriez vraiment interet a mettre votre base dans chaque PC (evidement probeme de mise a jour) ou mettre la base en reseau si possible
Lire la derniere ligne que je viens d'ajouter svp
Suite:
Je viens de regarder dans mes archives de traitement d'image venant d'une feuille du meme classeur.
Ben vous auriez vraiment interet a mettre votre base dans chaque PC (evidement probeme de mise a jour) ou mettre la base en reseau si possible
Pour lister le nom des images, sur Mac un select all sur le dossier contenant les images + coller dans excel liste tous les noms des fichiers.
Cette liste est en dur dans le fichier
Biensur on pourrait ajouter une macro qui liste au préalable le dossier images, que l'on ferait choisir avec une inputbox mais j'ai dû aller à l'essentiel (et puis je ne suis pas très calé en VBA non plus)
J'espère que cela répond à votre question
Cette liste est en dur dans le fichier
Biensur on pourrait ajouter une macro qui liste au préalable le dossier images, que l'on ferait choisir avec une inputbox mais j'ai dû aller à l'essentiel (et puis je ne suis pas très calé en VBA non plus)
J'espère que cela répond à votre question
Re,
Ok, mais cela oblige, comme je vous l'ai ecrit, a avoir tous les fichiers image sur chaque PC ou qu'ils soient en reseau
Ok, mais cela oblige, comme je vous l'ai ecrit, a avoir tous les fichiers image sur chaque PC ou qu'ils soient en reseau
Pour la machine qui sert à créer le listing image, oui je comprends qu'on doive avoir la base images.
Mais ensuite si je veux partager le fichier excel une fois traité avec la macro, comment sauvegarder les images dans l'excel ?
J'ai vu qu'avec la méthode shape.addpicture c'était possible via ses paramètres, mais je n'y arrive pas avec .picture.insert
Et quant à utiliser shape.addpicture, je bloque car je n'arrive pas à convertir la chaine "chemin" en chemin compréhensible par shape.addpicture...
Mais ensuite si je veux partager le fichier excel une fois traité avec la macro, comment sauvegarder les images dans l'excel ?
J'ai vu qu'avec la méthode shape.addpicture c'était possible via ses paramètres, mais je n'y arrive pas avec .picture.insert
Et quant à utiliser shape.addpicture, je bloque car je n'arrive pas à convertir la chaine "chemin" en chemin compréhensible par shape.addpicture...
Re,
si je veux partager le fichier excel une fois traité avec la macro
Question: avez vous des mise a jour d'images faire?
Si vous faite executer une fois la procedure Insert_Img, sauvegarde, les images sont sauvegardees dans la feuille listing pas ailleurs.
Manque une explication...
si je veux partager le fichier excel une fois traité avec la macro
Question: avez vous des mise a jour d'images faire?
Si vous faite executer une fois la procedure Insert_Img, sauvegarde, les images sont sauvegardees dans la feuille listing pas ailleurs.
Manque une explication...
Le fichier que j'ai mis à dispo est une version réduite avec moins de lignes, mais la structure du fichier est la même et le code de la macro aussi.
A toutes fins utiles voici le fichier, mais je ne peux pas partager la base image (trop d'images dedans).
https://wetransfer.com/downloads/6d9d4c11285ffebeae1d92680b58971a20210202094755/3b44fb
Quand vous dites que vous avez ouvert mon fichier sans soucis, cela veut dire que vous voyez bien les images ?
merci
A toutes fins utiles voici le fichier, mais je ne peux pas partager la base image (trop d'images dedans).
https://wetransfer.com/downloads/6d9d4c11285ffebeae1d92680b58971a20210202094755/3b44fb
Quand vous dites que vous avez ouvert mon fichier sans soucis, cela veut dire que vous voyez bien les images ?
merci
Bonjour,
essaie ceci:
Il faut impérativement que le classeur soit dans le même dossier que le dossier Base_vignettes
voilà
essaie ceci:
Option Explicit Sub insertion_img() Dim i As Integer Dim chemin As String Dim rep As String Dim nom As String Dim Nlignes As Long Dim img Nlignes = Application.CountA(Range("B:B")) Range("Y3").Select rep = ThisWorkbook.Path & "\Base_vignettes\" Application.ScreenUpdating = False For i = 1 To (Nlignes - 2) nom = Split(ActiveCell.Value, "/")(5) chemin = rep & nom If WorksheetFunction.IsNA(ActiveCell.Address) Then ActiveCell.Offset(0, 1).Value = "pas d'image" ActiveCell.Offset(1, -1).Select Else ActiveCell.Offset(0, 1).Select ActiveCell.RowHeight = 100 Set img = ActiveSheet.Pictures.Insert(chemin) With img img.Top = ActiveCell.Top img.Left = ActiveCell.Left img.Name = Left(chemin, Len(chemin) - 4) & i ' Donne un nom à l'image img.Height = 100 ' s'ajuste à la hauteur de la ligne img.Placement = xlMoveAndSize ActiveCell.Offset(1, -1).Select End With End If Next MsgBox ("fin de traitement") Application.ScreenUpdating = True End Sub
Il faut impérativement que le classeur soit dans le même dossier que le dossier Base_vignettes
voilà
Bonjour cs_Le Pivert,
Son code de base fonctionne mais comme nous l'ecrivon, la base doit etre obligatoirement dans chaque PC en cas de mise a jour. Mais, il n'y a pas de mise a jour donc pas besoin de base image.
Le soucis serait a l'ouverture du fichier sur un autre PC.
Je recupere sur son dernier lien et verifie par rapport aux questions auxquelles qu'il n' a pas repondu
Son code de base fonctionne mais comme nous l'ecrivon, la base doit etre obligatoirement dans chaque PC en cas de mise a jour. Mais, il n'y a pas de mise a jour donc pas besoin de base image.
Le soucis serait a l'ouverture du fichier sur un autre PC.
Je recupere sur son dernier lien et verifie par rapport aux questions auxquelles qu'il n' a pas repondu
Bonsoir !
Bilan : votre code fonctionne sur PC mais pas sur Mac. Je reste un peu sur ma faim car du coup je ne vois pas où sont mes erreurs (mon code initial tournait sur PC...) mais bon une solution a été apportée.
Je ne lancerai pas ici un débat sur la pertinence d'utiliser excel + VBA sur un mac... c'est pas ma soupe (sic).
Merci pour votre temps et votre aide.
Au plaisir
Bilan : votre code fonctionne sur PC mais pas sur Mac. Je reste un peu sur ma faim car du coup je ne vois pas où sont mes erreurs (mon code initial tournait sur PC...) mais bon une solution a été apportée.
Je ne lancerai pas ici un débat sur la pertinence d'utiliser excel + VBA sur un mac... c'est pas ma soupe (sic).
Merci pour votre temps et votre aide.
Au plaisir