coller une image automatiquement: taille et emplacement
16 réponses
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).
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.
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" <fdecourt@gmail.com> a écrit dans le message de
news:5fa93e18-2c45-4e63-beed-a51d79f123b5@e27g2000yqd.googlegroups.com...
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
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.
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.
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" <i@v> a écrit dans le message de
news:uHokdI3cKHA.744@TK2MSFTNGP05.phx.gbl...
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" <i@v> a écrit dans le message de
news:uPUzVV2cKHA.1028@TK2MSFTNGP06.phx.gbl...
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" <fdecourt@gmail.com> a écrit dans le message de
news:1ffb6186-1c92-4040-92d9-a30215fce335@r24g2000yqd.googlegroups.com...
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
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.
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.
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) "
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.
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.
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
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.
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.
C'est parfait, merci beaucoup....
et désolé, je dois être fatigué, je suis passé à travers!
à bientôt
Greg
"FdeCourt" <fdecourt@gmail.com> a écrit dans le message de
news:c3796cf8-5190-4f2a-b94c-afc1e1a54aa3@d21g2000yqn.googlegroups.com...
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
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