a) sélectionner une image qui est sur ma page par un clic
b) à partir d'un icone dans la barre d’outils Accès rapide, une mise en forme de cette image toujours la même :
taille et proportion
Habillage du texte
devant le texte
taille
hauteur 4
largeur 10
OK
j'ai essayer en mode développeur, enregistrer une macro, mais je n'arrive pas à sélectionner les fonctions souhaitées. il y a comme une petite casette à coté de mon curseur et je ne peux sélectionner l'image.
En guise de pied à l'étrier
A tester avec une seule image sur une page d'un document Word.
Il se passe des choses mais pas encore ce que tu décris dans ton premier message
Code:
Sub test()
With ActiveDocument.Shapes(1)
MsgBox .Name
.RelativeVerticalPosition = wdRelativeVerticalPositionPage
.RelativeHorizontalPosition = wdRelativeHorizontalPositionPage
.Top = InchesToPoints(3)
.Left = wdShapeCenter
.Width = 400
.Height = 100
End With
End Sub
NB: Pas évident car il faut aller parcourir les références VBA
Et il faut trouver les bonnes équivalences.
(Ce que j'ai pas encore trouvé)
En guise de pied à l'étrier
A tester avec une seule image sur une page d'un document Word.
Il se passe des choses mais pas encore ce que tu décris dans ton premier message
Code:
Sub test()
With ActiveDocument.Shapes(1)
MsgBox .Name
.RelativeVerticalPosition = wdRelativeVerticalPositionPage
.RelativeHorizontalPosition = wdRelativeHorizontalPositionPage
.Top = InchesToPoints(3)
.Left = wdShapeCenter
.Width = 400
.Height = 100
End With
End Sub
NB: Pas évident car il faut aller parcourir les références VBA
Et il faut trouver les bonnes équivalences.
(Ce que j'ai pas encore trouvé)
Bon j'ai mis en place cette macro dans mon fichier , je vais dire honnêtement je ne comprend rien à celle-ci, mais ça ce n'est pas très grave, pour moi.
voici le message que j'ai
la macro est dans new macro
J'ai mis mon fichier avec votre macro, je cherche si je trouve une solution ...
En creusant un peu plus, avec ce code (adapté de mes pérégrinations sur le net)
VB:
Sub Test_2()
Dim oImage As Object, oRng As Range
Set oImage = ActiveDocument.InlineShapes(1)
With oImage
.LockAspectRatio = msoFalse
.Height = CentimetersToPoints(4)
.Width = CentimetersToPoints(10)
Set oRng = oImage.Range
.ConvertToShape
End With
With oRng.ShapeRange(1)
.RelativeHorizontalPosition = wdRelativeHorizontalPositionPage
.RelativeVerticalPosition = wdRelativeVerticalPositionPage
.Left = CentimetersToPoints(3)
.Top = CentimetersToPoints(2)
End With
End Sub
Je coche ces trois souhaits
Habillage du texte devant le texte
taille hauteur 4 largeur 10
En creusant un peu plus, avec ce code (adapté de mes pérégrinations sur le net)
VB:
Sub Test_2()
Dim oImage As Object, oRng As Range
Set oImage = ActiveDocument.InlineShapes(1)
With oImage
.LockAspectRatio = msoFalse
.Height = CentimetersToPoints(4)
.Width = CentimetersToPoints(10)
Set oRng = oImage.Range
.ConvertToShape
End With
With oRng.ShapeRange(1)
.RelativeHorizontalPosition = wdRelativeHorizontalPositionPage
.RelativeVerticalPosition = wdRelativeVerticalPositionPage
.Left = CentimetersToPoints(3)
.Top = CentimetersToPoints(2)
End With
End Sub
Je coche ces trois souhaits
Habillage du texte devant le texte
taille hauteur 4 largeur 10
j'ai ajouter cette macro dans mon fichier et ça ne semble pas vouloir fonctionner, par contre je ne sais pas pourquoi mais la première version fonction.
Je fait des essais avec ce que je trouve sur le net mais pour le moment rien ne fonctionne comme je souhaiterai.
je joint mon fichier d'essais
j'ai ajouté cette macro dans mon fichier et ça ne semble pas vouloir fonctionner, par contre je ne sais pas pourquoi mais la première version fonction.
Merci pour cette réponse, donc c'est un shape comme je fait une copie sur un PDF que je colle sur Word.
Mais après pour faire fonctionner la fonction que je souhaiterai arriver à mettre en place, ma question du début?
il faut que je face quoi ?
Sur l'exemple que tu fournis au post #6, il s'agit bien d'une Shape (et non d'une InLineShape).
Du coup, tu peux tester le code ci-dessous :
Code:
Public Sub Test()
With Selection.ShapeRange
If .Count = 0 Then
MsgBox "Il faut au préalable sélectionner une forme.", vbInformation, "Info"
Else
With .Item(1)
.WrapFormat.Type = wdWrapFront
.Height = Application.CentimetersToPoints(4)
.Width = Application.CentimetersToPoints(10)
End With
End If
End With
End Sub
Lorsque la macro est exécutée, un message informatif s'affiche si aucune Shape n'est sélectionnée (ce message s'affichera donc si c'est une InLineShape qui est sélectionnée).
Sinon, la Shape est mise devant le texte et redimensionnée à 4 cm x 10 cm.
Sur l'exemple que tu fournis au post #6, il s'agit bien d'une Shape (et non d'une InLineShape).
Du coup, tu peux tester le code ci-dessous :
Code:
Public Sub Test()
With Selection.ShapeRange
If .Count = 0 Then
MsgBox "Il faut au préalable sélectionner une forme.", vbInformation, "Info"
Else
With .Item(1)
.WrapFormat.Type = wdWrapFront
.Height = Application.CentimetersToPoints(4)
.Width = Application.CentimetersToPoints(10)
End With
End If
End With
End Sub
Lorsque la macro est exécutée, un message informatif s'affiche si aucune Shape n'est sélectionnée (ce message s'affichera donc si c'est une InLineShape qui est sélectionnée).
Sinon, la Shape est mise devant le texte et redimensionnée à 4 cm x 10 cm.
merci pour cette proposition.
il semble que l'image que je colle soit un InlineShapes car j'ai le message avec ou sans sélection .
j'ai fait des essais avec ton code en ajoutent un ligne pour tenter de modifier l'image inlineshapes en shapes , mais comment faire que que ce soit appliqué qu'a l'image sélectionnée ???:
VB:
Public Sub Test()
ActiveDocument.InlineShapes(1).ConvertToShape ' transforme InlineShape en Shape, mais voir pour le faire uniquement sur l'image selectionnée ?
With Selection.ShapeRange
If .Count = 0 Then
MsgBox "Il faut au préalable sélectionner une forme.", vbInformation, "Info"
Else
With .Item(1)
.WrapFormat.Type = wdWrapFront
.Height = Application.CentimetersToPoints(2.5)
.Width = Application.CentimetersToPoints(6.5)
End With
End If
End With
End Sub
s'il n'y a pas d'image sélectionné (un shape), il y a un message d'erreur.
Ce n'est pas simple de travailler sur les images, j'y comprends rien.
Sur l'exemple que tu fournis au post #6, il s'agit bien d'une Shape (et non d'une InLineShape).
Du coup, tu peux tester le code ci-dessous :
Code:
Public Sub Test()
With Selection.ShapeRange
If .Count = 0 Then
MsgBox "Il faut au préalable sélectionner une forme.", vbInformation, "Info"
Else
With .Item(1)
.WrapFormat.Type = wdWrapFront
.Height = Application.CentimetersToPoints(4)
.Width = Application.CentimetersToPoints(10)
End With
End If
End With
End Sub
Lorsque la macro est exécutée, un message informatif s'affiche si aucune Shape n'est sélectionnée (ce message s'affichera donc si c'est une InLineShape qui est sélectionnée).
Sinon, la Shape est mise devant le texte et redimensionnée à 4 cm x 10 cm.
Après plusieurs heures de recherche sur internet, de lecture, d'essais il semble que j'ai trouver un code qui fonctionne pour réponse à ce que j'espéré faire, à partir de votre code.
Merci de me faire des remarque s'il y a des choses à changer ou améliorer car je ne métrise rien.
VB:
Public Sub test() ' macro qui semble fonctionner
Dim i As Byte
i = ActiveDocument.InlineShapes.Count 'recupère le nom de l'image ajoutée
'MsgBox "nom de l'image : " & i
If i = 0 Then MsgBox "Pas d'image sélectionnée ou image déjà mise en forme": GoTo fin
ActiveDocument.InlineShapes(i).ConvertToShape
With Selection.ShapeRange
If .Count = 0 Then
MsgBox "Il faut au préalable sélectionner une forme.", vbInformation, "Info"
Else
With .Item(1)
.WrapFormat.Type = wdWrapFront
.Height = Application.CentimetersToPoints(2.5)
.Width = Application.CentimetersToPoints(6.5)
End With
End If
End With
fin:
End Sub
La bienséance veut que tu indiques les différents endroits où tu postes ta demande. Ce afin d'aider les gens qui t'aident pour voir les différentes propositions qui te sont faites.
j'ai fait des essais avec ton code en ajoutent un ligne pour tenter de modifier l'image inlineshapes en shapes , mais comment faire que que ce soit appliqué qu'a l'image sélectionnée ???
La bienséance veut que tu indiques les différents endroits où tu postes ta demande. Ce afin d'aider les gens qui t'aident pour voir les différentes propositions qui te sont faites.
Bizarre... J'ai utilisé le code proposé au post #9 avec le fichier que tu nous a fourni au post #6 et n'ai pas rencontré de souci...
Du coup, je ne sais plus trop d'où tu pars et ce que tu veux.
Si tu n'as toujours pas trouvé ce que tu attends, merci de reformuler ta demande et de nous fournir un fichier représentatif.
Effectivement j'avais fait une demande sur developpez.net, toutes mes excuses, je ne savais pas qu'il était souhaitable de le signaler. A l'avenir je le ferais, mais généralement je fais qu'une demande.
Je vais refaire des essais avec le code du post #9 et dire ce qui ne semble pas fonctionner pour moi et poster le fichier utilisé avec des explications.
Bon je n’arrive pas à identifier clairement ce qu’il faudra faire alors je vais expliquer ce que je fais .
J’ai joint deux fichiers, celui reçu est celui que je souhaite créer.
Donc :
Je reçois un fichier PDF ou il y a des images est des codes-barres, un élément par page PDF.
Il faut que je regroupe deux à deux les images et les codes-barres qui correspondent aux images. Il doit y avoir deux images par pages, dans l’exemple, l’adulte et l’enfant avec ces codes-barres correspondants.
Je fais les copies du PDF et les colles dans un doc Word, en premier toutes les images que je ne positionne pas et redimensionnent à la taille souhaitée avec des return entre images pour les espacer, afin de limiter les manipulations.
Après j’ajoute les codes barre, ET C’EST LA QUE JE VOUDRAIS AUTOMATISER LA MISE AUX DIMENSIONS.
Donc je copie le code barre, commande macro, la mise aux dim est faite et je peux positionner le code là où il doit aller.
A partir de ce doc Word, je fais un PDF. je n'arrive pas à joindre le WORD trop volumineux, et je ne sais comment le réduire. il fait 1442ko.
je ne sais pas si c’est plus clair mais c’est ce que je fais.
Précisions
Pour pouvoir appliquer ceci: devant le texte (sur un fichier image inséré dans Word)
(par le biais de VBA), il faut que le shape soit un InLineShape converti en Shape
(enfin c'est que j'ai lu sur le net)
D'où mon exemple en message#5)
(Et le test se faisait sur une image insérée par Insertion/Image/A partir de cet appareil
(il s'agissait d'une image *.png)
Le code de mromain ainsi modifié fonctionne avec un *.png
(sauf pour la taille)
VB:
Public Sub Test_C()
Dim oImage As Object, oRng As Range
Set oImage = ActiveDocument.InlineShapes(1)
With oImage
Set oRng = .Range: .ConvertToShape
End With
With oRng.ShapeRange(1)
.WrapFormat.Type = wdWrapFront
.Height = Application.CentimetersToPoints(4)
.Width = Application.CentimetersToPoints(10)
End With
End Sub
Alors qu'avec le code du message#5, j'ai bien une taille de 4 cm x 10 cm
NB: Par contre le code intial de mromain fonctionne bien avec une forme automatique
(insérée avec Formes automatiques)