insertion image avec macro sur excel

Je viens de changer les ":" par des "/" : plus de message d'erreur...mais rien ne se passe :p pas de photos dans la colonne suivante...j'ai cliqué sur annuler pour que les photos se placent à droite, par acquis de conscience j'ai aussi essayé "oui" mais même résultat.
Le but est de faire un fichier avec les tarifs de nos produits (plus de 2000 réf.) et de placer automatiquement les photos correspondantes. Ça va me permettre en outre de voir rapidement quelles sont les photos manquantes, et surtout de ne pas tout placer à la main!
J'ai essayé de transférer mon fichier mais même zippé il reste grisé...

Je vais décrire mon fichier pour trouver où peut être le problème :
Colonne A : références produit
Colonne B : prix
Colonne C : en C3 : Macintosh HD/users/adm/Desktop/KATERINE/TARIFS CLIENTS/PHOTOS pour test
et C6 à C12 : =$C$3@"/"&A6&".jpg" (étiré sur les lignes suivantes pour incrémenter le n° de ligne)
Colonne D : vide pour les visuels
J'ai bien vérifié que mes visuels sont dans le dossier indiqué, avec le bon nom et la bonne extension...
Je sèche! ;-)
 
Dernière édition par un modérateur:
Je suis sous OS 10.10 et comme les macros ne fonctionnaient pas
Tu essayais avec Excel 2011? Les indications données plus haut (messages n°4 et 5) permettent un fonctionnement de la macro.

j'ai installé Excel 2016...
Avec Excel 2016, c'est pareil, sous réserve de donner le chemin d'accès sous la forme appropriée (message n°19)

Colonne C : en C3 : Macintosh HD/users/adm/Desktop/KATERINE/TARIFS CLIENTS/PHOTOS pour test
Où as-tu vu qu'il fallait donner le nom du disque de démarrage dans les chemins d'accès "POSIX" ? Il ne faut pas seulement remplacer les deux points par des slashes (cf message n°19). En C3, tu devrais plutôt avoir quelque chose comme :
/Users/adm/Desktop/KATERINE/TARIFS CLIENTS/PHOTOS pour test
 
Dernière édition:
Tu essayais avec Excel 2011? Les indications données plus haut (messages n°4 et 5) permettent un fonctionnement de la macro.


Avec Excel 2016, c'est pareil, sous réserve de donner le chemin d'accès sous la forme appropriée (message n°19)


J'ai commencé avec Excel 2011 mais je ne pouvais pas enregistrer de macros. J'ai donc installé la version 2016...
Ce matin j'ai modifié les chemins d'accès ce qui a permis de ne plus avoir de message d'erreur...mais les photos ne pontent pas dans les cellules... :-( je suis en train de tout vérifier à nouveau.
Comment fait-on pour suivre la macro pas à pas ? j'ai essayé mais il m'affiche le code et c'est tout...

Où as-tu vu qu'il fallait donner le nom du disque de démarrage dans les chemins d'accès "POSIX" ? Il ne faut pas seulement remplacer les deux points par des slashes (cf message n°19). En C3, tu devrais plutôt avoir quelque chose comme :
/Users/adm/Desktop/KATERINE/TARIFS CLIENTS/PHOTOS pour test

Je viens de modifier le chemin d'accès en retirant le nom du dd.... et ça plante excel quand je lance la macro! :-D
 
Dernière édition par un modérateur:
J'ai commencé avec Excel 2011 mais je ne pouvais pas enregistrer de macros.
??? C'est tout à fait possible d'enregistrer des macros avec Excel 2011. Dans le cas présent, il n'y a pas besoin d'enregistrer (mais c'était peut-être des essais avant de trouver le tuto, c'est vrai).

Ce matin j'ai modifié les chemins d'accès ce qui a permis de ne plus avoir de message d'erreur...mais les photos ne pontent pas dans les cellules...
Comme vu dans le message n°22, La modification n'était probablement pas correcte. Ça devrait fonctionner (chez moi, ça fonctionne).

