Excel prend mes images a 90
Bonjour à tous,
Meilleurs voeux pour cette année 2024
Je me tourne vers vous en total désespoir, j'ai passé l'après midi sur Excel a essayer de résoudre le problème en vain.
Je suis en train de créer un fichier ou je dois insérer des photos. Et je voulais que quand on clique sur la photos, elle s'agrandissent, puis revienne a la normale en recliquant dessus. J'ai chercher un peu sur internet et j'ai trouvé un procédure:
j'ai suivis cette procédure pour la première image et cela a fonctionné nickel.
J'ai voulu faire la deuxième image et maintenant excel considère mes images tourné a 90°
Sur l'image suivante, on voit bien que ma photo est normale avec rotation a 0°, et le symbole de flèche qui tourne au dessus de la photo
par contre maintenant des que j'essaie de mettre une autre image il me met une rotation a 90° et le symbole de flèche qui tourne est sur la gauche de l'image, pourtant l'image est exactement dans le même sens (j'ai essayer avec la même photo pour être sur que cela ne vient pas de mes photos)
le soucis c'est que du coup les photos ne se mette pas correctement, la hauteur et la largeur s'inverse, et quand je clique pour agrandir, la photo ne s'ouvre pas du même coté que la précédente.
Impossible de remettre la photo dans le bon sens sans tourner la photo, si je passe l'orientation a 0°, la photo tourne de 90°, ce qui forcement ne me convient pas.
J'ai tout essayer, supprimer la maccro, essayer sur un autre tableur vierge, réinitialiser excel en supprimant les clé de registre, j'ai même désinstaller office, supprimer tous les fichiers, même ceux cachés, qui avez un rapport de prêt ou de loin avec Excel. Rien a faire. Plus moyen d'avoir ma photo rotation a 0° et la flèche qui tourne au dessus de ma photo.
Pourriez vous m'aider a résoudre le problème svp
Bonsoir,
sans fichier je ne peux rien faire pour vous...
Par contre je peux vous fournir un code simplifié que ne sélectionne pas les images, et lors de l'agrandissement cette dernière se met au premier plan :
Sub Grand()
With ActiveSheet.Shapes(Application.Caller)
.Width = .Width * 2
.Height = .Height * 2
.OnAction = "Petit"
.ZOrder msoBringToFront
End With
End Sub
Sub Petit()
With ActiveSheet.Shapes(Application.Caller)
.Width = .Width / 2
.Height = .Height / 2
.OnAction = "Grand"
End With
End Sub
Sub Init()
On Error Resume Next
For Each Sh In ActiveSheet.Shapes
Sh.OnAction = "Grand"
Next Sh
End Sub@ bientôt
LouReeD
Bonjour,
Merci pour votre réponse et pour la maccro.
Malheureusement cela ne résout pas mon problème.
Je peux vous joindre mon fichier, mais je ne pense pas que cela vienne du fichier, vu que même lorsque je lance un classeur vierge et que je met une photo j'ai le même problème.
Je vous joint ci dessous le fichier en question
Merci
bon apparemment cela vient bien de mes photos, j'ai essayer avec une image prise sur le net pas de problème. J'ai essayer de lancer ma photos avec le logiciel photo de windows et d'en enregistré une copie, avec la copie pas de problème non plus.
Le plus bizarre c'est que ca ne me faisait pas ca au début, Excel c'est mis a tout décalé d'un coup.
Bref dans l'absolu j'ai trouvé une solution de bidouillage. Mais si quelqu'un a une explication pour moi je suis preneur.
Encore merci pour le code
re
bonjour
oui j'en ai une peut être d'explication
exemple j'ai des photos de de 2680x3752( donc de très grande taille)
si tes shapes sont ajoutée par vba a l'aide de la collection picture le prorata (800x600 because rétrocompatibilité avec les versions antérieures d'excel) sera automatique effectué
donc tout ce qui est dimensions par vba sera erroné
par contre si on ajoute la même image par la collection shape.addpicture là l'image sera intégré aux dimsions originales
bien entendu toute les propriétés concernant la taille par vba sera alors exacte
Bonsoir,
perso je changerais votre code avec le mien tout de même car ce dernier ne sélectionne pas les Shapes images, c'est plus propre et moins chronophage au niveau d'exécution bien que là ça ne se sent pas trop !
Tenez nous au courant quant à la proposition de patrickT
@ bientôt
LouReeD
Bonsoir Neo62950, LouReeD, PatrickT,
Il semblerait que l'image selon le message posté Mercredi à 18h07 s'est formatée à la hauteur de la ligne de la cellule.
Contrôler que la propriété de déplacement de cette image (Voir Format de l'image, Propriétés) ne soit pas différente de:
Déplacer sans dimensionner avec les cellules.
Pour ma part, j'ai l'habitude lorsqu'on a affaire à un nombre d'images qui sera fixe et n'évolue pas dans le fichier (Exemple: un jeu de 36 cartes) de nommer les cartes par un nom les décrivant suivi de son hauteur et de sa largeur. Comme DT_90_74,85149 pour une Dame de Trèfle. Ainsi avec le code ci-dessous.
Sub TailleImg()
'L'image au format d'origine est haute de 90 et large de 74,85149
Nom = Application.Caller: Taille = Split(Nom, "_")
Larg = CDbl(Taille(1)): Haut = CDbl(Taille(2))
With ActiveSheet
ActHaut = .Shapes(Nom).Height
.Shapes(Nom).Height = IIf(ActHaut < Haut * 1.9, Haut * 2, Haut)
.Shapes(Nom).Width = IIf(ActHaut < Haut * 1.9, Larg * 2, Larg)
End With
End SubL'image originale étant au format le plus petit.
Elle sera ensuite au clic gauche au format double
Et reviendras par un nouveau clic à son format original.