Erreur lors d'un redimensionnement de certains tableaux sous Word

Bonjour,

Avec l'aide d'une macro je cherche a reformater des tableaux présents dans un document Word.

La macro LancerUsfTableaux() fonctionne bien pour les tableau 1 et tableau 2 de ce fichier exemple, mais lorsqu'on l'applique au tableau 3 il y a une erreur en lien avec le presse papier : ERREUR 4605 CETTE MÉTHODE OU PROPRIÉTÉ N'EST PAS DISPONIBLE CAR LE PRESSE PAPIER EST VIDE OU NON VALIDE

On dirait que le copié / collé de l'image ne fonctionne pas, je ne sais pas comment résoudre ce problème.

J'ai remarqué que si je passe le tableau 3 à la suite des 2 autres, sans saut de page, la macro fait planter Word mais au redémarrage automatique de Word suite au plantage , le tableau 3 à été formaté correctement.

Pouvez vous m'aider à corriger ce problème svp ?

Merci à vous,

Cordialement,

Bonjour Icn,

Le problème se pose car le tableau est sur la page 2.

Je n'ai pas réussi à voir pourquoi cela ne fonctionnait pas quelque soit la page.

Je vous rejoins, j’ai également l’impression que c’est lié au fait que le tableau soit sur une page différente

C’est un problème car les tableaux que j’ai besoin de traiter sont dans un document comportant de nombreuses pages, du coup je ne peux pas utiliser ma macro bien utile.

pour contrer ce problème, j’avais pour idée de copier le tableau de départ dans un fichier Word vierge qui contiendrait la macro de traitement et une fois le nouveau tableau obtenu la macro ferait un nouveau copié / collé pour remplacer en lieu et place le tableau source par celui qui a été reformaté.

Ce type de copier collé est il facile a mettre en œuvre ?

Pour l’instant j’ai réussi à copier le tableau source et l’exporter vers un nouveau fichier vierge mais je parviens pas à le coller, une fois traité avec la macro vers la page d’origine.

Le problème va être le même, puisque la présence de l'image est bien attestée avec un debug.print, mais la copie ne fonctionne pas.

Plusieurs solutions à tester :

  • Transformation de l'image en shape (converttoshape) et repositionnement sur la cellule 2.
  • Export temporaire en fichier .jpg, réimport sur la cellule 2 et suppression du fichier temporaire.
  • On récupère le texte de la cellule2 dans la cellule 1 et c'est la cellule 2 qu'on supprime.

C'est sans doute la dernière proposition qui est la plus "sensée"...

Ce code ne reprend pas la mise en forme que vous avez apportée à mon code.

Sub DeplacerUnsInLineShape(ByVal MaTable2 As Table)

Dim I As Integer

    With MaTable2.Range
         For I = 1 To .Rows.Count
             With .Rows(I)
                  ' Si la cellule est en rang 2 et que la cellule 1 contient une image
                  If .Cells.Count = 2 And .Cells(1).Range.InlineShapes.Count > 0 Then
                         .Cells(1).Range.Select
                         With Selection
                              .EndKey unit:=wdLine, Extend:=wdMove
                              .InsertParagraph
                         End With
                         Debug.Print Mid(MaTable2.Rows(I).Cells(2).Range.Text, 1, Len(MaTable2.Rows(I).Cells(2).Range.Text) - 2)
                        .Cells(1).Range.Paragraphs(2).Range.Text = Mid(MaTable2.Rows(I).Cells(2).Range.Text, 1, Len(MaTable2.Rows(I).Cells(2).Range.Text) - 2)
                        .Cells(2).Delete
                        With .Cells(1)
                             .Width = MaTable2.Rows(1).Range.Cells.Width
                             .Range.Paragraphs(1).Range.ParagraphFormat.Alignment = wdAlignParagraphCenter
                        End With
                 End If
            End With
        Next I
    End With

End Sub

Merci pour la modification apportée, le Tableau 3 est maintenant formaté.

Je cherche à déplacer l'image (seulement) en ligne 4 pour la passer en ligne 3 mais j'ai une erreur de presse papier, pouvez vous me dire ce qui ne va pas svp ?

Regardez ce code :

Sub Essai()

    With ActiveDocument.Tables(3)

         .Rows(2).Select
         Selection.Copy
         Selection.PasteAndFormat (wdTableInsertAsRows)
         With .Rows(2)
              .Cells(2).Range.Text = ""
              .Cells.Merge
              .Cells(1).Range.ParagraphFormat.Alignment = wdAlignParagraphCenter
         End With
         With .Rows(3)
              If .Cells(1).Range.InlineShapes.Count > 0 Then
                 .Cells(1).Range.InlineShapes(1).Delete
              End If
              .Cells.Merge
         End With

         .Rows.Add (.Rows(2))
         .Rows(2).Select
         Selection.MoveRight Unit:=wdCharacter, Count:=2, Extend:=wdExtend

    End With

End Sub

Ce code fonctionne parfaitement pour chacun des tableaux, quel que soit la page ou il se trouve.

c'est vraiment top, merci beaucoup.

Du coup on ne manipule plus les images , on manipule les lignes et cellules par copié / collé, n'est ce pas ?

Oui, il vaut mieux faire cela pour ne pas manipuler d'image.

Rechercher des sujets similaires à "erreur lors redimensionnement certains tableaux word"