Dimensionnement liaison Excel -> Word

Hello,

Petite question sur des graphiques Excel liés à un fichier Word. Je cherche, sur mon fichier word et par VBA a :

  • Désactiver la conservation des proportion
  • Mettre l'objet lié en 6cmx12cm
  • Désactiver l'autodimensionnement par rapport à la taille d'origine (option proportionnelle à l'image d'origine).

Les 2 premières conditions furent assez "simples" à mettre en place via le code suivant :

Sub Graph()
For Each iShape In ActiveDocument.InlineShapes
    iShape.LockAspectRatio = msoFalse
    iShape.Height = 170
    iShape.Width = 340
Next
End Sub

Mais c'est pour la dernière que je bloque, et je n'ai rien trouvé d'intéressant sur le net. Il y avait bien l'option ShapeScaleHeight = msoFalse et idem avec Width mais malheureusement un objet lié n'est pas un "Shape" mais un InlineShapes ..

Une alternative consisterai à mettre le graph directement en 6x12 sur le fichier Excel, mais vu le nombre d'utilisateur s'en servant ça risque d'être compliqué ...

Merci par avance si vous vous penchez sur mon problème.

Cordialement,

Bonjour,

malheureusement un objet lié n'est pas un "Shape" mais un InlineShapes ..

un possibilité est de le transformer en shape

iShape.ConvertToShape 

Hello merci pour l'astuce.

J'ai essayé le code ci-dessous sans succès ça bloque dès la ligne 5.

Sub Graph()
    For Each iShape In ActiveDocument.InlineShapes
    iShape.ConvertToShape
        With Shape
        .LockAspectRatio = msoFalse
        .Height = 170
        .Width = 340
        .ScaleHeight 1, msoFalse
        .ScaleWidth 1, msoFalse
        .ConvertToiShape
        End With
    Next
End Sub

De plus tu sais si une fois qu'on a "décoché" l'option on peu reconvertir la Shape en iShape ?

Merci par avance ! Si ça demande trop de boulot laisse tomber je prendrai ma solution alternative

Bonjour,

à tester,

    For Each iShape In ActiveDocument.InlineShapes
      Set Shp =  iShape.ConvertToShape
        With Shp

Re !

C'est bien on avance.

Maintenant ya plus que la dernière ligne qui "bug" mais je m'en serait douté .

.ConvertToiShape

En tout cas j'ai bien les deux options de redimensionnement désactivée ça c'est cool. En gros je voudrais qu'une fois que tout à été fait, la forme revienne en alignement avec le texte (donc inlineshape si j'ai bien compris).

Merci !

à tester,

.ConvertToInlineShape

On a même pas commencé la semaine que jsuis déjà fatigué à pas voir une erreur si grossière ... Quel c** que je suis .. ishape à la place de inlineshape . Tu m'étonnes que la fonction était pas reconnue

Mtn tu sais comment éviter de faire une boucle infinie ou que la macro ne s'active qu'une fois par graphique ? (eh oui tellement fatigué que j'avais pas prévu ça ..) Si ce n'est pas possible laisse le code va déjà m'aider !

En tout cas merci beaucoup tu gères ça fonctionne comme je le veux mtn ! Juste cette fichue boucle ..

je crois qu'il faudrait faire 2 boucles,

Sub Graph()
    For Each iShape In ActiveDocument.InlineShapes
      Set Shp =  iShape.ConvertToShape
        With Shp
        .LockAspectRatio = msoFalse
        .Height = 170
        .Width = 340
        .ScaleHeight 1, msoFalse
        .ScaleWidth 1, msoFalse
        End With
    Next

    For Each Shp In ActiveDocument.Shapes
       Shp.ConvertToInlineShape
    Next
End Sub

C'est exactement ça, j'y ai pensé juste après avoir posté mais c'était trop tard.

Je te remercie grandement pour ton aide, et pour l'astuce de la conversion en Shape, j'y aurai pas pensé.

En te souhaitant une bonne soirée !

Rechercher des sujets similaires à "dimensionnement liaison word"