Comment fait-on pour suivre la macro pas à pas ? j'ai essayé mais il m'affiche le code et c'est tout...
Pour exécuter en pas à pas, il suffit de cliquer sur le bouton idoine :
Capture d’écran.png
Je viens de modifier le chemin d'accès en retirant le nom du dd.... et ça plante excel quand je lance la macro! :-D
C'est qu'autre chose n'est pas correct. As-tu vérifié la formule en C6 ? Dans le classeur à l'origine, elle ajoute un antislash avant le nom de l'image. Ce qui correspond à un chemin Windows, mais pas à un chemin d'accès Mac : il faut y remplacer l'antislash par un slash...

Mais bon, ça peut être autre chose, il faudrait que tu donnes plus de précisions. Par exemple le chemin complet tel qu'il s'affiche en C6 et suivantes.
 
??? C'est tout à fait possible d'enregistrer des macros avec Excel 2011. Dans le cas présent, il n'y a pas besoin d'enregistrer (mais c'était peut-être des essais avant de trouver le tuto, c'est vrai).


Comme vu dans le message n°22, La modification n'était probablement pas correcte. Ça devrait fonctionner (chez moi, ça fonctionne).


Pour exécuter en pas à pas, il suffit de cliquer sur le bouton idoine :

C'est qu'autre chose n'est pas correct. As-tu vérifié la formule en C6 ? Dans le classeur à l'origine, elle ajoute un antislash avant le nom de l'image. Ce qui correspond à un chemin Windows, mais pas à un chemin d'accès Mac : il faut y remplacer l'antislash par un slash...

Mais bon, ça peut être autre chose, il faudrait que tu donnes plus de précisions. Par exemple le chemin complet tel qu'il s'affiche en C6 et suivantes.


Alors je viens de lancer la macro pas à pas :
tout se déroule correctement, j'ai les 2 boîtes de dialogues, ensuite il passe sur le premier If fich <>""Then et passe direct à End if pareil pour le deuxième If fich puis Next c. Il tourne 2 fois (les lignes vides après C3?) et au 3e passage au premier If fich il descend sur les lignes juste en dessous
If Left(fich,7) = "http://" Then
Else
numfich = FreeFile()
On Error GoTo errfich
Open fich For Input As #numfich
etc... jusqu'au 2e End if
il commence à lire If fich <>"" Then
c.RowHeight = h
ActiveSheet.Pictures.Insert(fich).Select et là ça plante quand j'appuie sur le bouton... donc quand il tente d'ouvrir le fichier...?

Zut et rezut. Je viens de faire plusieurs tests, j'ai refait le fichier entièrement, j'ai pris d'autres photos que j'ai placé directement sur le bureau... et replantage à l'ouverture du premier visuel...
J'avais un bug avec Excel 2011 qui ne voulais pas enregistrer de macros, j'ai installé le 2016...et il plante ailleurs.
Une idée ? :-(

Un petit bout de code différent pour tester si on peut déjouer le plantage ? :)
 
Dernière édition par un modérateur:
ActiveSheet.Pictures.Insert(fich).Select et là ça plante quand j'appuie sur le bouton... donc quand il tente d'ouvrir le fichier...?
Quand il se bloque sur ce point, si tu positionnes le curseur sur le nom fich, il t'affiche le chemin qu'il essaye d'atteindre. Comme ça, tu peux voir en quoi il n'est pas correct.

NB : en demandant l'affichage de la fenêtre des "Variables locales" (menu "Affichage"), tu peux voir les valeurs que prennent les variables à mesure de l'avancement et mieux surveiller ce qui se passe...
 
Quand il se bloque sur ce point, si tu positionnes le curseur sur le nom fich, il t'affiche le chemin qu'il essaye d'atteindre. Comme ça, tu peux voir en quoi il n'est pas correct.

NB : en demandant l'affichage de la fenêtre des "Variables locales" (menu "Affichage"), tu peux voir les valeurs que prennent les variables à mesure de l'avancement et mieux surveiller ce qui se passe...

Je viens de le faire... toutes les valeurs sont bien prises en compte, le choix du positionnement 1 ou -1 selon ma réponse, la hauteur de ligne, le chemin d'accès vers le fichier. Si je modifie le chemin (donc erroné) il tourne en boucle, mais si le chemin est bon il tente d'ouvrir le premier fichier et c'est là qu'il plante...

