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 :

Définir le HeadingFormat sur 2 lignes d'un tableau contenant des cellules fusionnées [WD-2013]


Sujet :

VBA Word

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    239
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 239
    Points : 84
    Points
    84
    Par défaut Définir le HeadingFormat sur 2 lignes d'un tableau contenant des cellules fusionnées
    Bonjour,

    Dans le cadre du développement d'un outil, je me heurte à la difficulté suivante :
    Je copie/colle un tableau d'Excel vers Word. Ce tableau possède 2 lignes d'en-tête, contenant des cellules fusionnées dans le sens de la hauteur et de la largeur, que je souhaitent définir comme HeadingFormat.

    J'ai activé la référence "Microsoft Word xx.x object library".

    Le code est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    oDoc.Tables(iWS + tableOffset).Rows(1).Select
    Selection.MoveDown wdLine, 1, wdExtend
    Il me renvoie l'erreur "propriété ou méthode non gérée par cet objet" sur l'exécution de la 2ème ligne...

    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,

    C'est à cause des cellules fusionnées que ton tableau contient.
    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 régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    239
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 239
    Points : 84
    Points
    84
    Par défaut
    Bonjour,

    Merci pour ta réponse. Effectivement, il semble impossible de pouvoir sélectionner via le code VBA des lignes d'un tableau comportant, en vertical ou en horizontal, des cellules fusionnées.
    Par conséquent, ma solution aura été de fusionner mes cellules une fois le tableau collé et la définition des lignes d'entête à répéter sur chaque page réalisée.
    Par ailleurs, une erreur s'était glissée dans le code publié précédemment. En effet, la méthode "sélection" sous Word appartient à l'objet "Word.Application" et non "Word.Application.Documents".

    Le code suivant utilise un classeur Excel contenant la macro VBA pour coller un tableau dans un document Word sur un signet (présent dans le document au préalable):

    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
    38
    39
    40
    41
    42
    43
    44
    45
    Sub ExcelToWord()
            dim WB as Workbook
            dim WS as Worksheet
            dim aRange as Range
            dim oWord As Word.Application
            dim oDoc As Word.Document
     
            '# Définition des variables
            set WB = thisWorkbook
            set WS = WB.Worksheets("uneFeuille")
            Set oWord = CreateObject("Word.Application")
            oWord.Visible = True
            aFile = "template.docx"
            aPath = WB.Path & "\" & aFile
            Set oDoc = oWord.Documents.Open(aPath)
     
            '# Copier le tableau
            Set aRange = WS.Range(WS.Cells(1, 1), WS.Cells(5, 5))
            aRange.Copy
     
            '# Coller le tableau
            aBookmark = "unSignet"
            oWord.Selection.GoTo What:=wdGoToBookmark, Name:=aBookmark
            oWord.Selection.PasteAndFormat (wdPasteDefault)
     
            '# Répéter l'entête du tableau #1
            iTable = 1
            oDoc.Tables(iTable).Rows(1).Select
            oWord.Selection.MoveDown Unit:=wdLine, Count:=1, Extend:=wdExtend
            oWord.Selection.Rows.HeadingFormat = True
     
            '# Fusionner les cellules
            oDoc.Tables(iTable).Cell(1, 1).Merge mergeTo:=oDoc.Tables(iTable).Cell(2, 2)
            oDoc.Tables(iTable).Cell(1, 1).VerticalAlignment = wdCellAlignVerticalCenter
            aText = cleanText(oDoc.Tables(iTable).Cell(1, 1).Range.Text)
            oDoc.Tables(iTable).Cell(1, 1).Range.Text = aText
    End Sub
     
    '# Fonction cleanText - La fusion des cellules entraîne l'apparition de caractères spéciaux
    Function cleanText(aText As String) As String
            aText = Replace(aText, Chr(160), "")
            aText = Replace(aText, Chr(10), "")
            aText = Replace(aText, Chr(13), "")
            cleanText = aText
    End Function
    A+,
    'Lothentik

  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,

    Euh, la selection du code se faisait sur la ligne 1 du tableau et le code était bon.
    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 !

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

Discussions similaires

  1. Réponses: 20
    Dernier message: 16/11/2014, 11h40
  2. Tri sur plusieurs champs d'un tableau contenant des objets
    Par swampsnake dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 01/07/2011, 13h14
  3. Réponses: 2
    Dernier message: 15/02/2010, 01h07
  4. [Tableaux] lien sur les lignes d'un tableau
    Par einsteineuzzz dans le forum Langage
    Réponses: 2
    Dernier message: 19/06/2006, 14h16
  5. changement de couleur sur les lignes d'un tableau
    Par brasco06 dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 13/04/2006, 18h03

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