Zoomer / Dézoomer une image par son centre

Valentin_Loupe

XLDnaute Occasionnel
Bonsoir à tous,

Je voudrais savoir si il était possible de Zoomer puis Dézoomer une image dans une feuille et que le point de référence soit le centre. Ainsi le centre ne bouge jamais, et on multiplie la taille de l'image par 2 lorsque l'on zoome et divise sa taille par 2 lorsque l'on dézoome ?

Merci d'avance,

Bonne soirée,

Valentin
 

Roland_M

XLDnaute Barbatruc
Re : Zoomer / Dézoomer une image par son centre

bonsoir

zoom je sais mais pour agrandir voir diminuer sur base de cet exemple !?

Sub AgrandirImage()
Selection.ShapeRange.LockAspectRatio = msoTrue
Selection.ShapeRange.Height = Selection.ShapeRange.Height * 1.1 '<<<<< à voir selon !?
Selection.ShapeRange.Width = Selection.ShapeRange.Width * 1.1 '<<<<< à voir selon !?
Selection.ShapeRange.Rotation = 0
End Sub
 

Valentin_Loupe

XLDnaute Occasionnel
Re : Zoomer / Dézoomer une image par son centre

Bonsoir le forum, bonsoir Roland_M,

Merci pour ta réponse, je viens de tester mais cela ne fonctionne pas.
Par contre, j'ai écris :

Code:
If Shapes("Image 2").Height = 150 Then
Shapes("Image 2").Height = 100
ElseIf Shapes("Image 2").Height = 100 Then
Shapes("Image 2").Height = 150
End If

Et là, ca fait bien ce que je veux mais en gardant le point en haut à gauche comme référence !

En fait, je voudrais que ce soit le centre de l'image qui ne bouge pas ?

Quelqu'un a t-il une idée ?

Merci d'avance,

Valentin
 

Valentin_Loupe

XLDnaute Occasionnel
Re : Zoomer / Dézoomer une image par son centre

Bonsoir à tous,

J'ai tenté d'adapter mais sans succès, je ne parviens pas à centrer mon image de base. Elle s'agrandit ou se réduit toujours en prenant comme base le point haut gauche !

Quelqu'un a t-il une idée ?

Merci d'avance,

Valentin
 

Roland_M

XLDnaute Barbatruc
Re : Zoomer / Dézoomer une image par son centre

bonsoir

as-tu bien respecté ceci: ******

Application.ScreenUpdating = False
Set Plage = Range("A1")' ****** la selection exemple ici "A1" à toi de voir
On Error Resume Next
With ActiveSheet.Shapes(Image)
.Width = CursZoom.Value
.Height = (.Width / 4) * 3
.Left = Plage.Left + ((Plage.Width / 2) - (.Width / 2)) ' ****** ceci identique
.Top = Plage.Top + ((Plage.Height / 2) - (.Height / 2))' ****** ceci identique
End With
 

Valentin_Loupe

XLDnaute Occasionnel
Re : Zoomer / Dézoomer une image par son centre

Bonsoir à tous, bonsoir Roland_M,

Merci, oui ca y est c'est ok ca fonctionne nickel !
Merci encore

Par contre, j'ai voulu insérer cela dans une fonction :

Code:
Function CentrerImages()
    For i = 4 To 5
        Shapes("Image i").Left = Range("I14:I15").Left + ((Range("I14:I15").Width / 2) - (Shapes("Image i").Width / 2))
        Shapes("Image i").Top = Range("I14:I15").Top + ((Range("I14:I15").Height / 2) - (Shapes("Image i").Height / 2))
    Next
End Function

Pourquoi ai-je une erreur qui me dit : Erreur Système ... Paramètre Incorrect ?

Bonne soirée

Valentin
 

ftho

XLDnaute Occasionnel
Re : Zoomer / Dézoomer une image par son centre

Code:
Shapes("Image i")
doit s'écrire
Code:
Shapes("Image " & i)

Pourquoi utiliser une Fonction et pas une Sub ? Une Fonction sert à renvoyer une valeur, pas à faire une mise en forme.

Cdlt
 
Dernière édition:

Valentin_Loupe

XLDnaute Occasionnel
Re : Zoomer / Dézoomer une image par son centre

Bonsoir ftho, bonsoir à tous,

Merci, ca fonctionne, en effet j'ai compris la chose !
Je passe par des fonctions parce que je me suis rendu compte que ca marchait ! J'apprends tout seul lol et donc quand ce que je viens d'écrire fonctionne, je le garde !

Je voudrais maintenant savoir comment je pourrais faire pour écrire le nom de l'image sélectionnée dans la cellule A1 (le nom qui apparait à gauche de la barre de formule)

En fait, sur ma feuille j'ai plusieurs images et le nom de chaque image est "Image 1", "Image 2", "Image 3"...
Je voudrais récupérer en cellule A1 uniquement le 1, 2 3... lors du clic sur chaque image qui est affectée à une macro

Je sais : Range("A1") = mais après je ne sais pas encore !

Merci d'avance,

Valentin
 
Dernière édition:

ftho

XLDnaute Occasionnel
Re : Zoomer / Dézoomer une image par son centre

Dans la procédure appelée par le clic sur l'image, tu peux utiliser l'instruction
Application.Caller qui renvoie le nom de l'objet.

Pour récupérer le n° de l'image, tu peux essayer ceci
Code:
Range("A1") = Split(Application.Caller, " ")(1)
 

Discussions similaires

Statistiques des forums

Discussions
312 489
Messages
2 088 852
Membres
103 974
dernier inscrit
chmikha