Images intelligentes dans Excel
Résolu/Fermé
Flou
-
23 févr. 2012 à 22:21
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 - 29 févr. 2012 à 07:12
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 - 29 févr. 2012 à 07:12
A voir également:
- Images intelligentes dans Excel
- Liste déroulante excel - Guide
- Si et excel - Guide
- Word et excel gratuit - Guide
- Aller à la ligne excel - Guide
- Déplacer une colonne excel - Guide
8 réponses
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 713
23 févr. 2012 à 22:28
23 févr. 2012 à 22:28
bonjour,
Regardes la démarche d'Éric qui devrait t'aider.
Si problème par rapport à la résolution n'hésites pas à continuer ici.
Regardes la démarche d'Éric qui devrait t'aider.
Si problème par rapport à la résolution n'hésites pas à continuer ici.
Je n'ai pas encore tester la macro... mais je suis optimiste.
La résolution des images pourrait effectivement causer des problèmes, car j'aimerais que le fichier Excel soit le plus léger possible afin de le distribuer facilement.. Il y'a peut-etre une manip dans excel qui permet de réduire la taille des images... ou dans le pire des cas je vais réduire les images à la source.
Mais évidemment, si quelqu'un a une solution plus pratique, vous avez toute mon attention.
Merci!!
La résolution des images pourrait effectivement causer des problèmes, car j'aimerais que le fichier Excel soit le plus léger possible afin de le distribuer facilement.. Il y'a peut-etre une manip dans excel qui permet de réduire la taille des images... ou dans le pire des cas je vais réduire les images à la source.
Mais évidemment, si quelqu'un a une solution plus pratique, vous avez toute mon attention.
Merci!!
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 249
24 févr. 2012 à 16:01
24 févr. 2012 à 16:01
Re,
Je pense que tu n'as guère le choix, il faut diminuer leur résolution avant. Le changement de taille par excel ne change pas leur poids.
Il y a des logiciels qui te permettent de faire cela en masse. N'étant pas chez moi je n'ai pas de nom à te fournir.
Pour la même raison j'aurais du mal à t'aider à adapter, que gb n'hésite pas à intervenir...
Merci gb ;-)
eric
Je pense que tu n'as guère le choix, il faut diminuer leur résolution avant. Le changement de taille par excel ne change pas leur poids.
Il y a des logiciels qui te permettent de faire cela en masse. N'étant pas chez moi je n'ai pas de nom à te fournir.
Pour la même raison j'aurais du mal à t'aider à adapter, que gb n'hésite pas à intervenir...
Merci gb ;-)
eric
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 752
24 févr. 2012 à 16:29
24 févr. 2012 à 16:29
Bonjour tout le monde,
Il y a peut être une solution de "retouche" d'images sous VBA. Je ne peux malheureusement pas la tester, étant au boulot, il m'est impossible de télécharger la library Windows Image Acquisition, et donc de tester.
Cependant, vous pourrez trouver de quoi retoucher une image sous excel et notamment il y est question de rogner, compresser etc...
A voir ici..... ou pas!
Il y a peut être une solution de "retouche" d'images sous VBA. Je ne peux malheureusement pas la tester, étant au boulot, il m'est impossible de télécharger la library Windows Image Acquisition, et donc de tester.
Cependant, vous pourrez trouver de quoi retoucher une image sous excel et notamment il y est question de rogner, compresser etc...
A voir ici..... ou pas!
Je confirme que la macro de Éric fonctionne très très bien pour moi...
Maintenant mon problème est que je tente de sauvegarder les image avec le fichier excel (je suis sous la version 2010).
J'ai vu sur le topique ou Éric explique son programme, que quelqu'un à résolue ce problème en sauvegardant le fichier sous " Excel 5.0/95 Workbook". Je ne vois pas cette option dans mon Excel... et j'ai tenté toute les version qui me sont proposé... et a chaque fois, les images ne sont pas inclu dans le fichier, du coup il est difficile de le partager.
Pour ce qui est de la taille des images, Excel a une option pour compresser les image, peut-être que cela va être suffisant dans mon cas, mais tant que je n'arrive pas a sauvegarder "avec" les images, il est difficile de prévoir la taille du fichier au final.
Je vous tient au courant...
Merci
Maintenant mon problème est que je tente de sauvegarder les image avec le fichier excel (je suis sous la version 2010).
J'ai vu sur le topique ou Éric explique son programme, que quelqu'un à résolue ce problème en sauvegardant le fichier sous " Excel 5.0/95 Workbook". Je ne vois pas cette option dans mon Excel... et j'ai tenté toute les version qui me sont proposé... et a chaque fois, les images ne sont pas inclu dans le fichier, du coup il est difficile de le partager.
Pour ce qui est de la taille des images, Excel a une option pour compresser les image, peut-être que cela va être suffisant dans mon cas, mais tant que je n'arrive pas a sauvegarder "avec" les images, il est difficile de prévoir la taille du fichier au final.
Je vous tient au courant...
Merci
Ok, j'ai réussi a sauvegarder sous " Excel 5.0/95 Workbook"... oui les images suivent... mais la mise en forme a perdu les filtres, et je misais sur ceux-ci pour faciliter la recherche...
Je ne peux pas croire que Excel 2010 ne permette pas de sauvegarder avec les images....
Ayayaye, si proche du but.
Je ne peux pas croire que Excel 2010 ne permette pas de sauvegarder avec les images....
Ayayaye, si proche du but.
Raymond PENTIER
Messages postés
58801
Date d'inscription
lundi 13 août 2007
Statut
Contributeur
Dernière intervention
7 janvier 2025
17 264
24 févr. 2012 à 23:56
24 févr. 2012 à 23:56
Bonjour Flou.
Il y a quelque chose qui m'a échappé dans la finalité de ton travail : Tu as d'une part un fichier Excel sans image, mais désormais avec une macro qui te permet d'aller chercher certaines images dans un dossier "convaincu qu'il y'a une formule pour atteindre le fichier et l'insérer dans ma feuille".
Tu as d'autre part ce dossier contenant plein d'images, dont certaines seront appelées par la macro.
Ton but est en effet de pouvoir tenir à jour ton catalogue "De nouveaux composants ou photos peuvent s'ajouter ou se retirer, c'est pourquoi j'aimerais que mon fichier excel ce mette a jour tout seul".
Je ne vois donc pas pourquoi tu voudrais sauvegarder la feuille excel contenant déjà les images "j'ai réussi a sauvegarder sous " Excel 5.0/95 Workbook"... oui les images suivent... mais la mise en forme a perdu les filtres ... Je ne peux pas croire que Excel 2010 ne permette pas de sauvegarder avec les images".
En toute logique, tu devrais, dans un dossier, sauvegarder côte à côte le fichier (classeur) excel et les images jpeg ! à moins que j'aie mal interprété ton souhait "je tente de sauvegarder les image avec le fichier excel" ... ?
Il y a quelque chose qui m'a échappé dans la finalité de ton travail : Tu as d'une part un fichier Excel sans image, mais désormais avec une macro qui te permet d'aller chercher certaines images dans un dossier "convaincu qu'il y'a une formule pour atteindre le fichier et l'insérer dans ma feuille".
Tu as d'autre part ce dossier contenant plein d'images, dont certaines seront appelées par la macro.
Ton but est en effet de pouvoir tenir à jour ton catalogue "De nouveaux composants ou photos peuvent s'ajouter ou se retirer, c'est pourquoi j'aimerais que mon fichier excel ce mette a jour tout seul".
Je ne vois donc pas pourquoi tu voudrais sauvegarder la feuille excel contenant déjà les images "j'ai réussi a sauvegarder sous " Excel 5.0/95 Workbook"... oui les images suivent... mais la mise en forme a perdu les filtres ... Je ne peux pas croire que Excel 2010 ne permette pas de sauvegarder avec les images".
En toute logique, tu devrais, dans un dossier, sauvegarder côte à côte le fichier (classeur) excel et les images jpeg ! à moins que j'aie mal interprété ton souhait "je tente de sauvegarder les image avec le fichier excel" ... ?
Bonjour Raymond,
En fait pour mon utilisation personnel, cela ne cause aucun problème, par contre le but du catalogue est d'être distribué par email... Il serait donc beaucoup plus pratique que ce catalogue ne comporte qu'un seul fichier.
Dans Access nous avons le choix que les images soit liés ou intégrés, dans mon classeur Excel, les images sont vraisemblablement liés, mais comment les intégrés?
Voilà la question.
Flou
En fait pour mon utilisation personnel, cela ne cause aucun problème, par contre le but du catalogue est d'être distribué par email... Il serait donc beaucoup plus pratique que ce catalogue ne comporte qu'un seul fichier.
Dans Access nous avons le choix que les images soit liés ou intégrés, dans mon classeur Excel, les images sont vraisemblablement liés, mais comment les intégrés?
Voilà la question.
Flou
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 249
27 févr. 2012 à 17:18
27 févr. 2012 à 17:18
Bonjour tout le monde,
Ma macro a été réalisée sur excel 2003 et je t'avoue que j'étais persuadé que les images étaient intégrées.
Etant hospitalisé et mal équipé je ne peux contrôler qu'elles le sont réellement sur 2003, et que c'est une particularité sur 2010 (je ne me rappelle pas avoir vu le post que tu cites signalant ce pb).
A tout hasard fouille dans les options, sur 2010 ils ont fait peut-être comme sur word où tu choisis...
Je ne pourrais pas t'aider plus actuellement.
eric
Ma macro a été réalisée sur excel 2003 et je t'avoue que j'étais persuadé que les images étaient intégrées.
Etant hospitalisé et mal équipé je ne peux contrôler qu'elles le sont réellement sur 2003, et que c'est une particularité sur 2010 (je ne me rappelle pas avoir vu le post que tu cites signalant ce pb).
A tout hasard fouille dans les options, sur 2010 ils ont fait peut-être comme sur word où tu choisis...
Je ne pourrais pas t'aider plus actuellement.
eric
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 752
28 févr. 2012 à 08:21
28 févr. 2012 à 08:21
Salut Eriiic,
De passage par ici je te souhaite un prompt rétablissement.
Bon courage à toi
A+
Franck
De passage par ici je te souhaite un prompt rétablissement.
Bon courage à toi
A+
Franck
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 249
28 févr. 2012 à 09:49
28 févr. 2012 à 09:49
Salut pijaku,
Merci pour tes voeux :-)
Si tu as excel 2010 et des idées n'hésites pas à intervenir ;-)
Bonne journée à toi
eric
Merci pour tes voeux :-)
Si tu as excel 2010 et des idées n'hésites pas à intervenir ;-)
Bonne journée à toi
eric
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 752
28 févr. 2012 à 09:51
28 févr. 2012 à 09:51
Je n'ai pas 2010, mais rien ne m'empêche d'y regarder...
Bonne journée à toi.
Franck
Bonne journée à toi.
Franck
J'ai remplacer la ligne de code:
Les images sont maintenant sauvegarder avec Excel.
Pour réduire la taille des images... au moment de la sauvegarde, dans "outils/compressions d'images", utiliser l'option "Utiliser la résolution du document".
Je copie ici le code retoucher... par contre je suis débutant dans le VBA donc le code n'est probablement pas optimiser pour la fonction "ActiveSheet.Shapes.AddPicture".
Je cherche actuellement à régler le ratio de l'image qui n'est plus proportionnelle a l'originale.
ActiveSheet.Pictures.Insert(fich).Selectpar :
ActiveSheet.Shapes.AddPicture(fich, False, True, ActiveCell.Left, ActiveCell.Top, largeur, hauteur).Select
Les images sont maintenant sauvegarder avec Excel.
Pour réduire la taille des images... au moment de la sauvegarde, dans "outils/compressions d'images", utiliser l'option "Utiliser la résolution du document".
Je copie ici le code retoucher... par contre je suis débutant dans le VBA donc le code n'est probablement pas optimiser pour la fonction "ActiveSheet.Shapes.AddPicture".
Je cherche actuellement à régler le ratio de l'image qui n'est plus proportionnelle a l'originale.
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 = "Q:\Parts\Catalog\Photos\not_available.jpg" ' 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, lmax 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 'À partir d'ici le code demande une révision.. mais fonctionne tout de meme ActiveSheet.Shapes.AddPicture(fich, False, True, ActiveCell.Left, ActiveCell.Top, largeur, hauteur).Select 'ouverture image With Selection.ShapeRange .LockAspectRatio = True 'conserver les proportions .Height = h - 4 'hauteur de l'image = hauteur des lignes - 4 .Left = c.Offset(0, h).Left + 2 'à gauche colonne A (sinon tu calcules avec la largeur de colonne) .Top = c.Top + 2 'et positionner verticalement If .Width > lmax Then lmax = .Width ' limitation largeur colonne If lmax > 500 Then lmax = 500 c.Offset(0, h).ColumnWidth = lmax + 4 End With End If Next c Exit Sub errfich: fich = imgDefaut Resume Next End Sub
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 249
27 févr. 2012 à 18:01
27 févr. 2012 à 18:01
Maintenant que tu le dis je me rappelle d'un autre bug sur 2010 où la solution passait déjà par l'intégration des images en fond d'une forme.
Si gb passe par là je lui laisse la main pour t'aider à améliorer le code, là je ne peux pas...
eric
Si gb passe par là je lui laisse la main pour t'aider à améliorer le code, là je ne peux pas...
eric
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 752
Modifié par pijaku le 28/02/2012 à 10:57
Modifié par pijaku le 28/02/2012 à 10:57
Bonjour,
Conserver le ratio d'une image équivaut à multiplier la hauteur et la largeur de cette image par le même rapport.
Dans ton cas, on connait la hauteur souhaitée : h.
Il faut donc calculer ce rapport en faisant : h / hauteur de l'image
Ensuite, on peux avec une petite fonction personnalisée, mettre notre image à la bonne échelle. Suffit de mettre, en paramètre à cette fonction deux choses : notre objet image et le rapport.
La fonction :
L'appel de cette fonction :
L'appel de la fonction adapté dans ton code :
Cordialement,
Franck P
Conserver le ratio d'une image équivaut à multiplier la hauteur et la largeur de cette image par le même rapport.
Dans ton cas, on connait la hauteur souhaitée : h.
Il faut donc calculer ce rapport en faisant : h / hauteur de l'image
Ensuite, on peux avec une petite fonction personnalisée, mettre notre image à la bonne échelle. Suffit de mettre, en paramètre à cette fonction deux choses : notre objet image et le rapport.
La fonction :
Function AjusterImage(Imag As Object, Rapport As Single) Dim Largeur As Single Dim Hauteur As Single Largeur = Imag.Width Hauteur = Imag.Height Largeur = Largeur * Rapport Hauteur = Hauteur * Rapport Imag.Width = Largeur Imag.Height = Hauteur End Function
L'appel de cette fonction :
Dim h As Long, Rapport As Single Const hDefaut = 75 h = InputBox("Hauteur des lignes :", "Choix hauteur", hDefaut) h = h - 4 With Selection.ShapeRange Rapport = h / Selection.Height AjusterImage Selection, Rapport End With
L'appel de la fonction adapté dans ton code :
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 = "Q:\Parts\Catalog\Photos\not_available.jpg" ' 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, lmax As Long, Rapport As Single Dim c As Range, numfich As Integer Dim fich 'bla bla bla ICI TON DEBUT DE CODE With Selection.ShapeRange Rapport = h / .Height AjusterImage Selection, Rapport .Left = c.Offset(0, h).Left + 2 'à gauche colonne A (sinon tu calcules avec la largeur de colonne) .Top = c.Top + 2 'et positionner verticalement If .Width > lmax Then lmax = .Width ' limitation largeur colonne If lmax > 500 Then lmax = 500 c.Offset(0, h).ColumnWidth = lmax + 4 End With ' bla bla bla ICI LA FIN DE TON CODE
Cordialement,
Franck P
Merci beaucoup pour voitre aide!
Vous êtes des pros!
(Résolu)
Vous êtes des pros!
(Résolu)
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 249
29 févr. 2012 à 07:12
29 févr. 2012 à 07:12
Re,
n'oublie pas de supprimer les images avant de les rafraichir...
eric
n'oublie pas de supprimer les images avant de les rafraichir...
eric
Modifié par eriiic le 24/02/2012 à 04:03
J'ajoute que tu peux lire tout le fil (en le triant par date pour faciliter la lecture) car des évolutions ont eu lieu en fonction de demandes d'utilisateurs.
Mais surtout dans ton cas, comme la macro sera lancée plusieurs fois, il faudra supprimer toutes les images avant de la relancer. Sinon les images vont se superposer et alourdir le fichier inutilement..
eric
24 févr. 2012 à 14:51
Éric, ton programme semble être parfait pour mes besoins... je te lève mon chapeau pour ce petit bijou.