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 :

Centrer tableau vba word ? [WD-2003]


Sujet :

VBA Word

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 57
    Points : 18
    Points
    18
    Par défaut Centrer tableau vba word ?
    Hello à vous tous.


    Voilà mon pb ...

    Je fais 3 tableaux dans word..

    et via une Macro je souhaiterais les centrer sur la page..

    j'ai essayé ce code mais il y a message d'erreur zarbi ..
    (le 1° tableau se centre bien mais pas les autres ... car ....erreur renvoyé par vba ...)

    le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    For i = 1 To 3
        ActiveDocument.Tables(i).Select
        With Selection.Tables(i).Rows
        .HorizontalPosition = wdTableCenter
        End With
    Next
    l'erreur renvoyée ..


    zarbi semble que le pb provient du "i" (compteur)

    or, mon document word a bien 3 tableaux et pourquoi cela marcherait pour le 1° tableau et pas les autres ?

    @ vous lire.

    merci de votre aide

    --

    aussi essayé avec ce code.. même pb ..

    le 1° tableau s'aligne bien au centre mais pas les autres ..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    ActiveDocument.Tables(1).Rows.Select                  'selection du 1° tableau
    Selection.Tables(1).Rows.Alignment = wdAlignRowCenter 'alignement au centre entre les marges
    ActiveDocument.Tables(2).Rows.Select                  'selection du 2° tableau
    Selection.Tables(2).Rows.Alignment = wdAlignRowCenter 'alignement au centre entre les marges
    ActiveDocument.Tables(3).Rows.Select
    Selection.Tables(3).Rows.Alignment = wdAlignRowCenter
    même erreur sur la ligne en orange.. ?

    Merci de votre aide

  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,

    Essaie de compter les tableaux de ton document en VBA

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox ActiveDocument.Tables.Count
    Il est plus simple lorsque l'on souhaite travailler sur les membres d'une collection d'utiliser une boucle For Each ... Next

    Dans ton cas on aurait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim oTbl As Table
     
    For Each oTbl in ActiveDocument.tables
    oTbl.Rows.Alignment = wdAlignRowCenter
     
    Next oTbl
    On est de cette façon certain de ne pas tomber sur un membre hors de la collection

    On peut faire une boucle est arrêter sur le dernier élément et pas un nombre fixe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For i = 1 to ActiveDocument.tables.Count

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 57
    Points : 18
    Points
    18
    Par défaut
    tout d'abord,
    Merci de ta réponse rapide Heureux-oli,

    1) Ta 1° suggestion
    "Essaie de compter les tableaux de ton document en VBA"

    je viens de faire un autre essai .. (avec seulement 2 tableaux cette fois)

    avec ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    NbTab = ActiveDocument.Tables.Count
    For i = 1 To NbTab
        ActiveDocument.Tables(i).Select
        With Selection.Tables(i).Rows
        .HorizontalPosition = wdTableCenter
        End With
    Next
    blocage sur la ligne en rouge ..
    le tableau 2 est bien sélectionné mais ... message d'erreur
    (code d'éxécution 5941, Le membre de la collection requis n''existe pas.. ?)

    2) Ton autre suggestion .. For each :

    le code s'éxécute cette fois sans erreur mais aucun alignement ne s'effectue ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Dim oTbl As Table
     
    For Each oTbl in ActiveDocument.tables
    oTbl.Rows.Alignment = wdAlignRowCenter
     
    Next oTbl
    Je ne comprends pas pourquoi cela ne fonctionne pas ..
    @ te lire et merci de ton aide

    EDIT

    Nouvel essai ...
    avec la boucle For Each cela fonctionne ...

    pourquoi cela ne passait pas avant ??
    le principal est que cela passe..
    merci encore, @+

    Pour Info..
    Pour Mettre résolu, il faut éditer le 1° post et mettre [Résolu] ou il y a une case à cocher sous le message ou autre ?

    ............................
    Pti renseignement si possible..

    si je crée 2 tableaux (alignés à gauche) et que je lance la macro, l'alignement se fait bien au centre OK..
    si je clique sur le tableau et sur l'icone (alignement à gauche)
    je remet donc le tableau alignement à gauche..
    si je relance la macro, cela remarche ...

    Par contre
    si je crée 2 tableaux (alignés à gauche)
    je lance la macro, => alignement centre OK ..
    Mais si je sélectionne ensuite "manuellement" le tableau et fais un cliquer déplacer afin de le remettre à gauche (afin de relancer la macro par exemple)
    et si je relance la macro, cela ne fonctionne plus ???, cela ne le ré-aligne plus au centre ?
    (or dans les propriétés du tableau une fois le cliqué déplacé fait, on voit bien qu'il est aligné à gauche ..)
    => donc pourquoi la macro ne ré-aligne plus au centre ?
    As tu une explication ?

    --
    autre info si possible ...
    quand on crée un tableau sous word, il n'y a pas d'option qui permet de le supprimer ..
    perso .. je fais couper ... car je n'ai jamais trouvé ..
    sais tu comment faire ?

    Merci de tes réponses si possible

  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,

    Pour le résolu, il suffit de cliquer sur le bouton résolu sous le message.

    Pour l'alignement, chez moi, ça fonctionne à tous les coups.


    Pour supprimer le tableau, c'est via le menu.
    Delete ne fait que vider la table.
    Ou alors, il faut sélectionner un paragraphe avant et un paragraphe après.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 57
    Points : 18
    Points
    18
    Par défaut
    Re Heureux-oli,

    Tes Propos en noir
    Mes Réponses/Questions en bleu

    Pour le résolu, il suffit de cliquer sur le bouton résolu sous le message.
    => Ok

    Pour l'alignement, chez moi, ça fonctionne à tous les coups.
    Même quand tu fais manuellement un cliquer déplacer du tableau sur ta fenêtre de word ?

    Pour supprimer le tableau, c'est via le menu.
    => Quel menu ? ............Edition ? ou autre

    Delete ne fait que vider la table.
    => Ok

    Ou alors, il faut sélectionner un paragraphe avant et un paragraphe après.
    => Ok

    Merci de tes infos et réponses.
    @+

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

    tu sélectionnes tout le tableau, http://word.developpez.com/faq/?page...bleauselection

    Tableau => Supprimer => Tableau

    Pour l'alignement, chez moi, ça fonctionne à tous les coups.
    Même quand tu fais manuellement un cliquer déplacer du tableau sur ta fenêtre de word ?
    Oui, si j'utilise le bouton se trouvant dans la barre d'outils.
    Si le tableau est déplacé à la souris, ça ne fonctionne pas si il y a eu déplacement vertical en plus du déplacement latéral.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 57
    Points : 18
    Points
    18
    Par défaut
    Re,

    pour la suppression du tableau, ok, merci .

    Salut,
    Si le tableau est déplacé à la souris, ça ne fonctionne pas si il y a eu déplacement vertical en plus du déplacement latéral.
    ok, donc comme chez moi ..
    Mais c'est quand même zarbi ...

    le fait que l'on déplace un tableau en hauteur de devrait pas "jouer" sur la demande d'alignement au centre ? ou je me trompe ?

    la procédure vba demande à aligner au centre et ce peut importe la position verticale ..
    d'où quoi qui cloche ?

    de quoi le pb peut-il venir à ton avis ?

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

    Si, le fait de le déplacer verticalement modifie son alignement, mais je n'en sait pas plus.

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 57
    Points : 18
    Points
    18
    Par défaut
    Citation Envoyé par Heureux-oli Voir le message
    Salut,

    Si, le fait de le déplacer verticalement modifie son alignement, mais je n'en sait pas plus.
    je viens de remarquer quelque chose..

    sous Word, si on crée un tableau,

    et si, ensuite, on le sélectionne, puis clic droit "Propriétés du tableau", onglet tableau
    on voit en grisé un bouton "position" (ce bouton est donc non accessible ..)



    si on bouge ce tableau horizontalement le bouton reste grisé..(même si on bouge le tableau au delà des marges)
    -------------------------
    mais si on le bouge verticalement, hop ce bouton grisé apparaît ..... ????



    sur cette image ..

    Le 1° tableau a bougé seulement horizontalement

    Le 2° a bougé verticalement



    On remarque une différence au niveau des marques de paragraphe ..
    Pour le 1° Tableau il y a seulement 1 marque de paragraphe avant et 1 autre marque après le tableau (en rouge)
    Pour le 2° Tableau il y a d'autres marques de paragraphe (1 en plus à chaque ligne..) (en vert)

    Le pb pourrait-il venir de cette particularité ?

    ps..(pour le 2° tableau)
    (si on le selectionne et via clic droit sur le tableau / Propriétés du tableau / Tableau et centrer au milieu).., cela se passe bien ...et le tableau se centre bien ...

    c'est quand même zarbi ce truc ...

    Un avis sur cette remarque ?


    -----------------------------------------------------------------

    de plus ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ActiveDocument.Tables(1).Rows.Select                  'selection du 1° tableau
    Selection.Tables(1).Rows.Alignment = wdAlignRowCenter 'alignement au centre entre les marges
    ActiveDocument.Tables(2).Rows.Select                  'selection du 2° tableau
    Selection.Tables(2).Rows.Alignment = wdAlignRowCenter 'alignement au centre entre les marges
    ActiveDocument.Tables(3).Rows.Select
    Selection.Tables(3).Rows.Alignment = wdAlignRowCenter
    l'erreur de VBA "(code d'éxécution 5941, Le membre de la collection requis n''existe pas.. ?)" (1° post)

    c'est une erreur zarbi car ...
    on pourrait être amené à penser que l'indice (2) met en erreur l'exécution ...
    et qu'il ne trouve pas de 2° tableau ....
    or , en faisant "pas à pas" (F8), je vois bien que la sélection du tableau 2 se passe bien à l'exécution ..
    aucune erreur, la ligne de code passe bien ....
    => en fait l'erreur est renvoyée au moment du centrage ....
    (Selection.Tables(2).Rows.Alignment)

    ---
    et aussi,...........
    si je remplace ces 2 lignes ..
    Selection.Tables(2).Rows.Alignment
    Selection.Tables(3).Rows.Alignment

    par ce code : (3 tableaux dans le document..)
    Selection.Tables(1).Rows.Alignment

    et oui je remplace le 2 et le 3 par 1.......
    et là, ...tout se passe impec ......
    ???????????????????

    le code entier donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ActiveDocument.Tables(1).Rows.Select                  'selection du 1° tableau
    Selection.Tables(1).Rows.Alignment = wdAlignRowCenter 'alignement au centre entre les marges
    ActiveDocument.Tables(2).Rows.Select                  'selection du 2° tableau
    Selection.Tables(1).Rows.Alignment = wdAlignRowCenter 'alignement au centre entre les marges
    ActiveDocument.Tables(3).Rows.Select                  'selection du 3° tableau
    Selection.Tables(1).Rows.Alignment = wdAlignRowCenter 'alignement au centre entre les marges
    Avec cela tout s'aligne impeccablement, plus d'erreur ....
    (sauf les tableaux bougés verticalement) ..

    Mystère, mystère .............
    Un avis ?

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

    La gestion des tableaux est un peu zarbi.
    Le déplacement vertical opère une transformation du tableau un peu comme pour les images lorsqu'elles deviennent flottantes.

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 57
    Points : 18
    Points
    18
    Par défaut
    Re,

    Merci pour les réponses.

    C'est donc résolu "partiellement".

    vraiment zarbi la gestion des tableaux sous word en VBA.

    Car résultat des courses..
    l'alignement ne peut se faire qu'à la condition que le tableau n'est jamais été "bougé" verticalement.

    ce serait quand même intéressant de savoir comment faire....
    mais on a pallié partiellement...
    (faudrait voir un spécialiste vba "Application" ou "vb" ... c'est quand même un monde ...
    on utilise les bonnes valeurs et on n'obtient pas le résultat escompté ..

    Mais dans tous les cas ..

    Etant tout nouveau sur ce forum

    je dis vraiment +++ pour la réaction aux questions et la pertinence des réponses.

    Merci à DVP et à Heureux-oli

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

Discussions similaires

  1. Masquer un tableau selon critères VBA Word
    Par domseeker dans le forum VBA Word
    Réponses: 8
    Dernier message: 05/01/2009, 18h13
  2. Manipulation d'un tableau sous Word avec vba
    Par Françoise Sagan dans le forum VBA Word
    Réponses: 1
    Dernier message: 02/12/2006, 13h54
  3. (VBA Word]Naviguer dans un tableau word
    Par aA189 dans le forum VBA Word
    Réponses: 6
    Dernier message: 17/09/2006, 20h14
  4. VBA Word - Connaître le n° d'un tableau
    Par sat478 dans le forum VBA Word
    Réponses: 1
    Dernier message: 02/08/2006, 20h49
  5. [VBA][WORD]Identifier un tableau dans un document
    Par mister3957 dans le forum VBA Word
    Réponses: 15
    Dernier message: 10/01/2006, 13h56

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