Discussion: Nom objets inlineshapes [WD-2010]

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    juin 2017
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : juin 2017
    Messages : 21
    Points : 27
    Points
    27

    Par défaut Nom objets inlineshapes

    Bonjour,

    J'ai une première macro qui me permet de générer un document word avec des fichiers (xml, pdf, excel...) insérés en objets (Inlineshapes). Ces fichiers ne sont pas liés au fichier d'origine car ils sont sur un serveur et il faut qu'une personne n'yant pas les droits d'accés puisse quand même les ouvrir.

    J'ai une seconde macro qui me sert à vérifier ce document word et j'aimerai pouvoir vérifier que ces objects pointent bien sur les bons fichiers.
    J'arrive pour le moment à compter le nombre d'objets dans le document mais j'ai pas réussi à trouver mieux.

    J'avais pensé à rajouter un lien hypertext lors de l'ajout des fichiers dans la première macro, mais cela renvoyait sur les fichiers du serveur et une personne n'ayant pas les droits ne pouvait donc pas les ouvrirs.

  2. #2
    Expert confirmé

    Homme Profil pro
    Développeur Vba Excel
    Inscrit en
    avril 2013
    Messages
    2 092
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Vba Excel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2013
    Messages : 2 092
    Points : 5 600
    Points
    5 600
    Billets dans le blog
    19

    Par défaut

    Citation Envoyé par chth26 Voir le message
    Bonsoir,

    Pas testé, mais cela peut fonctionner.

    Dans votre document Word généré par la macro1, vous créez un Userform avec autant de CommandButtons que nécessaire. Pour des raisons de facilité de mise en oeuvre, votre fichier Word doit plutôt être issu d'un modèle. Avec votre macro1, vous injectez les informations souhaitées dans la propriété Tag de ces contrôles. Avec votre macro2, vous pourrez récupérer ces informations.

    Correction : Pourquoi s'emm...? Cette technique je la pratique sur Excel avec avec de vrais contrôles, le Tag me permet de faire cela. Ici pas la peine : vous créez des labels dédiés à chacun de vos documents et vous placez ce que vous voulez dans le Caption.

    Sinon, dans l'aide VBA, regardez :

    • La collection Variables.
    • Tapez également ini, vous tomberez sur la rubrique : Stockage des valeurs à la fin de l'exécution d'une macro.
    Eric KERGRESSE
    https://sites.google.com/site/erickergresseeirl/
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter

  3. #3
    Expert confirmé

    Homme Profil pro
    Développeur Vba Excel
    Inscrit en
    avril 2013
    Messages
    2 092
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Vba Excel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2013
    Messages : 2 092
    Points : 5 600
    Points
    5 600
    Billets dans le blog
    19

    Par défaut Une simplicité déconcertante...

    J'ai testé la solution de mémorisation des infos dans une collection de type Variable dans un document. Oubliez mon message précédent.

    Il faut mémoriser par couple d'infos : Info 1 : le nom de la variable, info 2 : sa valeur. Ici, je me suis servi d'une matrice pour récupérer les informations.

    Pour injecter les infos :
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    Option Explicit
     
    Sub MemorisationDesInformationsAvecMacro1(ByVal DocEnCours As Document, ByVal MesInfos As Variant)
     
    Dim Numero As Integer
     
        With DocEnCours
             For Numero = LBound(MesInfos) To UBound(MesInfos) Step 2
                 .Variables.Add Name:=MesInfos(Numero), Value:=MesInfos(Numero + 1)
             Next Numero
        End With
     
     
    End Sub
     
    Sub EssaiMemoAvecMacro1()
     
    Dim MonDocument As Document
    Dim I As Integer
    Dim MonMemo As Variant
     
        MonMemo = Array("Info1", "Valeur Info1", "Info2", "Valeur Info2", "Info3", "Valeur Info3", "Info4", "Valeur Info4")
     
        Set MonDocument = Documents.Add
        With MonDocument
             I = 4
             MemorisationDesInformationsAvecMacro1 MonDocument, MonMemo
             .SaveAs2 FileName:="Doc avec mémo " & I & ".docm"
             .Close savechanges:=True
        End With
        Set MonDocument = Nothing
     
    End Sub
    Pour récupérer les infos contenues dans la collection du document créé :
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    Sub RecupInfosAvecMacro2()
     
    Dim MonDocument As Document
    Dim MatriceInfos() As Variant
    Dim I As Integer
    Dim PresenceInfos As Boolean
    Dim MesInfosStockees As String
     
     
        ' Lecture
        PresenceInfos = False
        Set MonDocument = ActiveDocument
        With MonDocument
             If .Variables.Count > 0 Then
                PresenceInfos = True
                ReDim MatriceInfos(.Variables.Count - 1, 1)
                For I = 1 To .Variables.Count
                    MatriceInfos(I - 1, 0) = .Variables(I).Name
                    MatriceInfos(I - 1, 1) = .Variables(I).Value
                Next I
             End If
        End With
        Set MonDocument = Nothing
     
        ' Restitution
        MesInfosStockees = ""
        If PresenceInfos = True Then
           For I = LBound(MatriceInfos, 1) To UBound(MatriceInfos, 1)
               MesInfosStockees = MesInfosStockees & MatriceInfos(I, 0) & " : " & MatriceInfos(I, 1) & Chr(10)
           Next I
           MsgBox MesInfosStockees, vbInformation, "Infos stockées dans la collection Variables"
        Else
           MsgBox "Aucune information stockée dans le document !", vbInformation, "Infos stockées dans la collection Variables"
        End If
     
    End Sub
    Eric KERGRESSE
    https://sites.google.com/site/erickergresseeirl/
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    juin 2017
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : juin 2017
    Messages : 21
    Points : 27
    Points
    27

    Par défaut

    Merci pour ta réponse, je vais étudier ca pour ma culture

    En revanche, j'ai trouvé une solution plus simple. Je met le nom de mon document en texte alternatif de mon objet ce qui me permet de pouvoir le récupérer dans ma seconde macro

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 20/06/2008, 14h04
  2. Trouver nom objet et non de la classe
    Par Zenklys dans le forum Langage
    Réponses: 4
    Dernier message: 20/11/2007, 23h02
  3. Nom objet variable
    Par totoche dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 04/09/2006, 10h36
  4. [POO] changement nom objet
    Par melou dans le forum JavaScript
    Réponses: 4
    Dernier message: 25/10/2005, 08h44
  5. Réponses: 12
    Dernier message: 21/10/2005, 17h26

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