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 :

insertion de tableau (à la bonne place!).


Sujet :

VBA Word

  1. #1
    Membre à l'essai
    Inscrit en
    Juillet 2008
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 19
    Points : 14
    Points
    14
    Par défaut insertion de tableau (à la bonne place!).
    Bonjour

    A partir d'un fichier excel avec du code VB, j'ouvre un document word et j'y place mes données .
    Tout va bien.
    A partir d'excel avec du code VB, j'ouvre un document word, je crée un tableau et j'y place par exemple le titre du document.
    Tout va bien

    Mais quand j'essaye de faire les deux en même temps et bien tout mon texte se place dans ce tableau avec le titre en dernière position!
    Malgré que je déclare ce tableau avec le titre avant le code VB du traitement du fichier excel.

    Il se pourrait que je ne maîtrise pas bien le propriété "range" mais j'ai un peu tout essayé en vain.

    De plus il me faudrait également placer un tableau à différent endroits de ce texte WORD: par exemple je fais un traitement sur (dans mon cas ) une commune et je veux que cette commune se place dans un tableau pour éventuellement y introduire un grisé, etc...
    Merci d'avance de vos réponses

  2. #2
    Rédacteur/Modérateur
    Avatar de Jeannot45
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2004
    Messages
    3 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 871
    Points : 8 489
    Points
    8 489
    Par défaut


    Bienvenu sur le Forum, je te joins un petit fichier excel exemple qui te fait le transfert d'un tableau Excel dans un document Word à un endroit précis du document. Cet endroit du document Word doit d'abord être défini par un signet (Insertion -> Signet)

    Bonne continuation
    Fichiers attachés Fichiers attachés
    Jeannot

    Liens Office indispensables à visiter: Cours (Tutos), F.A.Q., Sources VBA

    Ne posez pas de questions par MP, je n'ai pas le temps d'y répondre

  3. #3
    Membre à l'essai
    Inscrit en
    Juillet 2008
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 19
    Points : 14
    Points
    14
    Par défaut
    Salut

    Merci pour ta réponse
    Je vais la tester lundi au bureau car le WE je n'ai pas l'environnement adéquat
    J'ai trouvé avec une macro word (et en recopiant son code dans mon code VB sous excel)comment insérer le titre général du document Word dans un tableau puis commencer à écrire quelques lignes plus bas.
    Mais pour le reste je suis bloqué et j'espère que ta solution me dépannera.

    Didier

  4. #4
    Membre à l'essai
    Inscrit en
    Juillet 2008
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 19
    Points : 14
    Points
    14
    Par défaut
    Salut

    J'ai bien examiné ton fichier mais je n'ai rien trouvé en ce qui concerne les tableaux (mais j'ai gardé d'autres choses intéressantes)

    Voici une partie de mon code (simplifié)

    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
    Dim WordApp As Word.Application
     Dim DocWrd As Word.Document
     Set WordApp = CreateObject("Word.Application")
     WordApp.Visible = True
     Set Data = Sheets("Données").range("AB17")
     Records = Application.CountA(Sheets("Données").range("AB:AB"))
     
     For i = 1 To Records - 1
     
           With WordApp.Selection
                    .TypeText Text:="  DIVISION/AFDELING:   " & UCase(Data.Cells(i, 9).Value)
                   .TypeParagraph
          end With
     
     next i
     
    Je voudrais insérer un tableau(1ligne/1colonne) à la place de .TypeText Text
    en sachant que j'ai déjà inséré un tableau tout au début de l'application comme ceci:
     
    Set myrange = DocWrd.Content
    myrange.Collapse Direction:=wdCollapseEnd
    DocWrd.Tables.Add range:=myrange, NumRows:=1, NumColumns:=1
    DocWrd.Tables(1).Cell(Row:=1, Column:=1).range.InsertAfter Text:="          RAPPORT JOURNALIER"

    Je ne maîtrise pas la propriété "myrange" et toutes ses subtilités, c'est peut-être là le problème.
    Un grand merci d'avance

  5. #5
    Expert éminent
    Avatar de Sepia
    Homme Profil pro
    Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Inscrit en
    Octobre 2007
    Messages
    3 117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 3 117
    Points : 6 856
    Points
    6 856
    Par défaut Ecrire dans un tableau
    Salut,

    Ton problème vient du fait que tu es à l'intérieur du tableau et donc lorsque tu insères tu le fais dans le tableau. Or il semble que ce ne soit pas ce que tu veuilles. Si c'est le cas, tu dois te décaler d'un caractère après la 1ere partie de macro pour ne plus être dans le tableau et que l'ensemble fonctionne comme tu le veux.

    @+

  6. #6
    Membre à l'essai
    Inscrit en
    Juillet 2008
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 19
    Points : 14
    Points
    14
    Par défaut
    Merci Sepia pour ta réponse

    Après mon tableau correspondant au titre de mon document je fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     With WordApp.Selection
                  .MoveDown unit:=wdLine, Count:=2
                  .TypeParagraph
                  .TypeParagraph
                  .TypeParagraph
     End With
    Magré cela quand je défini un tableau n'importe où après dans le code(mais de la même façon c'est à dire avec exactement le même code), son contenu s'affiche dans le premier tableau.
    Donc il y a encore une petite subtilité que je ne maîtrise pas!
    J'ai beau chercher mais je ne trouve pas et comme d'habitude cela doit-être juste un petit quelque chose

  7. #7
    Membre à l'essai
    Inscrit en
    Juillet 2008
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 19
    Points : 14
    Points
    14
    Par défaut
    Comme j'ai trouvé tout seul comme un grand (merci quand même aux deux seules personnes qui m'ont répondu), si cela peut servir à d'autres:


    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
     
    dim cptDivision as integer
    cptDivision = 2 ' car le tableau du titre à déjà l'indice 1
    If cptCommune = 0 Then
       Set myrange = DocWrd.Content
       myrange.Collapse Direction:=wdCollapseEnd
       DocWrd.Tables.Add range:=myrange, NumRows:=1, NumColumns:=1
       DocWrd.Tables(CptDivision).Cell(Row:=1, Column:=1).range.Font.Size = 18
       DocWrd.Tables(CptDivision).Cell(Row:=1, Column:=1).range.Font.Bold = True
       DocWrd.Tables(CptDivision).Cell(Row:=1, Column:=1).range.InsertAfter Text:="      DIVISION/AFDELING:   " & UCase(SaveCommune)
       DocWrd.Tables(CptDivision).Cell(Row:=1, Column:=1).range.Shading.BackgroundPatternColorIndex = wdGray25
       .MoveDown unit:=wdLine, Count:=2
       .TypeParagraph
       .TypeParagraph
        CptDivision = CptDivision + 1
    End If
    Bref pour chaque nouveau tableau il faut un indice différent

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

Discussions similaires

  1. Rank 3 , bonne place ou moyen
    Par lionel20 dans le forum Référencement
    Réponses: 5
    Dernier message: 18/09/2007, 17h33
  2. page footer pas à la bonne place dans sous rapport
    Par Invité dans le forum Jasper
    Réponses: 2
    Dernier message: 13/07/2007, 12h30
  3. comment trier par insertion un tableau bidimentionnel??
    Par joan_al_catala dans le forum C
    Réponses: 19
    Dernier message: 21/05/2006, 19h20
  4. Insertion de tableau dans JTextArea et MouseListener
    Par Janitrix dans le forum Composants
    Réponses: 1
    Dernier message: 05/11/2005, 01h08
  5. insertion de tableau
    Par ma_mat dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 10/11/2004, 10h50

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