Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

coller une image automatiquement: taille et emplacement

16 réponses
Avatar
Greg
Bonjour,

Est-il possible de créer une macro qui permette de coller automatiquement
une image du presse papier à des dimensions précises:
http://cjoint.com/?lCoNgOceS5

Je souhaite coller en A6, ou dans une fenêtre aux mêmes dimensions, un
document qui conserverait ses proportions et exploiterait toute la largeur
ou toute la hauteur (selon le document).


Pouvez-vous m'aider?

Merci

Greg

6 réponses

1 2
Avatar
Greg
Merci pour les précisions,

J'ignore tellement de choses que je cherche souvent les limites de ce que
l'on peut faire. J'ai maintenant trois solutions qui s'offrent à moi.

Meeci encore

Greg

"FdeCourt" a écrit dans le message de
news:
Pas sur de comprendre la.....
Comment veux tu que la micro sache quel chemin proposé si a un moment
tu ne lui indique pas ?
Avec Application.GetOpenFilename("Fichierimage,*.bmp;*.jpg;*.jpeg", ,
"Choisissez votre fichier", , False) tu permets à l'utilisateur de
choisir son fichier n'importe ou sur l'ordinateur (ou le réseau).

Quel chemin d'accès supplémentaire veux tu lui indiquer ?
Si tu souhaite que la boite de dialogue s’ouvre avec un chemin par
défaut, il faut bien lui indiquer lequel (mes documents par défaut je
crois).
ChDir "C:zaza" > fonctionne pour indiquer ce chemin comme chemin par
défaut.
ChDir ThisWorkbook.path va choisir comme chemin par défaut le dossier
du classeur

Cordialement,

F.
Avatar
Greg
Une dernière précision concernant le code proposé: tout fonctionne bien sauf
si l'on ferme la fenêtre au lieu de choisir une image. Une erreur 400
apparaît alors...




"isabelle" a écrit dans le message de
news:
bonjour Greg,

si tu recherche le répertoire du fichier en cour,

x = ThisWorkBook.Path

isabelle

Greg a écrit :
Merci Isabelle,

Je me suis certainment mal expliqué sur ce que j'attendais.

Dans le code que tu proposes, il faut rentrer le chemin dans le code.
Personnellement, je souhaitais que ce chemin puisse être défini par
défaut par l'utilisateur.
Macro 1 (à partir du fichier sélectionné dans un répertoire, la macro
colle en lieu et place aux bonnes dimensions): celle qui fait le boulot.
CA, c'est OK, impec, nickel!
Macro 2: celle qui indique à la macro 1 le chemin par défaut. Bref, une
sorte de macro, qui agit sur une autre.

Je ne suis peut-être toujours pas clair.... :-o(




"isabelle" a écrit dans le message de
news:
bonjour Greg,

oui avec ChDir,

Sub Macro1()
ChDir "C:zaza"
monFichier =
Application.GetOpenFilename("Fichierimage,*.bmp;*.jpg;*.jpeg", ,
"Choisissez votre fichier", , False)
With ActiveSheet.Pictures.Insert(monFichier)
.Placement = xlFreeFloating
.PrintObject = True
.Locked = False
With .ShapeRange
.LockAspectRatio = msoFalse
.Top = Range("A6:C7").Top
.Left = Range("A6:C7").Left
.Width = Range("A6:C7").Width
.Height = Range("A6:C7").Height
End With
End With
End Sub

isabelle

Greg a écrit :
Re!

Juste une dernière chose: peut-on créer une macro qui indique le chemin
par défaut qu'il faut emprunter pour ouvrir le dossier dans lequel se
trouve les images? Si possible, je souhaite qu'il soit possible de le
faire sans rentrer dans le code (ce fichier s'adresse à des débutants,
simples utilisateurs d'excel)...

Merci

Greg


"FdeCourt" a écrit dans le message de
news:
Salut,

Avec l'instruction :
Application.GetOpenFilename(, , , , True) :


Sub Macro2()
monFichier = Application.GetOpenFilename("Fichier
image,*.bmp;*.jpg;*.jpeg", , "Choisissez votre fichier", , False)
With ActiveSheet.Pictures.Insert(monFichier)
.Placement = xlFreeFloating
.PrintObject = True
.Locked = False
With .ShapeRange
.LockAspectRatio = msoFalse
.Top = Range("A6:C7").Top
.Left = Range("A6:C7").Left
.Width = Range("A6:C7").Width
.Height = Range("A6:C7").Height
End With
End With

End Sub


Cordialement,

F.












Avatar
FdeCourt
C'est normal, en appuyant sur Annuler, monFichier est renseigner avec
False, puis le code continue de s'executer.

Ajoute ceci juste au dessus de "With ActiveSheet.Pictures.Insert
(monFichier) "

If monFichier = False Then Exit Sub

Cordialement,

F.
Avatar
Greg
Désolé, ça ne fonctionne pas. Fais-je une erreur?

Sub Macro2()
monFichier = Application.GetOpenFilename("Fichier image,*.bmp;*.jpg;*.jpeg",
, "Choisissez votre fichier", , False)
With ActiveSheet.Pictures.Insert(monFichier)
If monFichier = False Then Exit Sub
.Placement = xlFreeFloating
.PrintObject = True
.Locked = False
With .ShapeRange
.LockAspectRatio = msoFalse
.Top = Range("A6:C7").Top
.Left = Range("A6:C7").Left
.Width = Range("A6:C7").Width
.Height = Range("A6:C7").Height
End With
End With

End Sub

Cordialement

Greg

"FdeCourt" a écrit dans le message de
news:
C'est normal, en appuyant sur Annuler, monFichier est renseigner avec
False, puis le code continue de s'executer.

Ajoute ceci juste au dessus de "With ActiveSheet.Pictures.Insert
(monFichier) "

If monFichier = False Then Exit Sub

Cordialement,

F.


Avatar
FdeCourt
Oui,
il faut mettre
If monFichier = False Then Exit Sub
juste au dessUs du With...
Sub Macro2()
monFichier = Application.GetOpenFilename("Fichier
image,*.bmp;*.jpg;*.jpeg",
, "Choisissez votre fichier", , False)
If monFichier = False Then Exit Sub
With ActiveSheet.Pictures.Insert(monFichier)
.Placement = xlFreeFloating
.PrintObject = True
.Locked = False
With .ShapeRange
.LockAspectRatio = msoFalse
.Top = Range("A6:C7").Top
.Left = Range("A6:C7").Left
.Width = Range("A6:C7").Width
.Height = Range("A6:C7").Height
End With
End With
End Sub

Cordialement,

F.
Avatar
Greg
C'est parfait, merci beaucoup....

et désolé, je dois être fatigué, je suis passé à travers!

à bientôt

Greg

"FdeCourt" a écrit dans le message de
news:
Oui,
il faut mettre
If monFichier = False Then Exit Sub
juste au dessUs du With...
Sub Macro2()
monFichier = Application.GetOpenFilename("Fichier
image,*.bmp;*.jpg;*.jpeg",
, "Choisissez votre fichier", , False)
If monFichier = False Then Exit Sub
With ActiveSheet.Pictures.Insert(monFichier)
.Placement = xlFreeFloating
.PrintObject = True
.Locked = False
With .ShapeRange
.LockAspectRatio = msoFalse
.Top = Range("A6:C7").Top
.Left = Range("A6:C7").Left
.Width = Range("A6:C7").Width
.Height = Range("A6:C7").Height
End With
End With
End Sub

Cordialement,

F.


1 2