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 24/11/2011, 08h18   #1
Nouveau Membre du Club
 
Inscription : février 2003
Messages : 164
Détails du profil
Informations forums :
Inscription : février 2003
Messages : 164
Points : 30
Points : 30
Par défaut Formatage d'un tableau

J'ai voulu créer une macro qui me permet d'afficher tous les bords d'un tableau :

Code :
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
46
47
48
49
50
Sub AA2BordureTrame()
'
' BordureTrame Macro
'
'
Selection.HomeKey unit:=wdStory ' place le curseur en debut du document
 
ActiveDocument.Tables(1).Select
 
    With Selection.Tables(1)
        With .Borders(wdBorderLeft)
            .LineStyle = wdLineStyleSingle
            .LineWidth = wdLineWidth050pt
            .Color = wdColorAutomatic
        End With
        With .Borders(wdBorderRight)
            .LineStyle = wdLineStyleSingle
            .LineWidth = wdLineWidth050pt
            .Color = wdColorAutomatic
        End With
        With .Borders(wdBorderTop)
            .LineStyle = wdLineStyleSingle
            .LineWidth = wdLineWidth050pt
            .Color = wdColorAutomatic
        End With
        With .Borders(wdBorderBottom)
            .LineStyle = wdLineStyleSingle
            .LineWidth = wdLineWidth050pt
            .Color = wdColorAutomatic
        End With
        With .Borders(wdBorderHorizontal)
            .LineStyle = wdLineStyleSingle
            .LineWidth = wdLineWidth075pt
            .Color = wdColorAutomatic
        End With
        With .Borders(wdBorderVertical)
            .LineStyle = wdLineStyleSingle
            .LineWidth = wdLineWidth075pt
            .Color = wdColorAutomatic
        End With
        .Borders(wdBorderDiagonalDown).LineStyle = wdLineStyleNone
        .Borders(wdBorderDiagonalUp).LineStyle = wdLineStyleNone
        .Borders.Shadow = False
    End With
    With Options
        .DefaultBorderLineStyle = wdLineStyleSingle
        .DefaultBorderLineWidth = wdLineWidth050pt
        .DefaultBorderColor = wdColorAutomatic
    End With
End Sub
J'ai un bug qui se produit sur la ligne

=> .LineWidth = wdLineWidth050pt

ERREUR 5843 : l'un des arguments est hors limites.

Sauriez-vous comment corriger ce bug?

Merci d'avance.
Arsene12 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2011, 13h05   #2
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 333
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 333
Points : 29 239
Points : 29 239
Salut,

Je viens d'essayer ton code et je n'ai pas de problème, il s'exécute sans erreur.
__________________
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 25/11/2011, 00h06   #3
Rédacteur/Modérateur
 
Avatar de Sepia
 
Homme JF Jousseaume
Inscription : octobre 2007
Messages : 2 390
Détails du profil
Informations personnelles :
Nom : Homme JF Jousseaume
Âge : 48
Localisation : France

Informations professionnelles :
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2007
Messages : 2 390
Points : 3 356
Points : 3 356
Salut Arsene12,

Tu utilises quoi comme version de Word ?
Sepia est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/11/2011, 06h56   #4
Nouveau Membre du Club
 
Inscription : février 2003
Messages : 164
Détails du profil
Informations forums :
Inscription : février 2003
Messages : 164
Points : 30
Points : 30
Bonjour,

J'utilise Word 2007,

La macro fonctionne si on crée un simple tableau dans word et qu'on la teste, mais je rencontre un problème car j'importe un tableau d'une page web que j'ai enregistrée. Au moment de l'ouverture de la page web dans word, il m'apparait une boite de dialogue avec ceci :

Fichier manquant: C:\css\pm.css
Fichier manquant: C:\css\halmoontabs.css

Je crois que ça doit venir de là. Il me faudrait reformater le tableau pour qu'il ne contienne que le texte qui apparait dans chaque cellule.
Arsene12 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/11/2011, 07h16   #5
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 333
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 333
Points : 29 239
Points : 29 239
Salut,

Tu aurais du le dire.

Un tableau importé n'est pas un tableau Word.

Il te dit qu'il manque un CSS (Cascade Style Sheet), c'est un fichier de mise en forme.

Un tableau html ne ressemble en rien à un tableau Word (dans sa réalisation)
__________________
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 25/11/2011, 12h26   #6
Nouveau Membre du Club
 
Inscription : février 2003
Messages : 164
Détails du profil
Informations forums :
Inscription : février 2003
Messages : 164
Points : 30
Points : 30
Merci du renseignement.

Y aurait-il pas un moyen de faire une conversion? Je vais essayer de créer un tableau word en dessous et de transvaser le texte de chaque cellule.
Arsene12 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/11/2011, 21h32   #7
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 333
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 333
Points : 29 239
Points : 29 239
Salut,

Possible, mais je n'ai pas le tableau !
__________________
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 26/11/2011, 14h43   #8
Nouveau Membre du Club
 
Inscription : février 2003
Messages : 164
Détails du profil
Informations forums :
Inscription : février 2003
Messages : 164
Points : 30
Points : 30
Bonjour,

J'ai trouvé une méthode qui m'a permis la conversion. Comme mon tableau ne comprend que 4 cellules, j'ai créé une macro pour chacune d'entre elles (je ne suis pas arrivé à les regrouper, ça buggait).

Pour la 1ère cellule :
Code :
1
2
3
4
5
6
7
8
    Selection.MoveUp unit:=wdScreen, Count:=1
    ActiveDocument.Tables(1).Columns(1).Cells(1).Select    
    Selection.HomeKey unit:=wdLine
    Selection.TypeText Text:="¥¥"    
    Selection.MoveUp unit:=wdScreen, Count:=1 ' Revenir en haut du document
    ActiveDocument.Tables(1).Columns(1).Cells(1).Select    
    Selection.EndKey unit:=wdLine ' Aller à la fin de la sélection
    Selection.TypeText Text:="¥¥"
Pour les autres cellules
Code :
1
2
3
4
5
6
7
8
    Selection.MoveUp unit:=wdScreen, Count:=1
    ActiveDocument.Tables(1).Columns(1).Cells(2).Select 
    Selection.EndKey unit:=wdLine ' Aller à la fin de la sélection
    Selection.TypeText Text:="ÆÆ" 
    Selection.MoveUp unit:=wdScreen, Count:=1 ' Revenir en haut du document        
    ActiveDocument.Tables(1).Columns(1).Cells(2).Select    
    Selection.HomeKey unit:=wdLine
    Selection.TypeText Text:="ÆÆ"
Puis j'ai créé un tableau, j'ai sélectionné et fait des "couper-coller" respectifs.
Arsene12 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/11/2011, 00h24   #9
Rédacteur/Modérateur
 
Avatar de Sepia
 
Homme JF Jousseaume
Inscription : octobre 2007
Messages : 2 390
Détails du profil
Informations personnelles :
Nom : Homme JF Jousseaume
Âge : 48
Localisation : France

Informations professionnelles :
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2007
Messages : 2 390
Points : 3 356
Points : 3 356
Citation:
Envoyé par Arsene12 Voir le message
Bonjour,

J'ai trouvé une méthode qui m'a permis la conversion. Comme mon tableau ne comprend que 4 cellules, j'ai créé une macro pour chacune d'entre elles (je ne suis pas arrivé à les regrouper, ça buggait).

Pour la 1ère cellule :
Si tu veux regrouper ton code, tu peux tester si tu es dans la 1ere cellule d'un tableau, par
Code :
1
2
3
   If Selection.Range.Start = ActiveDocument.Tables(1).Cell(Row:=1, Column:=1).Range.Start Then
      '// Je suis au début de la 1ere cellule du 1er tableau
   End If
Tu peux aussi tester le fait d'être dans le tableau ou en-dehors de façon similaire.

@+
Sepia 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 14h53.


 
 
 
 
Partenaires

Hébergement Web