Il y a vraiment un bug mon Mac je crois. Je viens de tester un autre code trouvé sur le net et ça plante à la lecture de cette ligne :
Set Image = ActiveSheet.Pictures.Insert(cel.Value)
...
sais plus quoi faire...
 
Dernière édition par un modérateur:
ça plante à la lecture de cette ligne :
Set Image = ActiveSheet.Pictures.Insert(cel.Value)
??? Cette ligne n'étant pas présente dans la macro du classeur modèle, il faudrait que tu précises un peu ce que tu fais exactement. En ce qui me concerne, j'ai téléchargé le classeur, adapté les chemins d'accès (cellules C3, C6, C7, etc.) et le contenu de la colonne "Noms".
 
??? Cette ligne n'étant pas présente dans la macro du classeur modèle, il faudrait que tu précises un peu ce que tu fais exactement. En ce qui me concerne, j'ai téléchargé le classeur, adapté les chemins d'accès (cellules C3, C6, C7, etc.) et le contenu de la colonne "Noms".

Oui c'est une macro que j'ai trouvée sur un autre site. Quand je la teste j'ai le même plantage au moment d'insérer l'image.
J'en conclue que le problème vient de mon Mac.
Par acquis de conscience je vais quand même tester le fichier original tel qu'il a été fourni dans le tuto avec les rugbymen.
J'ai fait un test avant de manger sur le Mac de ma collègue, mais elle est en version OS 10.12 avec Excel 2011 et le chemin d'accès ne semble pas fonctionner... je vais me pencher à nouveau sur la question dès que j'aurai fait le test sur le fichier...
Donc suite tout à l'heure!
 
Oui c'est une macro que j'ai trouvée sur un autre site.
Ça va mieux en le disant ! ;)

Quand je la teste j'ai le même plantage au moment d'insérer l'image.
J'ai creusé un peu plus. Il semble qu'on puisse rencontrer des problèmes en fonction de la taille de l'image. Les fichiers trop "gros" (je ne sais pas si c'est la taille en octets ou en pixels qui pose problème, vu que c'est un peu lié) sont rejetés... Quelle est la taille des images que tu veux insérer (ceux qui passent font moins de 40 Ko chez moi) ?

J'ai fait un test avant de manger sur le Mac de ma collègue, mais elle est en version OS 10.12 avec Excel 2011 et le chemin d'accès ne semble pas fonctionner...
Attention, on revient au deux points + nom du disque de démarrage, dans ce cas...
 
Ça va mieux en le disant ! ;)


J'ai creusé un peu plus. Il semble qu'on puisse rencontrer des problèmes en fonction de la taille de l'image. Les fichiers trop "gros" (je ne sais pas si c'est la taille en octets ou en pixels qui pose problème, vu que c'est un peu lié) sont rejetés... Quelle est la taille des images que tu veux insérer (ceux qui passent font moins de 40 Ko chez moi) ?


Attention, on revient au deux points + nom du disque de démarrage, dans ce cas...

Alors, après avoir vérifié mes photos super légères donc innocentes, je viens de refaire le test sur le Mac de ma collègue avec le bon chemin d'accès et des ":" au lieu de "/"... et ça fonctionne!
J'ai bien un bug sur mon Mac, peut-être lié à un problème d'installation à l'origine d'Office.
Trop contente!
Merci beaucoup pour ton aide précieuse et ta patience Aliboron :)
Si je peux abuser, y a t-il un bout de code qu'on pourrait ajouter pour mettre un petit texte du genre "Photo non dispo" quand il n'y en a pas qui correspond à la référence de la colonne A ? (sais pas si c'est clair...) :-D
 
J'ai bien un bug sur mon Mac, peut-être lié à un problème d'installation à l'origine d'Office.
Je n'en suis pas si sûr... Si tu donnais le détail de ce que tu as mis dans les cellules C3, C6 etc. on y verrait certainement plus clair. ;)

y a t-il un bout de code qu'on pourrait ajouter pour mettre un petit texte du genre "Photo non dispo" quand il n'y en a pas qui correspond à la référence de la colonne A ?
Normalement, c'est ce que fait le petit passage (à la fin) de la macro qui gère l'erreur sur le nom de fichier : il met le chemin de l'image "par défaut", que tu es sensée renseigner à la deuxième ligne de la macro AffImage. Au départ, la constante imgDefaut est vide : il ne tient qu'à toi d'y mettre un chemin d'accès, comme indiqué.
 
Je n'en suis pas si sûr... Si tu donnais le détail de ce que tu as mis dans les cellules C3, C6 etc. on y verrait certainement plus clair. ;)


Normalement, c'est ce que fait le petit passage (à la fin) de la macro qui gère l'erreur sur le nom de fichier : il met le chemin de l'image "par défaut", que tu es sensée renseigner à la deuxième ligne de la macro AffImage. Au départ, la constante imgDefaut est vide : il ne tient qu'à toi d'y mettre un chemin d'accès, comme indiqué.

Alors en fait j'étais tellement contente que ça fonctionne chez ma collègue que j'ai viré tout ce qui ne fonctionnait pas :) :)
J'ai fait des tests de base sans l'incrémentation automatique du nom de l'image à partir de la référence, en mettant juste une macro sur un fichier nu demandant d'insérer une image et ça plante aussi. C'est pour ça que j'en déduis que ce n'est vraiment pas une erreur dans le codage mais bien un bug sur mon poste...

