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 :

Mettre en forme le contenu d'un Tableau Word à partir d'Access 2010 [WD-2010]


Sujet :

VBA Word

  1. #1
    Membre à l'essai
    Femme Profil pro
    Stagiaire
    Inscrit en
    Mai 2014
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Stagiaire
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2014
    Messages : 41
    Points : 23
    Points
    23
    Par défaut Mettre en forme le contenu d'un Tableau Word à partir d'Access 2010
    Bonjour,

    Je travaille sous Access 2010 et implémente actuellement un rapport Word dans lequel je rentre certaines données en fonction de ce que l'utilisateur a choisi. Pour ce faire, j'utilise un objet RichText pour concaténer mes données selon plusieurs mises en forme puis les colle dans la cellule adéquate. L'écriture du contenu se fait parfaitement bien.

    L'ennui c'est qu'au moment du collage du RichText dans le tableau, il ajoute automatiquement des espaces avant les sauts de ligne... c'est moche et mon rapport prend 23 pages en plus... (c'est un rapport d'~100 pages de données).

    Après recherches et essais, je ne crois pas qu'il soit possible d'implémenter la logique suivante :
    - Sélectionner le tableau
    - Cliquer sur "Supprimer l'espace avant/après le paragraphe"

    J'ai donc expérimenté sur le générateur automatique de macro Word et ai trouvé le code suivant qui fonctionne très bien sous Word :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Selection.Tables(1).Select
        With Selection.ParagraphFormat
            .SpaceBefore = 1.5
            .SpaceBeforeAuto = False
            .SpaceAfter = 1.5
            .SpaceAfterAuto = False
            .LineSpacingRule = wdLineSpaceSingle
            .LineUnitBefore = 0
            .LineUnitAfter = 0
        End With
    Je l'ai inclus à mon module Access ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    ActiveDocument.Tables(Index).Select
                With Selection.ParagraphFormat
                    .SpaceBefore = 1.5
                    .SpaceBeforeAuto = False
                    .SpaceAfter = 1.5
                    .SpaceAfterAuto = False
                    .LineSpacingRule = wdLineSpaceSingle
                    .LineUnitBefore = 0
                    .LineUnitAfter = 0
                End With
    Mais à la ligne With Selection.ParagraphFormat il me donne :
    Erreur d'éxécution '91' : Variable objet ou variable de bloc With non définie

    J'ai essayé de traiter juste une colone de mon tableau mais cette fois sur ActiveDocument.Tables(Index).Column(I).Select (I allant de 2 à 4) j'ai :
    Erreur d'éxécution '5992' : Impossible d'accéder à des colonnes individuelles de cette collection car le tableau possède des cellules de largeurs différentes
    Parce que mon tableau a des cellules fusionnées (titre des sous-parties pour classer les données).

    Vu la complexité de remplissage du tableau, il n'est pas envisageable d'appliquer la mis en forme au fur et à mesure, j'ai un impératif de temps d'édition...

    Merci pour votre aide
    (N'hésitez pas à me dire rapidement s'il vaut mieux que je poste sur VBA Access, je savais pas trop)

  2. #2
    Membre à l'essai
    Femme Profil pro
    Stagiaire
    Inscrit en
    Mai 2014
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Stagiaire
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2014
    Messages : 41
    Points : 23
    Points
    23
    Par défaut Décidement, ça ne me réussit pas
    Bon alors j'ai fait la concession de traiter la mise en forme à l'écriture de chaque cellule, bien que ce soit plus long.

    J'ai créé la fonction suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Private Sub MEFCell(ByRef MonDoc As Object)
    '
    'Mise en Forme de la cellule
    '
        With MonDoc.Application.Selection
            'Paramètres du bloc "Paragraphe"
            '(formulaire atteignable en cliquant sur le petit carré avec une flèche à côté de "Paragraphe" dans l'onglet "Accueil" du ruban Word)
            .ParagraphFormat.LeftIndent = Word.Application.CentimetersToPoints(0)
            .ParagraphFormat.RightIndent = Word.Application.CentimetersToPoints(0)
            .ParagraphFormat.SpaceBefore = 0
            .ParagraphFormat.SpaceBeforeAuto = False
            .ParagraphFormat.SpaceAfter = 0
            .ParagraphFormat.SpaceAfterAuto = False
            .ParagraphFormat.LineSpacingRule = wdLineSpaceMultiple
            .ParagraphFormat.LineSpacing = Word.Application.LinesToPoints(1.3)
            .ParagraphFormat.WidowControl = True
            .ParagraphFormat.KeepWithNext = False
            .ParagraphFormat.KeepTogether = False
            .ParagraphFormat.PageBreakBefore = False
            .ParagraphFormat.NoLineNumber = False
            .ParagraphFormat.Hyphenation = True
            .ParagraphFormat.FirstLineIndent = Word.Application.CentimetersToPoints(0)
            .ParagraphFormat.OutlineLevel = wdOutlineLevelBodyText
            .ParagraphFormat.CharacterUnitLeftIndent = 0
            .ParagraphFormat.CharacterUnitRightIndent = 0
            .ParagraphFormat.CharacterUnitFirstLineIndent = 0
            .ParagraphFormat.LineUnitBefore = 0
            .ParagraphFormat.LineUnitAfter = 0
            .ParagraphFormat.MirrorIndents = False
            .ParagraphFormat.TextboxTightWrap = wdTightNone
        End With
    End Sub
    J'appelle cette fonction juste après avoir collé le texte voulu dans la cellule :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    'Début du code...
    .Cell(Ligne, 2).Range.Paste
    .Cell(Ligne, 2).Select
    Call MEFCell(MonDoc)
    'Suite du code
    Et ce pour les colones 2, 3, 4 de mon tableau.

    Ca m'a rempli les 4 premières lignes de mes 3 colones correctement, soit 12 cellules et à la 13è :
    Erreur d'éxécution '462' : Le serveur distant n'existe pas ou n'est pas disponible
    L'erreur vient de .ParagraphFormat.LineSpacing = Word.Application.LinesToPoints(1.3), mais si je remonte le curseur du débogeur sur .ParagraphFormat.LeftIndent = Word.Application.CentimetersToPoints(0), l'erreur se pose sur cette ligne.

    Pourquoi ?

    J'ai l'habitude de faire du Excel, de l'Access, mais je viens de commencer le VBA pour Word (ça se voit n'est ce pas ) et je suis un peu perdue dans toutes ces erreurs.

    Merci

  3. #3
    Membre à l'essai
    Femme Profil pro
    Stagiaire
    Inscrit en
    Mai 2014
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Stagiaire
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2014
    Messages : 41
    Points : 23
    Points
    23
    Par défaut
    Erreur 462 :
    Pour ceux qui tomberaient sur ce post avec un problème similaire :

    Bizarrement, j'ai fermé Access et Word, éteint mon ordinateur, et l'erreur n'est pas réapparue.

    Puis j'ai trouvé avant hier cette discussion (remontée grâce à Stuart33, Merci) qui m'avait échappée, ils conseillent de faire intervenir l'objet Word.Application que l'on est en train d'utiliser.
    http://www.developpez.net/forums/d12...ble-err-462-a/

    J'ai donc descendu ma variable WordApp en la passant en paramètre d'entrée tout le long de mon arborescence et ai transformé Word.Application. par WordApp..
    Je ne sais pas si le problème serait réapparu sans cela.

    Mise en forme de la cellule :
    Sinon la fonction de paramètrage est plutôt pas mal. Toutefois, il se passe quelquechose de bizarre, malgré les instructions :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
            .ParagraphFormat.SpaceBefore = 0
            .ParagraphFormat.SpaceBeforeAuto = False
            .ParagraphFormat.SpaceAfter = 0
            .ParagraphFormat.SpaceAfterAuto = False
            .ParagraphFormat.LineSpacingRule = wdLineSpaceMultiple
            .ParagraphFormat.LineSpacing = WordApp.LinesToPoints(1.15)
    Appliquées sur toute la cellues APRES copie du RichText, il persiste à me mettre un espace avant le paragraphe :
    Nom : Cellule1.PNG
Affichages : 305
Taille : 1,3 Ko

    Et quand Il y a plus de 2 lignes, il considère plusieurs paragraphes...
    Nom : Cellule2.PNG
Affichages : 315
Taille : 2,2 Ko

    J'ai laissé comme ça parce que je n'ai pas pu faire mieux car c'est déjà mieux qu'avant (je fais de la maintenance sur cette énorme base de donnée qui n'a pas été codée par moi) et que j'avais des impératifs temporels.

    TOUTEFOIS, si quelqu'un a un avis là dessus je veux bien apprendre.

    Merci

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 26/06/2018, 21h35
  2. [XL-2010] Boucler sur le contenu d'un tableau Word avant l'extraction
    Par jérémyp8 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 08/07/2013, 15h33
  3. [Toutes versions] Tableau Word de compatibilité à docx 2010
    Par erwan_333 dans le forum Word
    Réponses: 1
    Dernier message: 19/04/2012, 23h25
  4. [Word] Création tableau word à partir de php
    Par floysand dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 12/02/2008, 17h11
  5. Réponses: 4
    Dernier message: 30/06/2006, 15h26

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