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 03/02/2008, 10h37   #1
Invité de passage
 
Inscription : mai 2003
Messages : 5
Détails du profil
Informations forums :
Inscription : mai 2003
Messages : 5
Points : 1
Points : 1
Par défaut Mise en page Tableau sous Word

Bonjour,

J'ai un tableau constitué dynamiquement sous excel que j'exporte vers un signet d'un document word.

J'arrive à l'exporter, mais pour la mise en page c'est presque ça...
Je n'arrive pas, lorsque j'ai le tableau sur plusieurs page, à faire les bordures sur le bas et sur le haut du tableau. La bordure se met soit en haut ou soit en bas... :c

Pouvez-vous m'aider à résoudre ce problème ?

Merci
PoluxProg est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2008, 16h25   #2
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 354
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 354
Points : 29 270
Points : 29 270
Pourrais-tu nous donner une partie de ton code, que l'on puisse voir d'où vient le problème.
__________________
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 03/02/2008, 19h00   #3
Invité de passage
 
Inscription : mai 2003
Messages : 5
Détails du profil
Informations forums :
Inscription : mai 2003
Messages : 5
Points : 1
Points : 1
Voici mon code :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Dim appWrd As Word.Application
Dim docWord As Word.Document
 
Set appWrd = CreateObject("Word.Application")
appWrd.Visible = False
Set docWord = appWrd.Documents. _
 Open("D:\XXX.doc", ReadOnly:=False)
 docWord.Application.Visible = False
 
FeuilDevis.Cells.Find(What:="Montant HT", After:=ActiveCell, LookIn:=xlFormulas, _
            LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
            MatchCase:=False, SearchFormat:=False).Select
 
 FeuilDevis.Range("A14:E" & CInt(Mid(ActiveCell.Address, 4)) + 2).Copy
 docWord.Bookmarks("Bordereau2").Range.Paste
 
 docWord.Tables(1).AutoFitBehavior wdAutoFitWindow
 
 Application.CutCopyMode = False
 
 docWord.SaveAs "D:\YYY.doc"
 docWord.Close
 appWrd.Quit
Pour le résultat : Voir les deux images jointes

Avec ce code j'exporte mon tableau d'excel vers word avec une bonne largeur. Je me suis arrangé sur excel pour que tous les n lignes (n correspond à une page sur word) j'insère une ligne pour les titres.

Mais voilà, pas de bordure sur le haut du tableau de la deuxième page...
Images attachées
Type de fichier : jpg Tableau Excel.jpg (81,4 Ko, 8 affichages)
Type de fichier : jpg Export WORD.jpg (69,9 Ko, 8 affichages)
PoluxProg est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2008, 19h27   #4
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 354
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 354
Points : 29 270
Points : 29 270
c'est plus facile avec un exemple.
Si c'est un tableau continu, tu peux très bien définir quelles lignes serviront d'entête pour ton tableau.

Pour autoriser des entêtes au tableau :

Code :
 docWord.Tables(1).Rows.HeadingFormat = True
Ça devrait t'éviter de compter les lignes.

Pour ajouter des bordures
Code :
1
2
3
4
5
6
docWord.Tables(1).Select
With Selection.Borders
    .Enable = True
    .InsideLineStyle = wdLineStyleSingle
    .OutsideLineStyle = wdLineStyleDouble
End With
Pour faire plus joli
__________________
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 03/02/2008, 20h56   #5
Invité de passage
 
Inscription : mai 2003
Messages : 5
Détails du profil
Informations forums :
Inscription : mai 2003
Messages : 5
Points : 1
Points : 1
Merci pour ces codes. On sent la maitrise...
Par contre, malgré les avoir insérés dans mon code, j'ai quelques petits soucis...

1) Mon entête n'est pas répété.

2) J'ai un message d'erreur sur les lignes suivantes:
Code :
1
2
3
4
5
With Selection.Borders
    .Enable = True
    .InsideLineStyle = wdLineStyleSingle
    .OutsideLineStyle = wdLineStyleDouble
End With
"Erreur exécution '438' :
Propriété ou méthode non géré par cet objet"
PoluxProg est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2008, 21h46   #6
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 354
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 354
Points : 29 270
Points : 29 270
Pour les titres du tableau, essaye ceci :

Code :
docWord.Tables(1).Rows(1).HeadingFormat = True

Par contre, pour le second code, je ne trouve pas ce qui coince.

Chez moi il passe bien.

Tu dois le mettre après cette ligne :
Code :
docWord.Tables(1).AutoFitBehavior wdAutoFitWindow
__________________
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 04/02/2008, 20h36   #7
Invité de passage
 
Inscription : mai 2003
Messages : 5
Détails du profil
Informations forums :
Inscription : mai 2003
Messages : 5
Points : 1
Points : 1
Bon, J'ai avancé un peu sur le problème...

Pour les bordures, c'est OK.
En fait "Selection" pointait sur une cellule excel donc, il ne comprenait pas les objets liés à cette cellules.

Par contre, pour l'entête répété sur chaque feuille, c'est pas encore ça.
quelque soit les 2 codes suivants, il ne fait pas d'erreur, mais j'ai
l'impression qu'il manque une ligne de code pour rafraichir ou qu'il en prenne compte...

Code :
docWord.Tables(1).Rows(1).HeadingFormat = True
ou
Code :
docWord.Tables(1).Rows.HeadingFormat = True
PoluxProg est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/02/2008, 22h09   #8
Invité de passage
 
Inscription : mai 2003
Messages : 5
Détails du profil
Informations forums :
Inscription : mai 2003
Messages : 5
Points : 1
Points : 1
Bon...
C'est tout bon...
Il fallait simplement rajouter avant le Headinformat la ligne suivante :

Code :
 docWord.Tables(2).AllowPageBreaks = False
Merci Heureux-oli pour le temps passé à m'avoir trouvé les codes adéquate.

@+
PoluxProg est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h37.


 
 
 
 
Partenaires

Hébergement Web