Macro pour agrandir image
Résolu/Fermé
A voir également:
- Macro pour agrandir image
- Comment agrandir une image - Guide
- Image iso - Guide
- Macro word - Guide
- Macro logiciel - Télécharger - Organisation
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
6 réponses
pilas31
Messages postés
1825
Date d'inscription
vendredi 5 septembre 2008
Statut
Contributeur
Dernière intervention
24 avril 2020
643
24 avril 2015 à 15:09
24 avril 2015 à 15:09
Bonjour,
C'est un problème intéressant. J'ai cherché une solution simple.
L'idée c'est d'associer une macro à chaque image.
Lorsqu'on clique, la macro double la taille de l'image et associe une autre macro de sorte que quand on reclique elle divise par 2 la taille de l'image et ré-associe la macro initiale.
Au début il faut initialiser afin que toutes les images aient la macro associée dés le départ.
D'où le code des trois macros !
Il faut copier ces trois macros dans un module vba.
ALt+ F11 on va dans l'éditeur vba puis insérer module et copier le code ci-dessus.
Puis il faut lancer la macro "initialiser" dans la feuille.
Alt+F8 choisir et exécuter la macro "initialiser"
Voila. A tester et merci du retour pour éventuelles améliorations.
Par exemple lancer initialiser sur toutes les feuilles à l'ouverture du classeur.
C'est un problème intéressant. J'ai cherché une solution simple.
L'idée c'est d'associer une macro à chaque image.
Lorsqu'on clique, la macro double la taille de l'image et associe une autre macro de sorte que quand on reclique elle divise par 2 la taille de l'image et ré-associe la macro initiale.
Au début il faut initialiser afin que toutes les images aient la macro associée dés le départ.
D'où le code des trois macros !
Private Sub Agrandir_image() ActiveSheet.Shapes.Range(Array(Application.Caller)).Select Selection.ShapeRange.ScaleHeight 2, msoFalse Selection.ShapeRange.ScaleWidth 2, msoFalse Selection.OnAction = "Diminuer_image" ActiveSheet.Shapes(Application.Caller).TopLeftCell.Select End Sub Private Sub Diminuer_image() ActiveSheet.Shapes.Range(Array(Application.Caller)).Select Selection.ShapeRange.ScaleHeight 0.5, msoFalse Selection.ShapeRange.ScaleWidth 0.5, msoFalse Selection.OnAction = "Agrandir_image" End Sub Sub initialiser() For Each Image In ActiveSheet.Shapes Image.OnAction = "Agrandir_image" Next Image End Sub
Il faut copier ces trois macros dans un module vba.
ALt+ F11 on va dans l'éditeur vba puis insérer module et copier le code ci-dessus.
Puis il faut lancer la macro "initialiser" dans la feuille.
Alt+F8 choisir et exécuter la macro "initialiser"
Voila. A tester et merci du retour pour éventuelles améliorations.
Par exemple lancer initialiser sur toutes les feuilles à l'ouverture du classeur.
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 303
Modifié par michel_m le 25/04/2015 à 14:40
Modifié par michel_m le 25/04/2015 à 14:40
Bonjour Paola
Bonjour Pilas, ca va ?) :o)
une alternative
la photo est agrandie par survol de la colonne C
https://www.cjoint.com/?3DzoTRtU77f
mais je fourgonne ta solution, Pilas! @+
Michel
Bonjour Pilas, ca va ?) :o)
une alternative
la photo est agrandie par survol de la colonne C
https://www.cjoint.com/?3DzoTRtU77f
mais je fourgonne ta solution, Pilas! @+
Michel
pilas31
Messages postés
1825
Date d'inscription
vendredi 5 septembre 2008
Statut
Contributeur
Dernière intervention
24 avril 2020
643
27 avril 2015 à 14:14
27 avril 2015 à 14:14
Bonjour Paola
Et bonjour Michel.
Oui je sais d'où vient l'erreur, j'ai été un peu simpliste !
Si dans le fichier il y a des boutons ou d'autre type de formes que des images, cela ne marche pas. D'où une nouvelle mouture, on teste que ce ne sont que les images auxquelles on associe la macro :
De plus je mets au premier plan l'image agrandie et en arrière l'image rétrécie.
Voilà.
La solution de Michel est particulièrement élégante (je suis même jaloux !).
Et bonjour Michel.
Oui je sais d'où vient l'erreur, j'ai été un peu simpliste !
Si dans le fichier il y a des boutons ou d'autre type de formes que des images, cela ne marche pas. D'où une nouvelle mouture, on teste que ce ne sont que les images auxquelles on associe la macro :
Private Sub Agrandir_image() ActiveSheet.Shapes.Range(Array(Application.Caller)).Select Selection.ShapeRange.ScaleHeight 2, msoFalse Selection.ShapeRange.ScaleWidth 2, msoFalse Selection.ShapeRange.ZOrder msoBringToFront Selection.OnAction = "Diminuer_image" ActiveSheet.Shapes(Application.Caller).TopLeftCell.Select End Sub Private Sub Diminuer_image() ActiveSheet.Shapes.Range(Array(Application.Caller)).Select Selection.ShapeRange.ScaleHeight 0.5, msoFalse Selection.ShapeRange.ScaleWidth 0.5, msoFalse Selection.ShapeRange.ZOrder msoSendToBack Selection.OnAction = "Agrandir_image" End Sub Sub initialiser() For Each Image In ActiveSheet.Shapes If Image.Type = msoPicture Or Image.Type = msoLinkedPicture Then Image.OnAction = "Agrandir_image" End If Next Image End Sub
De plus je mets au premier plan l'image agrandie et en arrière l'image rétrécie.
Voilà.
La solution de Michel est particulièrement élégante (je suis même jaloux !).
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 303
27 avril 2015 à 14:37
27 avril 2015 à 14:37
je suis même jaloux !
Salut Pilas !
Meuuhnon !
D'ailleurs, il y a des photos qui doivent peut-^tre te dire quelque chose! ;o)
(y'a un très non restau pas cher aux Salleles vallée de l'Ibie!)
Salut Pilas !
Meuuhnon !
D'ailleurs, il y a des photos qui doivent peut-^tre te dire quelque chose! ;o)
(y'a un très non restau pas cher aux Salleles vallée de l'Ibie!)
pilas31
Messages postés
1825
Date d'inscription
vendredi 5 septembre 2008
Statut
Contributeur
Dernière intervention
24 avril 2020
643
>
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
27 avril 2015 à 14:43
27 avril 2015 à 14:43
Oui je connais pas mal de ces endroits !! mais j'ai beaucoup moins l'occasion d'y aller hélas !
Bonjour, et merci beaucoup !
Je me cassais la tête dessus depuis des jours, et quand on voit le code bien écrit ça a l'air tout simple ^^
J'ai testé sur mon fichier, et ça marche parfaitement !
Juste quand la macro s'exécute une partie de l'image agrandie est parfois masquée par l'image de la ligne en dessous, mais il suffit que je mette toutes mes images en arrière plan et ce sera résolu :)
Pourquoi faudrait-il lancer initialiser sur toutes les feuilles à l'ouverture du classeur ?
J'ai fermé le document et quand je l'ouvre a nouveau la macro est toujours active sur les images.
Merci beaucoup en tout cas, c'est exactement ce que j'avais en tête ! :D
Je me cassais la tête dessus depuis des jours, et quand on voit le code bien écrit ça a l'air tout simple ^^
J'ai testé sur mon fichier, et ça marche parfaitement !
Juste quand la macro s'exécute une partie de l'image agrandie est parfois masquée par l'image de la ligne en dessous, mais il suffit que je mette toutes mes images en arrière plan et ce sera résolu :)
Pourquoi faudrait-il lancer initialiser sur toutes les feuilles à l'ouverture du classeur ?
J'ai fermé le document et quand je l'ouvre a nouveau la macro est toujours active sur les images.
Merci beaucoup en tout cas, c'est exactement ce que j'avais en tête ! :D
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Paola335
Messages postés
1
Date d'inscription
lundi 27 avril 2015
Statut
Membre
Dernière intervention
27 avril 2015
27 avril 2015 à 08:21
27 avril 2015 à 08:21
Bonjour,
Ce matin je suis retournée au travail, et j'ai voulu appliquer la macro à mon fichier, mais ça ne fonctionne pas, Excel me dit qu'il y a un problème à la ligne Image.OnAction = "Agrandir_image".
Je suis un peu étonnée, parce que quand j'ai essayé chez moi ce week end la macro se déroulait bien.
Cela pourrait-il venir du fait que chez moi j'ai Excel 2013 et ici Excel 2010 ?
Je ne vois pas d'autres choses qui ont changé.
Merci d'avance,
Paola
Ce matin je suis retournée au travail, et j'ai voulu appliquer la macro à mon fichier, mais ça ne fonctionne pas, Excel me dit qu'il y a un problème à la ligne Image.OnAction = "Agrandir_image".
Je suis un peu étonnée, parce que quand j'ai essayé chez moi ce week end la macro se déroulait bien.
Cela pourrait-il venir du fait que chez moi j'ai Excel 2013 et ici Excel 2010 ?
Je ne vois pas d'autres choses qui ont changé.
Merci d'avance,
Paola