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 :

Manipulation de signets


Sujet :

VBA Word

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2009
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 177
    Par défaut Manipulation de signets
    Bonjour à Tous,

    Actuellement je travaille sur une macro dont le but et de générer automatiquement un document Word. Les données sont récupérées depuis une base de données.

    Les données à insérer sont sélectionnées selon la valeur du signet.

    Comment récupérer la valeur affectée à chaque signet du document et non son nom, qui permettra par la suite d'insérer pour chacun d'entre eux les données correspondantes.

    Car là actuellement, le nom du signet et de type ET24200 et sa valeur associée est A5-DDI-ET24200. C'est cette valeur associée que je veux récupérer mais je ne vois pas comment faire.

    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 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

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

    Informations forums :
    Inscription : Février 2006
    Messages : 21 086
    Par défaut
    Bonjour et bienvenue sur les forums Office de DVP.

    Pour récupérer des données dans un document, on utilise l'objet Range et sa propriété Text.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    stVar = ActiveDocument.Bookmarks("MonSignet").Range.Text
    Pour y injecter les données, c'est le même principe, mais le signet sera détruit.

    Il existe un moyen de ne pas détruire le signet, tu peux trouver le code s'y rapportant dans les contributions du forum

    http://www.developpez.net/forums/d48...truire-signet/
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2009
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 177
    Par défaut
    je te remercie pour ta réponse.

    j'avance dans mon code... Il est donc possible que je revienne te demander quelques infos.

    Bon dimanche

  4. #4
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Février 2006
    Messages : 21 086
    Par défaut
    C'est quand tu veux !
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  5. #5
    Membre confirmé
    Inscrit en
    Avril 2009
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 177
    Par défaut
    salut

    Voilà une partie du code que j'ai réalisé.
    Le problème c'est que stVar(cpt) ne fonctionne pas, et donc je ne sais pas comment faire pour récupérer l'ensemble des valeurs associé aux signets, afin que part la suite, je puisse effectuer le traitement afin de récupérer les données contenues dans la base.


    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
    ' tableau qui stocke l'ensemble des noms des signets contenus dans le document actif.
     
    Sub TableauSignet()
        Dim bkMark As Bookmark
        Dim strMarks(), stVar() As String
        Dim cpt As Integer
     
        If ActiveDocument.Bookmarks.Count > 0 Then
            ReDim strMarks(ActiveDocument.Bookmarks.Count - 1)
            cpt = 0
            For Each bkMark In ActiveDocument.Bookmarks
                strMarks(cpt) = bkMark
                stVar(cpt) = ActiveDocument.Bookmarks(bkMark).Range.Text
                cpt = cpt + 1
            Next bkMark
        End If
     
    End Sub

    Merci de ton aide.

  6. #6
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Février 2006
    Messages : 21 086
    Par défaut
    Salut,

    Première petite chose,
    Dans cette déclaration :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim strMarks(), stVar() As String
    stVar est bien un string, mais strMarks est un Variant.
    La bonne méthode est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim strMarks() As String, stVar() As String
    Dans le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
       If ActiveDocument.Bookmarks.Count > 0 Then
            ReDim strMarks(ActiveDocument.Bookmarks.Count - 1)
            cpt = 0
            For Each bkMark In ActiveDocument.Bookmarks
                strMarks(cpt) = bkMark
                stVar(cpt) = ActiveDocument.Bookmarks(bkMark).Range.Text
                cpt = cpt + 1
            Next bkMark
        End If
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveDocument.Bookmarks(bkMark).Range.Text
    Cette ligne pose un très gros problème.
    On adresse un signet de cette façon.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveDocument.Bookmarks(1).Range.Text
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveDocument.Bookmarks("MonPremierSignet").Range.Text
    Mais de toute façon, comme nous somme dans une boucle, il n'est pas utile de passer par ActiveDocument....

    Je ferais comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim intBm As Integer
     
    intBM = 0
    For Each bkMark In ActiveDocument.Bookmarks
       stVar(intBm) = bkMark.Range.Text
       intBm = intBm + 1
    Next bkMark
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

Discussions similaires

  1. Enlever tous les signets en une seule manipulation
    Par Fredeboulou dans le forum Word
    Réponses: 1
    Dernier message: 23/11/2009, 13h55
  2. Manipulation des handle contexte
    Par rockbiker dans le forum DirectX
    Réponses: 1
    Dernier message: 09/05/2003, 18h51
  3. [VB6]manipuler les semaines en VB ?
    Par kamadji dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 02/05/2003, 12h33
  4. Réponses: 2
    Dernier message: 18/01/2003, 17h06
  5. Fonctions de manipulation des chaines et des dates
    Par Fares BELHAOUAS dans le forum Débuter
    Réponses: 3
    Dernier message: 09/11/2002, 22h43

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