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 :

Texte sur un signet dans l'en tête d'un word


Sujet :

VBA Word

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 86
    Points : 41
    Points
    41
    Par défaut Texte sur un signet dans l'en tête d'un word
    Bonjour,

    J'ai beau chercher sur le net et trouver des solutions, j'ai toujours un souci pour mettre mon texte dans un signet situé dans l'en tête.

    En utilisant ci dessous, il ne trouve pas le signet (alors que j'ai cru comprendre qu'un signet dans un en tête il n y avait pas besoin d'ouvrir l'en tête, mais si ça parait être le cas!)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Range("C1").Select
    Selection.Copy
    oWord.Visible = True
    oWord.Selection.GoTo What:=wdGoToBookmark, Name:="Numrapport"
    oWord.Selection.PasteAndFormat Type:=wdFormatPlainText
    J'ai voulu utiliser ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveDocument.Sections(MA).headers(wdHeaderFooterPrimary).Bookmarks(Numrapport2).Range.Text = T
    Mais j'ai une erreur: membre de méthode ou de données introuvable.

    Voici le code complet:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub Tableauexport()
        Dim oWord As Word.Application
        'Créer une instance de word
       Dim oTbl As Table
       Dim Graphe As ChartObject, w As Integer, h As Integer
       Dim oBK As Bookmark
       Set oWord = GetObject(, "Word.Application")        'Word déjà ouvert
     
      ActiveDocument.Sections(MA).headers(wdHeaderFooterPrimary).Bookmarks(Numrapport2).Range.Text = T
     
     
    End Sub

    Je pense que c'est super facile pour vous, mais pas pour moi ^^ merci

  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,

    Je suppose que "Numrapport2" est le nom du signet.
    Si c'est le cas, il faut qu'il soit entre ".

    La méthode GoTo pour accéder à un signet n'est pas la meilleure selon moi, si on ne se trouve pas dans le bon Story, on passe à côté.

    Donc, les deux derniers sont un peu mieux.

    Par contre, point besoin d'activer l'entête ou le pied de page.

    ActiveDocument.Boockmarks("Numrapport2").Range.Text suffit à donner accès au signet. Comme c'est un objet unique, son index ou nom fait l'affaire.
    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 du Club
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 86
    Points : 41
    Points
    41
    Par défaut
    Merci pour la réponse. Mais j'ai toujours ce souci de: membre de méthode ou de données introuvable

    Je suis en VBA excel (peut être ici le problème?)

    le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Range("C1").Select
    Selection.Copy
    oWord.Visible = True
    ActiveDocument.Boockmarks("Numrapport2").Range.Text

  4. #4
    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,

    Au vu de ta réponse, ton code est exécuté au départ d'une autre application (Excel) ?
    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 du Club
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 86
    Points : 41
    Points
    41
    Par défaut
    Exactement. Le code est dans fichier excel (source de données). Mon word est juste ouvert, le code vient le remplir.
    Donc ma donnée qui va au signet dans word provient du fichier excel aussi

  6. #6
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Apparemment rien ne "relie" ton activedocument à ton application Word; et VBA Excel ne sait pas quoi faire avec cela, parce que dans VBA Excel, il n'y pas d'activedocument.

    Quand tu fais de l'automation, tous les objets de l'application pilotée doivent être reliés à cette application:

    essaie en remplaçant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveDocument.Boockmarks("Numrapport2").Range.Text
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    oWord.ActiveDocument.Boockmarks("Numrapport2").Range.Text
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  7. #7
    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,

    De plus, tu fais un mix des affectations d'objet.

    Dim oWord As Word.Application est généralement suivi de Set oWord = New(Word.Application) ou encore si Word est ouvert Set oWord = Word.Application.

    Mais si on déclare en simple objet avec Dim oWord As Object ensuite on l'affecte avec Set oWrd = CreateObject("Word.Application") ou encore Set oWord = GetObject("Word.Application")Et partant de là, on peut alors utiliser les autres objets de la bibliothèque.
    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 !

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 86
    Points : 41
    Points
    41
    Par défaut
    J'ai changé oWord non plus en application mais en objet. ça ne change rien...
    J'ai aussi mis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    oWord.ActiveDocument.Boockmarks("Numrapport2").Range.Text
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveDocument.Boockmarks("Numrapport2").Range.Text
    pas de différence, toujours problème de méthode non gérée.

    Code complet:

    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
    Sub Tableauexport()
        Dim oWord As Object
        'Créer une instance de word
       Dim oTbl As Table
       Dim Graphe As ChartObject, w As Integer, h As Integer
       Dim oBK As Bookmark
       Set oWord = GetObject(, "Word.Application")        'Word déjà ouvert
     
     
     
    Sheets("prp terrain").Select
     
    Range("C1").Select
    Selection.Copy
    oWord.Visible = True
    oWord.ActiveDocument.Boockmarks("Numrapport2").Range.Text
     
     
    End Sub

  9. #9
    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,

    Il faut lui affecter quelque chose.

    Soit tu utilises du EarlyBinding pour tous tes objets, soit du LateBinding, mais un mix des deux n'est pas une bonne solution.

    Ton code ne va pas fonctionner, si il ne contient rien d'autre, tu obtiens à l'ouverture de Word un document vierge qui ne contient rien dans l'entête.
    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. Réponses: 4
    Dernier message: 02/06/2007, 13h35
  2. Texte sur plusieurs lignes dans un TListBox
    Par BigBenQ dans le forum Composants VCL
    Réponses: 1
    Dernier message: 04/05/2006, 18h58
  3. Texte sur plusieurs lignes dans une cellule de JTable
    Par JeanECN dans le forum Composants
    Réponses: 3
    Dernier message: 10/04/2006, 18h20
  4. [jtable] Champs texte sur pls ligne dans cellule
    Par doudine dans le forum Composants
    Réponses: 8
    Dernier message: 17/11/2005, 13h36
  5. Réponses: 2
    Dernier message: 21/09/2005, 13h18

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