Définir largeur de colonnes tableaux word via code vba

Liloj -  
yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Je dois mettre en formes des tableaux excel sur word , la plus grosse partie est faite via excel, il ne me reste plus qu'a copier dans word et à redimensionner les colonnes, j'ai environ 80 tableaux à traiter, chacun composés de 5 colonnes avec des largeurs différentes

(ce travail a pour but d'être dans des dimension précise afin d'être inséré dans un document publisher qui part chez l'imprimeur)

Existe-t-il un code vba qui modifierait les largeurs des colonnes de tous les tableaux sélectionnés ? et si oui, si possible de cette manière :

- 1er ligne fusionnée ( 9,1 cm )
- colonne 1 : 1,7 cm
- colonne 2 : 1,6 cm
- colonne 3 : 1 cm
- colonne 4 : 3 cm
- colonne 5 : 1,8 cm

Je vous remercies d'avance de me portait secoure, une semaine que je cherche un code et je n'arrive à rien ....

7 réponses

  1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    bonjour, je pense que tu peux facilement découvrir comment réaliser cela en enregistrant, dans Word, une macro pendant que tu manipules les largeurs de colonne.
    0
  2. Liloj
     
    Bonjour,
    Alors j'ai bien tentée mais avec l'enregistreur macro sur word je n'arrive pas à sélectionner éléments après éléments et faire les manipulations, il me semble donc qu'avec le mode automatique on ne peut pas faire se que je voudrai :(

    C'est la raison pour la quelle je cherche un code en visual basic, je pensais m'en sortir étant donné que j'utilise régulièrement vba avec excel... mais je rame trop :-S
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      as-tu obtenu une macro? tu y verras du code vba dont tu pourras t'inspirer pour modifier ton code VBA dans excel?
      0
      1. Liloj > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
         
        Malheureusement rien ne s'enregistre, j'ai fait au fur et a mesure suspendre et reprendre la macro, mais aucun code dans la macro... j'ai tentée de reproduire un code excel mais non, puis j'ai trouvé le code suivant sur des forums, mais toujours pas... puis bien d'autres, mais rien n'y fait... Vous êtes vraiment mon dernier recoure !

        Je vous remercie encore de prendre du temps pour m'aider à 'résoudre mon problème.

        Sub Format_colonnes()
        '
        ' Format tbl
        For Each colonne In ActiveDocument.Tables_
        .Columns(1).Width = CentimetersToPoints(1.7)
        .Columns(2).Width = CentimetersToPoints(1.6)
        .Columns(3).Width = CentimetersToPoints(1)
        .Columns(4).Width = CentimetersToPoints(3)
        .Columns(5).Width = CentimetersToPoints(1.8)
        Next

        End Sub
        0
      2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > Liloj
         
        effectivement, j'obtiens le même genre de code quand j'enregistre une macro dans Word.
        pourquoi cela ne te convient-il pas?
        0
  3. Liloj
     
    Bien il ne fonctionne pas, j'ai du me tromper quelque part, sa me met : erreur de compilation, référence incorrecte ou non qualifiée

    J'ai beau me cassé la tête je n'arrive pas à comprendre
    0
  4. Liloj
     
    Désolé de mon retour tardif, j'avais des urgences à traiter :-S
    J'espère que mon utilisation des balises soit correcte.
    Pas de ligne indiquée, c'est juste noté erreur de compilation : fonction ou variable attendue
    C'est la première fois que je vois ce code erreur, c'est se qui me fait dire que j'ai du me planter dans la syntaxe du code

    Merci encore pour ton aide !

    Sub Format_colonnes()
    '
    ' Format tbl
    For Each colonne In ActiveDocument.Tables_
    .Columns(1).Width = CentimetersToPoints(1.7)
    .Columns(2).Width = CentimetersToPoints(1.6)
    .Columns(3).Width = CentimetersToPoints(1)
    .Columns(4).Width = CentimetersToPoints(3)
    .Columns(5).Width = CentimetersToPoints(1.8)
    Next
    
    End Sub
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      il devrait y avoir une ligne surlignée au moment où l'erreur se produit.
      j'essaierais plutôt:
      option explicit
      Sub Format_colonnes()
      '
      ' Format tbl
      dim tb as table
      For Each tb In ActiveDocument.Tables
         tb.Columns(1).Width = CentimetersToPoints(1.7)
         tb.Columns(2).Width = CentimetersToPoints(1.6)
         tb.Columns(3).Width = CentimetersToPoints(1)
         tb.Columns(4).Width = CentimetersToPoints(3)
         tb.Columns(5).Width = CentimetersToPoints(1.8)
      Next tb
      
      End Sub
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Liloj
     
    cette fois ci j'ai bien une ligne surlignée... code erreur '5992' sur la ligne suivante :

    tb.Columns(1).Width = CentimetersToPoints(1.7)

    je n'arrive pas à comprendre....
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      aucun message accompagnant l'erreur 5992?
      0
  7. Liloj
     
    si si, le message suivant :

    Impossible d'accéder à des colonnes individuelles de cette collection car le tableau possède des cellules de largeur différentes.
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      cela me semble clair: le tableau n'a pas le meme nombre de colonnes sur toutes les lignes.

      le code travaille sur tous les tableaux du document. si tu veux travailler sur tous les tableaux sélectionnés, essaie de remplacer
      ActiveDocument
      par
      selection
      .
      0
  8. Liloj
     
    Autant pour moi,mes premières lignes étaient fusionnées :-s mais j'ai pallié facilement à ce problème grâce à ta remarque.

    Merci beaucoup pour ton aide !!!!!

    J'ai un petit pb encore sur vba mais excel, dois-je refaire un poste ou poursuivre sur celui ci ?

    Quoi su'il en soit encore merci !
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      il est préférable de marquer ceci comme résolu, et d'ouvrir une nouvelle discussion.
      0