Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Word > VBA Word
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/11/2010, 11h20   #1
Invité de passage
 
Inscription : novembre 2010
Messages : 7
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 7
Points : 0
Points : 0
Par défaut Répéter en-tête de tableaux en haut de page

Bonjour

Je travaille sous Word 2003 ( VB 6.03) et je voudrais modifier à la volée tous les tableaux d'un très long document.

la modification porte sur le fait de "Répéter en haut de chaque page la ligne d'en-tête" de chaque tableau.

je pense qu'une macro doit pouvoir faire cette modification pour l'ensemble des tableaux, mais comme je n'y connais rien, je m'en remets aux spécialistes.

merci de votre aide.

DOUGLASS
douglass est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2010, 21h29   #2
Modérateur
 
Homme Christophe CHAPAT
Spécialiste progiciel
Inscription : février 2010
Messages : 972
Détails du profil
Informations personnelles :
Nom : Homme Christophe CHAPAT
Âge : 25
Localisation : France, Haute Loire (Auvergne)

Informations professionnelles :
Activité : Spécialiste progiciel
Secteur : Service public

Informations forums :
Inscription : février 2010
Messages : 972
Points : 1 573
Points : 1 573
Envoyer un message via MSN à carden752
Bonjour,

y'a t-il un seul tableau par page ?
Oui, c'est effectivement possible en VBA

Cordialement,
Christophe
carden752 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2010, 22h13   #3
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 302
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 302
Points : 29 039
Points : 29 039
Salut,

Est-ce un tableau par page ou un tableau sur plusieurs pages ?
si c'est un tableau sur plusieurs pages, point besoin de code, dans les options des tableaux, on peut définir la ou les lignes qui seront utilisées comme titre pour les colonnes.

Sinon, en VBA, un tableau est un objet qui possède des sous objets (lignes, colonnes, cellules).

On peut ajouter une ligne à un tableau et remplir cette ligne avec des données.
On peut même pousser la plaisenterie à "lier" les titres à ceux d'un tableau précis.

Mais si tu pouvais nous en dire plus, notre réponse serait plus précise.
__________________
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 !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2010, 09h39   #4
Invité de passage
 
Inscription : novembre 2010
Messages : 7
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 7
Points : 0
Points : 0
Bonjour et merci de vos réponses.

Premier point concernant le document Word :
il s'agit d'un document généré automatiquement et donc les tableaux contenus n'ont pas de "styles". C'est pour cela que je peux pas intervenir sur les options des tableaux (à moins de le faire tableau par tableau).

Deuxième point concernant la répartition des tableaux :
dans le doc word, on trouve les tableaux répartis sans règle précise, une page peut en contenir 2 ou bien un tableau peut se retrouver sur 5 ou 6 pages. Tous les tableaux ne sont pas à cheval sur plusieurs pages.

Ce que j'ai tenté, c'est la macro suivante "Selection.Rows.HeadingFormat = True" qui permet de répéter l'en-tête du tableau sur la page suivante. cette macro fonctionne si le curseur est dans le tableau à l'identique de la fonction Tableaux / Titres.
Puis j'ai complété la macro avec une condition du style "For each... Next". Ce qui donne la macro suivante :


Code :
1
2
3
4
5
6
7
8
9
10
11
12
Sub Macro4()
'
' Macro4 Macro
' Macro enregistrée le 22/11/2010 par chgon
'
Dim oTbl As Table
 
For Each oTbl In ActiveDocument.Tables
Selection.Rows.HeadingFormat = True
Next oTbl
 
End Sub
Mais cela ne fonctionne que pour un tableau, celui dans lequel se trouve le curseur.

Si vous avez une solution...

Encore merci de votre aide.

Doug
douglass est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2010, 10h19   #5
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 302
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 302
Points : 29 039
Points : 29 039
Salut,

Ce code fonctionne sur tous les tableaux du document, mais ne donnera de l'effet que pour les tableaux répartis sur plusieurs pages.
__________________
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 !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2010, 11h42   #6
Invité de passage
 
Inscription : novembre 2010
Messages : 7
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 7
Points : 0
Points : 0
Citation:
Envoyé par Heureux-oli Voir le message
Salut,

Ce code fonctionne sur tous les tableaux du document, mais ne donnera de l'effet que pour les tableaux répartis sur plusieurs pages.
Bonjour,

Chez moi le code ne fonctionne que pour le tableau dans lequel est positionné le curseur.

si le curseur est positionné ailleurs, l'éxécution de la macro renvoie l'erreur suivante : "Erreur d'éxécution" "le membre de la collection n'existe pas" et l'instruction suivante est surlignée
Code :
Selection.Rows.HeadingFormat = True
douglass est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2010, 11h50   #7
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 302
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 302
Points : 29 039
Points : 29 039
Salut,

