Besoin code macro svp
Résolu/Fermé
ButteDuLac
Messages postés
495
Date d'inscription
jeudi 5 mars 2009
Statut
Membre
Dernière intervention
24 octobre 2020
-
Modifié par ButteDuLac le 1/03/2016 à 21:39
ButteDuLac Messages postés 495 Date d'inscription jeudi 5 mars 2009 Statut Membre Dernière intervention 24 octobre 2020 - 4 mars 2016 à 15:51
ButteDuLac Messages postés 495 Date d'inscription jeudi 5 mars 2009 Statut Membre Dernière intervention 24 octobre 2020 - 4 mars 2016 à 15:51
A voir également:
- Besoin code macro svp
- Code asci - Guide
- Code puk bloqué - Guide
- Code telephone oublié - Guide
- Code blocks free - Télécharger - Langages
- Code windows 10 - Guide
2 réponses
m@rina
Messages postés
20064
Date d'inscription
mardi 12 juin 2007
Statut
Contributeur
Dernière intervention
23 avril 2024
11 271
Modifié par m@rina le 3/03/2016 à 02:24
Modifié par m@rina le 3/03/2016 à 02:24
Bonsoir,
La position d'une image avec habillage est toujours relative à quelque chose : à la marge, à la page, au paragraphe...
Par défaut, la position de cette image est relative au paragraphe auquel elle est ancrée. Je rappelle qu'une image avec habillage est toujours ancrée à un paragraphe.
Donc, dans mon code, on doit mettre les valeurs par rapport à ce paragraphe.
Maintenant, si tu préfères donner une position par rapport à autre chose, il faut le mentionner dans le code. Par rapport à la page, la valeur sera 1, par rapport aux marges, la valeur sera 0, etc. A noter qu'il faut le préciser pour les deux positions : verticale et horizontale. On peut décider par exemple une position horizontale par rapport à la marge et une verticale par rapport à la page. Voici le code :
Concernant la taille de l'image, il vaut mieux ne donner qu'une valeur pour la hauteur (ou pour la largeur) et dire qu'on veut conserver l'échelle. Sinon, ça oblige à mettre des valeurs qui risquent de déformer l'image.
En résumé, voici un exemple de code qui insère l'image avec une position horizontale à 7 cm du bord gauche de la page et 3 cm du haut de la page. L'image fera 2 cm de hauteur et conservera son échelle. Je te laisse mettre tes dimensions en pouces :
Est ce que c'est plus clair ?
m@rina
ps : je détaille le tout dans un article ici :
https://faqword.com/index.php/word/faq-word/objets-graphiques/926-comment-en-vba-inserer-une-image-avec-habillage-et-indiquer-sa-taille-et-sa-position
Nous ne sommes pas devins : n'oubliez pas d'indiquer la version du logiciel utilisé, et comment vous avez procédé.
La position d'une image avec habillage est toujours relative à quelque chose : à la marge, à la page, au paragraphe...
Par défaut, la position de cette image est relative au paragraphe auquel elle est ancrée. Je rappelle qu'une image avec habillage est toujours ancrée à un paragraphe.
Donc, dans mon code, on doit mettre les valeurs par rapport à ce paragraphe.
Maintenant, si tu préfères donner une position par rapport à autre chose, il faut le mentionner dans le code. Par rapport à la page, la valeur sera 1, par rapport aux marges, la valeur sera 0, etc. A noter qu'il faut le préciser pour les deux positions : verticale et horizontale. On peut décider par exemple une position horizontale par rapport à la marge et une verticale par rapport à la page. Voici le code :
RelativeHorizontalPosition = 1
RelativeVerticalPosition = 1
Concernant la taille de l'image, il vaut mieux ne donner qu'une valeur pour la hauteur (ou pour la largeur) et dire qu'on veut conserver l'échelle. Sinon, ça oblige à mettre des valeurs qui risquent de déformer l'image.
En résumé, voici un exemple de code qui insère l'image avec une position horizontale à 7 cm du bord gauche de la page et 3 cm du haut de la page. L'image fera 2 cm de hauteur et conservera son échelle. Je te laisse mettre tes dimensions en pouces :
Sub logo2()
Dim oLogo As Shape
Set oLogo = ActiveDocument.Shapes.AddPicture(FileName:="P:\monimage.jpg")
With oLogo
.RelativeHorizontalPosition = 1
.RelativeVerticalPosition = 1
.Left = CentimetersToPoints(7)
.Top = CentimetersToPoints(3)
.LockAspectRatio = msoTrue
.Height = CentimetersToPoints(2)
End With
End Sub
Est ce que c'est plus clair ?
m@rina
ps : je détaille le tout dans un article ici :
https://faqword.com/index.php/word/faq-word/objets-graphiques/926-comment-en-vba-inserer-une-image-avec-habillage-et-indiquer-sa-taille-et-sa-position
Nous ne sommes pas devins : n'oubliez pas d'indiquer la version du logiciel utilisé, et comment vous avez procédé.
m@rina
Messages postés
20064
Date d'inscription
mardi 12 juin 2007
Statut
Contributeur
Dernière intervention
23 avril 2024
11 271
Modifié par m@rina le 2/03/2016 à 01:26
Modifié par m@rina le 2/03/2016 à 01:26
Bonsoir,
D'une manière générale, ce n'est jamais très bon de recopier des bouts de code et d'essayer de les faire fonctionner avec d'autres cas.
Vu que tu souhaites (si j'ai bien compris) insérer l'image avec habillage, inutile de convertir en Shape, autant l'insérer directement en Shape. Essaie plutôt ceci :
Remplace les valeurs Left et Top par les tiennes : ce sont les emplacements de l'image par rapport au paragraphe auquel est ancré l'image.
A noter que les valeurs sont en points, et que pour les mettre en pouces, c'est comme ça, par exemple :
- Pour ceux qui aiment les pouces :
- Pour ceux qui aiment les centimètres :
m@rina
Nous ne sommes pas devins : n'oubliez pas d'indiquer la version du logiciel utilisé, et comment vous avez procédé.
D'une manière générale, ce n'est jamais très bon de recopier des bouts de code et d'essayer de les faire fonctionner avec d'autres cas.
Vu que tu souhaites (si j'ai bien compris) insérer l'image avec habillage, inutile de convertir en Shape, autant l'insérer directement en Shape. Essaie plutôt ceci :
Sub logo2()
Dim oLogo As Shape
Set oLogo = ActiveDocument.Shapes.AddPicture(FileName:="mon_image.jpg", LinkToFile:=False, Left:=30, Top:=30, SaveWithDocument:=True)
End Sub
Remplace les valeurs Left et Top par les tiennes : ce sont les emplacements de l'image par rapport au paragraphe auquel est ancré l'image.
A noter que les valeurs sont en points, et que pour les mettre en pouces, c'est comme ça, par exemple :
- Pour ceux qui aiment les pouces :
Left:=InchesToPoints(5)
- Pour ceux qui aiment les centimètres :
Left:=CentimetersToPoints(5)
m@rina
Nous ne sommes pas devins : n'oubliez pas d'indiquer la version du logiciel utilisé, et comment vous avez procédé.
ButteDuLac
Messages postés
495
Date d'inscription
jeudi 5 mars 2009
Statut
Membre
Dernière intervention
24 octobre 2020
40
2 mars 2016 à 21:10
2 mars 2016 à 21:10
Il manque une partie. LA plus importante. Je voulais redimensionner l'image (il y a des dimensions réglementées) pour qu'elle ait :
" largeur minimale de 42 mm (4,2 cm) par une hauteur de 19,74 mm (1,97 cm), ou encore une largeur 1,65 pouce par une hauteur de 0,78 pouce "
J'ai tenté ceci :
Je ne comprends pas pourquoi je dois inscrire 0,025 pouces à Left pour arriver à 0,5 pouces (après de nombreuses tentatives), en points, je n'arrivais pas à me placer, c'était constamment du essai-erreur point par point... pourtant, en Top, j'arrive directement dessus avec 5 points?????
Je ne comprends pas non plus pourquoi les dimensions, en points sont à 65 x 138,1 et ça s'insère à 138, donc ça déforme l'image et je ne dois pas le faire. J'ai essayé avec WidthRelative, mais je ne comprends pas vraiment comment ça marche... (bon, la déformation est minime, mais je sais qu'il doit y avoir moyen de ne pas le faire...)
Merci de m'aider pour ce dernier petit bout de chemin!
" largeur minimale de 42 mm (4,2 cm) par une hauteur de 19,74 mm (1,97 cm), ou encore une largeur 1,65 pouce par une hauteur de 0,78 pouce "
J'ai tenté ceci :
Sub logo()
Dim oLogo As Shape
Set oLogo = ActiveDocument.Shapes.AddPicture(FileName:="O:\Direction des soins infirmiers\Directeur DSI\Secretaire\DOCUMENTS RÉFÉRENCES ET MODÈLES\Logo-CISSS_Iles.jpg", _
LinkToFile:=False, Left:=InchesToPoints("0,025"), Top:=5, Height:=65, Width:="138,1", SaveWithDocument:=True)
End Sub
Je ne comprends pas pourquoi je dois inscrire 0,025 pouces à Left pour arriver à 0,5 pouces (après de nombreuses tentatives), en points, je n'arrivais pas à me placer, c'était constamment du essai-erreur point par point... pourtant, en Top, j'arrive directement dessus avec 5 points?????
Je ne comprends pas non plus pourquoi les dimensions, en points sont à 65 x 138,1 et ça s'insère à 138, donc ça déforme l'image et je ne dois pas le faire. J'ai essayé avec WidthRelative, mais je ne comprends pas vraiment comment ça marche... (bon, la déformation est minime, mais je sais qu'il doit y avoir moyen de ne pas le faire...)
Merci de m'aider pour ce dernier petit bout de chemin!
ButteDuLac
Messages postés
495
Date d'inscription
jeudi 5 mars 2009
Statut
Membre
Dernière intervention
24 octobre 2020
40
2 mars 2016 à 21:15
2 mars 2016 à 21:15
Je croyais comprendre une partie, mais non... si ce sont les valeurs (Top et Left) par rapport au paragraphe, et non par rapport à la page, comme je le croyais, alors ça m'aurait expliqué le problème avec Left, mais pas avec Top, puisque mon logo est placé à 0,5 pouces du haut de page, soit à la toute première ligne du 1er paragraphe (marges à 0,5 pouces haut et gauche)
Alors ????????
Alors ????????
4 mars 2016 à 15:51
Pour ce qui est de la position, j'ai compris le principe, mais je ne comprenais pas pourquoi avec alignement sur paragraphe, ça fonctionne pour l'alignement Top mais pas pour Left.
Enfin, peu importe, maintenant, tout fonctionne impec.!
Merci!