Bug affichage images excel

Fermé
kerdaven_urburck Messages postés 17 Date d'inscription lundi 1 février 2021 Statut Membre Dernière intervention 2 février 2021 - Modifié le 1 févr. 2021 à 16:56
 kerdaven_urburck - 2 févr. 2021 à 22:31
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
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:

17 réponses

f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
2 févr. 2021 à 10:36
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
sub insert
dans
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
1
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
2 févr. 2021 à 12:05
1
kerdaven_urburck Messages postés 17 Date d'inscription lundi 1 février 2021 Statut Membre Dernière intervention 2 février 2021
2 févr. 2021 à 12:15
Votre fichier comporte bien les images !

Le soucis viendrait donc du bouton qui lancerait la macro à l'ouverture et du coup afficherait des images manquantes ?
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728 > kerdaven_urburck Messages postés 17 Date d'inscription lundi 1 février 2021 Statut Membre Dernière intervention 2 février 2021
2 févr. 2021 à 12:19
Quand les images sont insérées dans le classeur il suffit de l'enregistrer sous en xlsx sans le fermer.

Voilà c'est tout simple

@+ Le Pivert
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701 > kerdaven_urburck Messages postés 17 Date d'inscription lundi 1 février 2021 Statut Membre Dernière intervention 2 février 2021
2 févr. 2021 à 12:20
Re,
du bouton qui lancerait la macro à l'ouverture
Non, un fichier xlsx n'a pas de code VBA

Vous comme moi avons une difference sur Excel avec cs_LePivert, mais je ne vois pas laquelle
0
kerdaven_urburck Messages postés 17 Date d'inscription lundi 1 février 2021 Statut Membre Dernière intervention 2 février 2021 > cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024
2 févr. 2021 à 12:21
pourquoi "sans le fermer " ?
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728 > f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024
Modifié le 2 févr. 2021 à 12:25
J'enregistre sous en xlsx et ensuite je ferme le classeur pour le garder en xlsm

Je ne vois pas le problème!
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
1 févr. 2021 à 18:23
Bonjour,

Dans chaque pc vous devez mettre tous les fichiers qui sont utilisés dans votre code VBA
0
kerdaven_urburck Messages postés 17 Date d'inscription lundi 1 février 2021 Statut Membre Dernière intervention 2 février 2021
1 févr. 2021 à 18:29
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
0

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

Posez votre question
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
1 févr. 2021 à 18:40
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.
0
kerdaven_urburck Messages postés 17 Date d'inscription lundi 1 février 2021 Statut Membre Dernière intervention 2 février 2021
1 févr. 2021 à 18:43
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 ?
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
Modifié le 2 févr. 2021 à 08:16
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?
0
kerdaven_urburck Messages postés 17 Date d'inscription lundi 1 février 2021 Statut Membre Dernière intervention 2 février 2021
2 févr. 2021 à 08:01
Bonjour,

Non la macro s'exécute sur demande avec le bouton insert

merci pour votre avis
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
Modifié le 2 févr. 2021 à 08:50
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
0
kerdaven_urburck Messages postés 17 Date d'inscription lundi 1 février 2021 Statut Membre Dernière intervention 2 février 2021
2 févr. 2021 à 08:57
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
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
2 févr. 2021 à 10:08
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
0
kerdaven_urburck Messages postés 17 Date d'inscription lundi 1 février 2021 Statut Membre Dernière intervention 2 février 2021
2 févr. 2021 à 10:12
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...
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
2 févr. 2021 à 10:20
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...
0
kerdaven_urburck Messages postés 17 Date d'inscription lundi 1 février 2021 Statut Membre Dernière intervention 2 février 2021
2 févr. 2021 à 10:26
Re,

Non il n'y a pas de mise à jour.
Le fichier sera uniquement consulté.

Si les images sont sauvegardées, pourquoi ai-je ce message d'erreur quand une autre personne ouvre le fichier :

0
kerdaven_urburck Messages postés 17 Date d'inscription lundi 1 février 2021 Statut Membre Dernière intervention 2 février 2021
2 févr. 2021 à 10:49
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
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
2 févr. 2021 à 11:01
Bonjour,

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à


0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
2 févr. 2021 à 11:14
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
0
kerdaven_urburck Messages postés 17 Date d'inscription lundi 1 février 2021 Statut Membre Dernière intervention 2 février 2021
2 févr. 2021 à 11:16
Re !

J'ai testé le code de CS_Le Pivert et j'ai une erreur d'éxécution :



J'ai pourtant bien mis le fichier dans le répertoire contenant les images, j'ai vérifié le chemin qui se crée...
0
kerdaven_urburck Messages postés 17 Date d'inscription lundi 1 février 2021 Statut Membre Dernière intervention 2 février 2021
2 févr. 2021 à 11:17
l'erreur se fait sur Set img = ActiveSheet.Pictures.Insert(chemin)
0
kerdaven_urburck Messages postés 17 Date d'inscription lundi 1 février 2021 Statut Membre Dernière intervention 2 février 2021
2 févr. 2021 à 11:22
Je vois que le chemin se crée mal (la valeur de REP n'est pas bonne). Je modifie et teste
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701 > kerdaven_urburck Messages postés 17 Date d'inscription lundi 1 février 2021 Statut Membre Dernière intervention 2 février 2021
2 févr. 2021 à 11:22
Re,

Click sur debuger, curseur souris sur Chemin pour voir son contenu.
Votre fichier au depart de votre demande marchait comprends pourquoi vous changez ou vous ne nous avez pas tout dit

Votre dernier lien: fichier corrompu pas moyen de l'utiliser
0
kerdaven_urburck Messages postés 17 Date d'inscription lundi 1 février 2021 Statut Membre Dernière intervention 2 février 2021 > f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024
2 févr. 2021 à 11:26
j'ai fais ça et cela m'a permis de vois que le chemin contenait déjà "/Base_vignette/" donc pas nécessaire de le concaténer de nouveau.

J'ai généré le fichier, je viens de l'envoyer à une personne pour qu'elle l'ouvre et vérifie.

Je reviens vers vous asap
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701 > kerdaven_urburck Messages postés 17 Date d'inscription lundi 1 février 2021 Statut Membre Dernière intervention 2 février 2021
2 févr. 2021 à 11:29
Re,

Vous prenez l'option de mettre tous les fichiers sur tous les PC?
Comprends pas .
0
kerdaven_urburck
2 févr. 2021 à 22:31
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
0