Pour l'image imgDefaut désolée je n'avais pas vu ce passage du code. C'est top je vais préparer ça!
Encore merci!!! ;-)
 
Bonjour Aliboron,

Je souhaiterais avoir un petit renseignement, j'ai exécuté la macro qui marche très bien sur mon fichier excel. Maintenant je souhaiterais garder ses photos "en brut/dure" pour que les images puissent être accessible à tous sans avoir accès au partage. Sachant que les images qui s'affichent sur le excel sont sur un partage commun.
J'ai déjà essayé de copié-collé en image mais je perds beaucoup en qualité ou simplement excel ne marche pas.
Avez vous une idée ?
Merci par avance,
 
je souhaiterais garder ses photos "en brut/dure" pour que les images puissent être accessible à tous sans avoir accès au partage. Sachant que les images qui s'affichent sur le Excel sont sur un partage commun.
Je ne comprends pas trop la demande. S'il s'agit de rapatrier des images qui sont sur un serveur ou autre dossier partagé, il n'est normalement pas trop compliqué de passer par le Finder pour aller récupérer les images originales par simple glisser-déposer. Non ?
 
J'avais plus de 300 images à insérer sur l'excel, c'est pour cela que j'ai utilisé la macro pour que celles-ci se mettent directement sur l'excel pour ne pas devoir faire la manip 300 fois. Néanmoins, les images s'affichent seulement si la personne a accès au partage commun (car les photos sont sur le partage), si la personne n'a pas accès au partage commun les photos ne s'affichent pas. J'aurais souhaité savoir commun laisser afficher les images sans que la personne est accès au partage commun, pour que les images du fichier puissent être lisibles par tous.
 
les images s'affichent seulement si la personne a accès au partage commun (car les photos sont sur le partage), si la personne n'a pas accès au partage commun les photos ne s'affichent pas.
Ça semble logique.


J'aurais souhaité savoir comment laisser afficher les images sans que la personne ait accès au partage commun, pour que les images du fichier puissent être lisibles par tous.
Il faut nécessairement que les images soient à en emplacement accessible par l'utilisateur. À part installer les 300 images sur chacune des machines, je ne vois pas trop comment cela pourrait se faire. Créer un deuxième partage accessible à tout le monde, si l'accès actuel est refusé pour des questions de sécurité ou de confidentialité, peut-être ?

Question complémentaire : est-ce qu'Excel est vraiment l'outil approprié pour faire ce genre d'utilisation à une telle échelle ?
 
Le partage n'est pas accessible pour tout le monde pour des raisons de confidentialité. Il n'existe pas de solutions pour pouvoir "copié/collé" en dur les images après les avoir importé via la macro ?
Merci pour vos réponses
 
Il n'existe pas de solutions pour pouvoir "copier/coller" en dur les images après les avoir importé via la macro ?
Sûrement. Peut-être en faisant glisser d'abord l'image sur le bureau pour en "fixer le format" avant de la réinsérer dans le classeur. Il ne faut pas hésiter à faire quelques essais...