Insertion d'images Google Drive dans une feuille Excel

Bonjour à tous.
Je viens de m'inscrire sur ce Forum dans l'espoir de résoudre un problème qui me résiste malgré mes recherches sur Internet, notamment sur ce site. Je n'ai pas vu si ce sujet avait été déjà abordé ici et si c'est la cas, je vous prie de m'en excuser !
Il s'agit d'un souci rencontré avec une macro VBA censée insérer dans différentes cellules de ma feuille Excel des images provenant d'un dossier partagé de mon Google Drive. Cette macro fonctionnait parfaitement auparavant à l'aide de l'instruction AddPicture(url, ...), mais elle me retourne depuis quelque temps un message d'erreur à chaque tentative d'insertion, comme si le format que j'utilisais jusqu'à présent pour les liens Google Drive, avec leur ID (c.-à-d. des identifiants des images Google Drive) n'était plus accepté. D'ailleurs, si on remplace les liens Google Drive par des url classiques d'images partagées sur le net, les images en question s'affichent sans problème. Il s'agit donc bien d'un souci lié à la structure des liens Google Drive.
J'ai trouvé un site qui donne une solution partielle à mon problème : pour chacune des images à insérer, on crée sur la feuille Excel à l'emplacement de la cellule de destination, un rectangle que l'on remplit ensuite avec l'image à importer, et cela à l'aide de l'instruction Fill.UserPicture(url).
L'image Google Drive s'insère bien, mais le souci est que l'image ne conserve pas ses dimensions d'origine puisqu'elle prend celles du rectangle de destination. Or, je ne connais pas les dimensions d'origine de mes images et celles-ci varient de l'une à l'autre. Auparavant lorsqu'on insérait l'image directement dans la cellule, une option de AddPicture permettait de conserver les dimensions d'origine, mais il n'y a pas l'équivalent avec Fill.UserPicture.
D'où ma question : certains d'entre vous ont-ils rencontré ce problème et surtout, l'ont-ils résolu ?
D'avance, merci pour votre aide.

Ma demande était sans doute peu claire car elle n'a reçu aucune réponse. Je la reformule :

« Comment insérer dans une feuille Excel (2019 ou au-delà), manuellement ou à l'aide d'une macro, une image stockée sur mon Google Drive, de manière à conserver ses dimensions d'origine ? »

Bonjour,

Sur le forum et si vous ne l'avez pas déjà consulté, il me semble y avoir un sujet assez proche https://forum.excel-pratique.com/excel/image-googledrive-dans-userform-172902

il faut descendre dans le post car au début il est dit qu'à priori ce n'est pas possible.

Cdlt,

Cylfo

Merci pour cette information utile.

Si je comprends bien le principe, puisque l'insertion directe de l'image depuis Google Drive n'est plus possible (alors qu'elle l'était auparavant !), on contourne la difficulté en commençant par importer en local ladite image et on insère ensuite l'image locale sur la feuille Excel.

Je vais explorer cette piste dès le début de la semaine prochaine.

Re,

Oui c'est bien le principe exposé. Par curiosité, j'ai testé le code et cela fonctionne mais j'ai un temps de latence entre la fin d'exécution de l'instruction lRetVal= URLDownloadToFile(0, myURL, sPathfic, 0, 0) et la disponibilité du fichier dans le dossier. Je ne sais pas l'expliquer.

Cdlt,

Cylfo

Bonjour,

de mon côté il y a aussi ce temps de latence qui m'a fait pensé que cela ne marchait pas, mais comme il n'y avait pas de message d'erreur, j'ai patienté et l'image a finie par s'afficher sur le USF !

Serait-ce le temps de téléchargement de l'image ? Mais ça m'étonne...

@ bientôt

LouReeD

Re,

@LouReeD, le retour de la fonction est immédiat mais pas la mise à disposition du fichier dans le dossier, bizarre ... mais je sèche d'autant plus qu'en téléchargeant d'autres images sur le net mais pas sur Google Drive c'est immédiat ...

Cylfo

Je viens d'adapter le code source proposé à mon propre environnement, c.-à-d. une insertion d'image dans une cellule de ma feuille Excel au lieu d'un UserForm. Cela fonctionne parfaitement bien, étant entendu que l'image Google Drive doit être accessible à quiconque dispose du lien (sinon, la macro affiche un carré avec une petite croix rouge et indiquant "Nous ne pouvons pas afficher l'image").

Une fois le fichier de l'image téléchargé en local, l'utilisation de l'instruction AddPicture(Lien, msoFalse, msoCTrue, ActiveCell.Left , ActiveCell.Top, -1, -1) me permet, avec les deux derniers paramètres égaux à -1, de conserver les dimensions d'origine, quelle que soit la taille de la cellule. Certes, la recopie en locale n'est pas instantanée mais la macro semble "attendre patiemment" sa mise à disposition et va ensuite jusqu'au bout sans erreur.

Bref, je suis très satisfait de l'aide reçue. Encore merci. Je pourrais clore ce sujet mais peut-être que d'autres personnes souhaitent intervenir avant ?

re
Bonjour

La durée est du au fait que ton url crée un blob et donc tu passe par les fonction de téléchargement de ton explorer

il te suffit de lancer l'url finale dans ton explorer pour le comprendre( l'url lance de suite le téléchargement)

comme tu passe par l'api tu a la possibilité de choisir la destination c'est tout

http://drive.google.com/u/0/uc?id=1qi5PpIbkoISG6ylhYL8JOpZScTJeYHle&export=download

Rechercher des sujets similaires à "insertion images google drive feuille"