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

VBA Word Discussion :

InlineShapes pour ajouter image (signature) / problème d'index dans doc de publipostage [WD-2007]


Sujet :

VBA Word

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Mars 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur commercial
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2015
    Messages : 14
    Points : 9
    Points
    9
    Par défaut InlineShapes pour ajouter image (signature) / problème d'index dans doc de publipostage
    Bonjour,

    j'essaye désespérément d'importer dans un doc de publipostage, avant déroulement de celle ci, la signature sous forme d'image jpg de l'utilisateur. (chaque utilisateur doit pouvoir importer sa signature, donc pas possible de l'enregistrer "en dur" dans le doc - l'import se fait dans la macro du publipostage juste avant celui-ci).

    D'après les ressources trouvées sur ce forum, j'utilise:

    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
     
    WordDoc.InlineShapes.AddPicture FileName:=Fichier
                                          'adapter le chemin de l'image à insérer
     
        With WordDoc.InlineShapes(1)   'adapter l'index si d'autres images existantes dans le document
            .Height = 36    'changement dimension image insérée : hauteur
            .Width = 162#    'largeur
            .ConvertToShape
        End With
     
        With WordDoc.Shapes(1)
            .Top = 702    'position verticale de l'image dans le document 345.75, 696#, 185.25, 44.25
            .Left = 351    'position horizontale de l'image dans le document
            .ZOrder msoBringInFrontOfText    'image au premier plan devant le texte
            '.ZOrder msoSendBehindText 'option pour image en arrière plan derrière le texte
        End With
    Le tuto précise d'adapter l'index au nombre d'image (j'ai supprimé quelques lignes dont je n'avais pas besoin)...

    Sur une page de test, tout fonctionne nickel, l'image se met au bon endroit... mais sur le doc de fusion que je souhaite utiliser, si je mets l'indice (1), l'image ne se positionne pas sur les coordonnées indiquées, mais en haut à gauche... et si je mets un autre numéro, j'ai un message d'erreur d'exécution "5941" "le membre de la collection requis n'existe pas".

    Sur mon doc word, j'ai déjà 2 images "groupées" (qui servent de fond pour mon formulaire à publiposter) et 50 cadres de texte contenant mes champs de fusion...

    ...j'ai donc essayé avec des indices =1 ou 2 ou 3 ou 4 et = 50 jusqu'à 54... rien n'y fait ! (avec images de fond groupées ou non...)

    une idée ??? merci d'avance !

  2. #2
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Pourquoi ne pas utiliser un champ de publipostage pour ton image ?

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Mars 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur commercial
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2015
    Messages : 14
    Points : 9
    Points
    9
    Par défaut
    Bonjour,

    Les utilisateurs sont multiples, chacun installe son répertoire où bon lui semble (d'où mes posts précédents sur les chemins relatifs), mais chaque utilisateur possède une signature unique sous forme d'image.

    La signature est donc toujours la même, pas de variation liée au publipostage... par contre, je souhaite qu'ils ne touchent à rien du jeux de fichier word/excell: la base de donnée s'alimente en automatique (1 clik sur import données) et le publipostage se fait en 1 clik aussi sans qu'ils prennent la main sur son exécution.

    Il faut donc que je charge au démarrage la signature de chacun, qu'ils auront enregistrée sous "signature.jpg"... c'est le seul fichier qu'ils peuvent modifier !

    La signature se cale à "l'endroit qui va bien" et le publipostage se fait; ils reprennent la main sur les x fiches fusionnées et signées après avoir fusionné dans un nouveau doc...

    Bref, je ne vois pas comment faire de la signature un champs de fusion pourrait résoudre mes contraintes... charger l'image juste avant l’exécution du publipostage me semble plus adaptée...

    En ayant travaillé à partir du tuto que tu avais fait (et que tu as dû reconnaitre!), je pense ne pas être très loin de la solution... il faut sans doute que j'arrive à trouver le bon indice de l'image ajoutée... en tenant compte de tous les cadre images (à priori 2) et les cadres texte (à priori 50) qui contiennent chacun un champ de fusion, et voir si certains ne seraient pas "invisibles" où cachés dans le document que j'ai repris...! ...ou si d'autre éléments sont comptés comme des "shapes" par "inline"

    As tu une idée sur cette question précise de ce qui impacte dans une feuille l’incrémentation de l'indice a affecter aux nouvelles images que l'on insert ?

    Merci d'avance !

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Mars 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur commercial
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2015
    Messages : 14
    Points : 9
    Points
    9
    Par défaut face à la machine, la femme ou l'homme têtu gagne toujours !
    bon,
    Comme je l'ai déjà dit, je suis têtu, et possède un bagage informatique qui date de ma programmation en basic au lycée (et c'était pas hier !)

    Voici la solution que j'ai trouvée, qui semble parfaitement fonctionnelle:

    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
    WordDoc.InlineShapes.AddPicture FileName:=Fichier
                                          'adapter le chemin de l'image à insérer
        'On Error GoTo 0
        MsgBox "InlineShape = " & ActiveDocument.InlineShapes.Count & _
        vbCr & "Shapes = " & ActiveDocument.Shapes.Count
     
        With WordDoc.InlineShapes(1)   'adapter l'index si d'autres images existantes dans le document
            .Height = 36    'changement dimension image insérée : hauteur
            .Width = 162#    'largeur
            .ConvertToShape
        End With
     
        With WordDoc.Shapes(56)
            .Top = CentimetersToPoints(24.52) '702    'position verticale de l'image dans le document
            .Left = CentimetersToPoints(12.23) '351    'position horizontale de l'image dans le document
            .ZOrder msoBringInFrontOfText    'image au premier plan devant le texte
            '.ZOrder msoSendBehindText 'option pour image en arrière plan derrière le texte
        End With
    Les lignes 4 et 5 me renvoient les valeurs des indices pour les affecter ligne 7 & 13.
    pour Inligneshape, je laisse la valeur indiquée par le compteur soit 1 (cad l'image que j'ai ajouté juste au dessus - je ne sais pas pourquoi les autres images du doc initial ne sont pas comptées...)

    pour shapes je prends le nombre renvoyé (55) soit le nombre de mes cadres de texte de fusion (50) plus les 2 images*2 (j'avais remarqué qu'il fallait faire deux tab pour passer de l'une à l'autre dans le doc, ce qui semble confirmé ici) + 1 pour l'inlineshape soit un indice à 56 ! (je suppose qu'inligneshapes est aussi un shapes ?

    Bref, même si je sais pas forcément pourquoi, maintenant ça fonctionne !

    (en fait je viens de réaliser pourquoi en me relisant: "convert to shape" ligne 10 )

    Il ne me restera plus qu'a mettre des variables pour renvoyer les bons indices, des fois que je décide de modifier le nombre de champs de fusion sur le document source par exemple !

  5. #5
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    InlineShape n'est pas un Shape.

    Il suffit de faire un count sur les deux collections pour voir qu'elles renvoient une valeur différente.

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 18/01/2012, 15h05
  2. [Débutant] Problème d'index dans les matrices
    Par wolf11 dans le forum MATLAB
    Réponses: 2
    Dernier message: 18/11/2011, 19h55
  3. Problème d'index dans boucle for
    Par cocacola0589 dans le forum ActionScript 3
    Réponses: 1
    Dernier message: 09/02/2010, 18h22
  4. problème d'indexation dans une jsp
    Par reverse_engineer dans le forum Struts 1
    Réponses: 4
    Dernier message: 13/07/2008, 12h33
  5. Comment fait-on pour ajouter une signature à son profil ?
    Par mullger dans le forum Mode d'emploi & aide aux nouveaux
    Réponses: 2
    Dernier message: 28/04/2006, 16h42

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