Effectivement, ce morceau de code m'a échappé.

Code :
1
2
3
4
5
6
 
Dim oTbl As Table
 
For Each oTbl In ActiveDocument.Tables
otbl.Rows.HeadingFormat = True
Next oTbl
Selection représente le curseur de la souris.
__________________
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 !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2010, 12h14   #8
Invité de passage
 
Inscription : novembre 2010
Messages : 7
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 7
Points : 0
Points : 0
Merci mais la macro ne marche toujours pas.

j'ai éxécuté la macro en me positionnant juste avant un tableau scindé. J'ai bien vu qu'il se passait qq chose (sablier et temps de latence) mais aucun résultat sur les en-têtes des tableaux.

Est-ce que c'est parce que certains tableaux ne sont pas scindés ?

merci.
douglass est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2010, 15h14   #9
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 302
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 302
Points : 29 039
Points : 29 039
Salut,

J'avais demandé quelques précisions sur ce que tu souhaitais faire.
En réponse, tu as fourni un morceau de code.

Ce code sert juste à autoriser les titres des tableaux, mais pas de les mettre.
Donc, qu'il n'y ait pas changement visible est normal.
__________________
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 !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2010, 16h44   #10
Invité de passage
 
Inscription : novembre 2010
Messages : 7
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 7
Points : 0
Points : 0
Salut

Ce que je cherche à faire c'est répéter les en-têtes de tableaux pour tous les tableaux affichés sur plusieurs pages et cela de façon automatisée car il y a trop de tableaux pour effectuer un traitement tableau par tableau.

je rajoute ce que j'ai dit précédemment :

Premier point concernant le document Word :
il s'agit d'un document généré automatiquement et donc les tableaux contenus n'ont pas de "styles". C'est pour cela que je peux pas intervenir sur les options des tableaux (à moins de le faire tableau par tableau).

Deuxième point concernant la répartition des tableaux :
dans le doc word, on trouve les tableaux répartis sans règle précise, une page peut en contenir 2 ou bien un tableau peut se retrouver sur 5 ou 6 pages. Aussi, tous les tableaux ne sont pas à cheval sur plusieurs pages.

quelles autres précisions peuvent t'aider ?

merci
douglass est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2010, 20h23   #11
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 302
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 302
Points : 29 039
Points : 29 039
Salut,

Essaie ce code :

Code :
1
2
3
4
5
6
7
8
9
 
Sub TitreTable()
Dim oTbl As Table
 
For Each oTbl In ActiveDocument.Tables
oTbl.Rows(1).Select
    Selection.Rows.HeadingFormat = wdToggle
Next oTbl
End Sub
__________________
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 !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 26/11/2010, 10h48   #12
Invité de passage
 
Inscription : novembre 2010
Messages : 7
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 7
Points : 0
Points : 0
Bonjour et merci pour ce code qui marche... jusqu'à ce que le message suivant s'affiche "Impossible d'accéder à des colonnes individuelles de cette collection car le tableau possède des cellules fusionnées vertiacalement".

Donc je me retrouve à nouveau bloqué !
De plus, à l'affichage de ce message d'erreur, le tableau sélectionné ne contient aucune cellule fusionnée (mais c'est sûr, plusieurs tableaux ont des cellules fusionnées).

Aussi, je voudrais pouvoir relancer la macro sans qu'elle tienne compte de ces tableaux à cellules fusionnées, ou du moins continuer à l'exécuter. Car malheureusement, la boite de dialogue qui affiche l'erreur d'éxécution ne permet pas de continuer car le bouton CONTINUER n'est pas accessible.

merci.
douglass est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/11/2010, 13h24   #13
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 302
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 302
Points : 29 039
Points : 29 039
Salut,

En début du code, essaie d'ajouter

__________________
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 !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 26/11/2010, 15h45   #14
Invité de passage
 
Inscription : novembre 2010
Messages : 7
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 7
Points : 0
Points : 0
Et bien MERCI de ton aide. Ce coup çi, ça marche comme je veux.

Code :
1
2
3
4
5
6
7
8
9
10
 
On Error Resume Next
Dim oTbl As Table
 
For Each oTbl In ActiveDocument.Tables
oTbl.Rows(1).Select
    oTbl.Rows(1).HeadingFormat = True
Next oTbl
 
End Sub
pour moi le pb est réglé.


bonne continuation.
douglass est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/11/2010, 18h15   #15
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 302
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 302
Points : 29 039
Points : 29 039
Salut,

quand on pense avoir obtenu une solution, on fait un petit clic sur le bouton au bas du fil de discussion.
__________________
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 !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h47.


 
 
 
 
Partenaires

Hébergement Web