IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Manipuler des photos sous Word depuis Excel [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    186
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 186
    Points : 71
    Points
    71
    Par défaut Manipuler des photos sous Word depuis Excel
    Bonjour à tous et à toutes

    Depuis excel, j'insère du texte et des photos dans un document Word
    Cela fonctionne

    Je souhaite pouvoir redimensionner les photos et là, ca coince

    "erreur d'exécution 438 / propriété ou méthode non gérée par cet objet"


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    objselection.TypeText Chr(10)
                  objselection.InlineShapes.AddPicture Filename:="e:\1 - aff\" & RepPhoto & "\3-chantier\5-opr et reception\" & RefPhoto & ".jpg"
                    'test redimensionnement image
                    With objdoc2.objselection.InlineShapes
                    .LockAspectRatio = msoTrue
                    If .Width > .Height Then
                    .Width = 20
                    Else
                    .Height = 20
                    End If
                    End With
    Ca bloque sur la ligne 4

    Si vous avez la solution, je suis preneur

    Merci bcp par avance

    Daniel

  2. #2
    Membre expérimenté Avatar de Gado2600
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Mai 2013
    Messages
    903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Office VBA

    Informations forums :
    Inscription : Mai 2013
    Messages : 903
    Points : 1 364
    Points
    1 364
    Par défaut
    Bonjour,

    Essais quelque chose comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    objselection.TypeText Chr(10)
        set wordShape = objselection.InlineShapes.AddPicture Filename:="e:\1 - aff\" & RepPhoto & "\3-chantier\5-opr et reception\" & RefPhoto & ".jpg"
        set wordInlShape = wordshape.convertToInlineShape
        with wordInlShape
             .LockAspectRatio = msoTrue
             if .Width > .Height then .Width = 20 else .Height = 20
        end with
    C'est un code que j'ai fait en VBA sous Access, il y a longtemps suite au problème que tu rencontres, je crois (de mémoire).

    Cordialement,
    Le sabre est une arme. Le kendo est un art de tuer. Quelles que soient les belles paroles pour l'expliquer, telle est sa vérité.

  3. #3
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    186
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 186
    Points : 71
    Points
    71
    Par défaut
    MErci Gado pour ce retour

    Quand je copie ton code, la ligne 2 se met en rouge
    quand je lance, il bug sur cette ligne avec erreur de compilation / erreur de syntaxe

    Bonne soirée

    Daniel

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2009
    Messages : 652
    Points : 1 219
    Points
    1 219
    Par défaut
    Bonjour,

    Peut être comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    objselection.TypeText Chr(10)
     
    Dim ILS As InlineShape  '///ajout/modif
     
      Set ILS = objselection.InlineShapes.AddPicture(FileName:="e:\1 - aff\" & RepPhoto & "\3-chantier\5-opr et reception\" & RefPhoto & ".jpg")  '///ajout/modif
        'test redimensionnement image
     
        With ILS  '///ajout/modif
        .LockAspectRatio = msoTrue
        If .Width > .Height Then
        .Width = 20
        Else
        .Height = 20
        End If
        End With

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    186
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 186
    Points : 71
    Points
    71
    Par défaut
    Bonjour

    Merci PMO2015 pour cette réponse

    J'ai eu juste un souci avec ".LockAspectRatio = msoTrue" qui ne fonctionnait pas

    J'ai trouvé ce post http://www.developpez.net/forums/d12...ne-fonctionne/
    qui m'a permis de trouver la solution -enfin une solution qui fonctionne_

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
        objselection.TypeText Chr(10)
     
        Dim ILS As InlineShape  '///ajout/modif
     
            Set ILS = objselection.InlineShapes.AddPicture(Filename:="e:\1 - aff\" & RepPhoto & "\3-chantier\5-opr et reception\" & RefPhoto & ".jpg")  '///ajout/modif
            '    With ILS  '///ajout/modif
            With ILS
                If .Width < .Height Then
                    myRatio = .Width / .Height
                    .Width = 150
                    .Height = .Width / myRatio
                Else
                    myRatio = .Height / .Width
                    .Height = 150
                    .Width = .Height / myRatio
                    .Height = 150
                End If
            End With
    Encore merci

    Bonne journée

    Daniel

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2009
    Messages : 652
    Points : 1 219
    Points
    1 219
    Par défaut
    J'ai eu juste un souci avec ".LockAspectRatio = msoTrue" qui ne fonctionnait pas
    Bonjour,

    Cela pourrait provenir du pilotage de Word en liaison tardive (late binding).
    La constante msoTrue ne serait pas reconnue.
    Sa vraie valeur étant -1, essayez de remplacer la constante par sa valeur dans votre code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .LockAspectRatio = -1    'msoTrue

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 10/09/2014, 17h54
  2. Réponses: 2
    Dernier message: 18/01/2012, 12h48
  3. [XL-2003] Effacer des signets dans un document word depuis excel
    Par scoubi77 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 16/03/2010, 21h20
  4. Inserer des numeros pages dans un doc Word depuis Excel en VBA
    Par bguichardaz dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 06/01/2010, 17h45
  5. Sous Word depuis Delphi
    Par alexmorel dans le forum API, COM et SDKs
    Réponses: 9
    Dernier message: 17/06/2004, 12h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo