Grouper plusieurs shapes, erreur

Bonjour à tous,

je suis toujours des problèmes avec mes images. Je veux insérer des images avec des légendes. J'ai déjà galéré (et c'est peu dire), pour avoir des images (shape) avec une légende (autre shape) qui sont ensuite groupées pour ne faire plus qu'une shape Image+Légende.

Mon problème est que j'ai parfois une erreur en fonction de la disposition sur la page. Je suppose que j'ai un problème d'ancrage. Il me dit que le groupage des formes est impossible. Il doit y avoir l'ancrage de la photo sur une page et celui de la légende sur l'autre.

Auriez-vous une piste pour éviter cette erreur. Existe-t-il par exemple une fontion If Is Possible Then faire le groupage Else ne rien faire ?

Je vous remercie d'avance pour votre aide

Bonjour JHendrix,

Les shapes sont attachées aux feuilles (objet parent). Donc on ne peut grouper deux formes provenant de feuilles différentes.

C'est un peu comme si tu souhaitais grouper deux maisons qui sont chacune dans un département voisin pour les accoler.

Seule possibilité que l'une des 2 formes d'une feuille prenne la légende inscrite dans une cellule d'une autre feuille.

Merci pour ta réponse.

J'ai oublié de préciser qu'il s'agissait d'une macro word, executée depuis un fichier excel. Quand j'insère plein d'images, elles finissent par aller sur la feuille suivante et cela crée l'erreur.

Avez vous une piste pour éviter que cela se produise ?

En fait j'ai l'impression d'avoir deux problèmes non corrigibles en même temps.

Le fait d'éviter la superposition de la légende avec l'image ou des images entre elles, qui m'oblige à rajouter des sauts de ligne et un habillage ; le fait d'avoir des ancrages qui se retrouvent sur deux pages différentes.

Je coince sur cette incompatibilité

Photo = Dir(CheminPhoto & NomPhoto)
                If Photo <> "" Then
                  DocWord.GoTo what:=wdGoToSection, which:=wdGoToFirst
                   DocWord.Characters.Last.Select
                    Set Image = DocWord.Shapes.AddPicture(Filename:=CheminPhoto & NomPhoto, linktofile:=False, savewithdocument:=True, Left:=DocWord.Paragraphs.Last.Range.Information(wdHorizontalPositionRelativeToPage), Top:=DocWord.Paragraphs.Last.Range.Information(wdVerticalPositionRelativeToPage), Anchor:=DocWord.Paragraphs.Last.Range) '
                    With Image
                        .Left = wdShapeCenter
                        .LockAspectRatio = msoTrue
                        .Name = "g" & Count & j
                   End With
                   Set Legende = DocWord.Shapes.AddTextbox(Orientation:=msoTextOrientationHorizontal, Left:=DocWord.Paragraphs.Last.Range.Information(wdHorizontalPositionRelativeToPage), Top:=DocWord.Paragraphs.Last.Range.Information(wdVerticalPositionRelativeToPage), Width:=300, Height:=30, Anchor:=DocWord.Paragraphs.Last.Range)
                   With Legende
                       .Left = wdShapeCenter
                       .Name = "h" & Count & j
                   End With
                   Legende.TextFrame.TextRange = "Observation N°" & Count & " fiche technique " & j
                   Set PhotoLegende = DocWord.Shapes.Range(Array("g" & Count & j, "h" & Count & j)).Group
                   With PhotoLegende
                       .WrapFormat.Type = wdWrapTopBottom
                       .Left = wdShapeCenter
                       .Name = "Observation N°" & Count & " fiche technique " & j
                   End With
                   DocWord.Paragraphs.Last.Range.InsertAfter (vbCrLf & vbCrLf & vbCrLf & vbCrLf)
'Type:=wdSectionBreakContinuous
                   Set Legende = Nothing
                   Set Image = Nothing
                   Set PhotoLegende = Nothing
                End If

Voici mon code

A nouveau,

Pour cela, il faut connaître la taille des images et l'emplacement de la dernière image ajoutée.

Car les pages Word sont généralement de format A4. Or par défaut, tout image insérée ne pouvant s'intégrer dans la page actuelle sera ajoutée sur une nouvelle feuille.

Peut être, dans l'absence du code, il serait possible de repérer le nombre de pages actuel du document en cours puis son nombre après l'ajout d'images. Par la propriété Count.

Dans le cas d'un nombre supérieur, alors revenir à la situation antérieure (Effacer l'insertion d'image). Puis placer ce groupe d'images sur la feuille supplémentaire et non sur la page en cours.

Intéressant ! je vais essayer de compter les pages ou de checker la position du curseur pour voir s'il faut faire un saut de page

Nickel, c'est déjà bien mieux avec ta méthode.

J'ai rajouté une boucle while pour faire des sauts de ligne tant que je n'ai pas atteint la page suivante.

Je suis ainsi sûr que les deux sont sur la même page.

Il me reste à trouver un moyen de supprimer le bon nombre de saut pour remettre sur la même page deux photos si il y a la place !

Merci pour ce coup de pouce

Rechercher des sujets similaires à "grouper shapes erreur"