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 :

Vba manipuler dans une colonne de tableau une mise en page et police [WD-2007]


Sujet :

VBA Word

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 390
    Points : 78
    Points
    78
    Par défaut Vba manipuler dans une colonne de tableau une mise en page et police
    Bonsoir à tous,

    Je viens vers vous pour vous exposer mon problème.
    Depuis Excel grâce à une macro je construis un tableau dans une feuille Word.
    Mon problème vient pour la mise en forme des données récupérées dans la 5ème colonnes de mon tableau (chaque ligne de cette colonne est construite par 4 cellules venant Excel, le Nom, l'adresse...). Je voudrais avoir un centrage du texte à gauche, que le nom soit en Majuscule gras et le reste en minuscule.
    Y a t'il une solution en vba Word ? car l'import dans Excel me fait perdre cette mise en forme ?

    Cordialement
    Scoubi

  2. #2
    Expert éminent
    Avatar de Sepia
    Homme Profil pro
    Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Inscrit en
    Octobre 2007
    Messages
    3 117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 3 117
    Points : 6 856
    Points
    6 856
    Par défaut
    Salut scoubi77

    Bonsoir à tous,

    Je viens vers vous pour vous exposer mon problème.
    Depuis Excel grâce à une macro je construis un tableau dans une feuille Word.
    Mon problème vient pour la mise en forme des données récupérées dans la 5ème colonnes de mon tableau (chaque ligne de cette colonne est construite par 4 cellules venant Excel, le Nom, l'adresse...). Je voudrais avoir un centrage du texte à gauche, que le nom soit en Majuscule gras et le reste en minuscule.
    Y a t'il une solution en vba Word ? car l'import dans Excel me fait perdre cette mise en forme ?

    Cordialement
    Scoubi
    Oui, il y a des commandes en VBA pour les mises en forme de paragraphe (centré), de caractères, de styles...

    Si tu connais ta cellule, c'est simple.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        ' Paragraphe centré pour le 1er tableau du document, 1ère ligne et la 1ière colonne
        ActiveDocument.Tables(1).Cell(1, 1).Range.ParagraphFormat.Alignment = wdAlignParagraphCenter
     
        ' Texte en Majuscules et gras pour le 1er tableau du document, 1ère ligne et la 2ième colonne
         ActiveDocument.Tables(1).Cell(2, 2).Range.Case = wdUpperCase
        ActiveDocument.Tables(1).Cell(2, 2).Range.Font.Bold = True
     
        ' Texte en minuscules pour le 1er tableau du document, 1ère ligne et la 3 dernières colonnes
        For aI = 3 To 5
            ActiveDocument.Tables(1).Cell(2, aI).Range.Case = wdLowerCase
        Next
    @+

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 390
    Points : 78
    Points
    78
    Par défaut
    Bonjour et un grand merci,

    Je vais essayer cela dès ce soir, en fait mon tableau word s'agrandti en fonction du nombres de lignes à récupérer dans excel.
    Peut-on appliquer une mise en forme pour la colonne 5 à toutes les lignes et pages du tableau qui va se créer automatiquement ?
    Cordialement
    Scoubi

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 390
    Points : 78
    Points
    78
    Par défaut
    Re bonjour,

    Si j'ai bien compris le code ( un peu différent du code vba excel !!! Et je reste grandement dubitatif sur l'enregistreur de macro word !!!)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      ActiveDocument.Tables(1).Cell(5, 1).Range.ParagraphFormat.Alignment = wdAlignParagraphCenter
    Correspondrait au premier tableau colonne 5, ligne 1 ?
    J'ai besoin d'avoir (5, 1) en majuscule et en gras en police Time new roman, taille 9 et centré à gauche.
    Et de (5, 2) à (5, x) minuscule, Time new roman taille 9, centré à gauche.
    Et ce sur toute la colonne 5 des différentes lignes et pages qui se créeront.
    Espérant être claire car de (5, 1 ) à (5, x ) doivent être dans une même celulle
    en voici un exemple


    Je vais essayer en rajoutant (1, 1).rows (1) qui pourrais correspondre à 1er ligne 1 er colonne et 1 er ligne à l'intérieur ?
    Un grand merci pour ton aide
    Scoubi
    Images attachées Images attachées  

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 390
    Points : 78
    Points
    78
    Par défaut
    uhm mon idée d'ajouter .rows (2 ) marche pas

  6. #6
    Expert éminent
    Avatar de Sepia
    Homme Profil pro
    Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Inscrit en
    Octobre 2007
    Messages
    3 117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 3 117
    Points : 6 856
    Points
    6 856
    Par défaut
    Salut scoubi77,

    uhm mon idée d'ajouter .rows (2 ) marche pas
    Non, ton idée d'utiliser rows(2) est bonne mais il faut remplacer ".cell(<ligne>, <col>)" par ".rows(<col>)".

    @+

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 390
    Points : 78
    Points
    78
    Par défaut
    Bonjour Sepia,

    Merci pour ton aide mais débutant en Vba Word je reste un peu perdu et je me base sur mon Vba Excel.
    Pourrais tu me donner un exemple car si je retire ".cell(<ligne>, <col>)" par ".rows(<col>)" je ne repère plus la 5em colonne et de mon tableau !!!

    Je recherche aussi (car je construis ce tableau en fonction des données récupérées dans Excel donc le nombre de lignes et de pages peut être aléatoire) à copier cette mise en page de la colonne 5 de mon tableau sur toute sa longueur.
    Peut-on aussi associer une police et taille particulière ? par exemple time new roman taille 9 ?
    Merci pour ton aide
    Scoubi

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 390
    Points : 78
    Points
    78
    Par défaut
    De plus si je crée un fichier Word et que je programme un changement dans un tableau ça fonctionne très bien (pas encore avec tout ce que je souhaite mais quand je l'adapte à mon fichier Word qui me sert de masque pour construire mon fichier Word de récupération des données Excel j'obtient l'erreur 5941 Le membre requis de la collection n'existe pas !!!

    J'avoue être un poil dérouté !!!

    Merci par avance pour tous pour vos aides précieuses.

  9. #9
    Expert éminent
    Avatar de Sepia
    Homme Profil pro
    Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Inscrit en
    Octobre 2007
    Messages
    3 117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 3 117
    Points : 6 856
    Points
    6 856
    Par défaut
    Salut scoubi77,

    Si tu utilises le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      ActiveDocument.Tables(1).Cell(5, 1).Range.ParagraphFormat.Alignment = wdAlignParagraphCenter
    il faut que tu es un tableau dans ton document sinon une erreur du type "Le membre requis de la collection n'existe pas !!!" survient et donc si tu modifies un document qui a un tableau, le code que je t'ai fourni va fonctionner (au moins pour cette partie). Donc soit tu ajoutes un tableau comme tu l'as décrit dans ton "masque" soit tu dois le créer par du code, comme ça dépend de ton fonctionnement, on ne peut décider pour toi. Donne nous plus d'infos si tu veux qu'on t'aide plus efficacement pour le code.

    @+

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 11
    Points : 12
    Points
    12
    Par défaut
    Bonjour à tous,

    Je me permets de m'immiscer sur ce fil car j'ai exactement le même problème que scoubi77.

    Dans mon cas, c'est la cellule Word en 6ème colonne qui est constituée de 4 lignes issues de 4 cellules Excel distinctes. Et là aussi, j'aimerais que la 1ère ligne soit en Majuscule-Gras, sachant que la concaténation des cellules se fait par la macro Excel au moyen de retours chariot pour chacune des 4 cellules. Et c'est bien là le problème: les solutions données jusqu'à présent par Sepia s'appliquent à la totalité de la cellule Word, et non à la 1ère ligne uniquement.

    J'ai aussi de mon côté enregistré une macro dans Word mais je ne parviens pas à la faire fonctionner dans Excel.

    Dans l'attente d'une éventuelle réponse, je continue à tester toutes les solutions qui voudront bien germer dans mon esprit. Et, si j'en trouve une qui répond parfaitement au besoin, je ne manquerai pas de venir l'exposer sur ce fil.

    Cordialement.

  11. #11
    Expert éminent
    Avatar de Sepia
    Homme Profil pro
    Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Inscrit en
    Octobre 2007
    Messages
    3 117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 3 117
    Points : 6 856
    Points
    6 856
    Par défaut
    Salut Papou93,

    Dans mon cas, c'est la cellule Word en 6ème colonne qui est constituée de 4 lignes issues de 4 cellules Excel distinctes. Et là aussi, j'aimerais que la 1ère ligne soit en Majuscule-Gras, sachant que la concaténation des cellules se fait par la macro Excel au moyen de retours chariot pour chacune des 4 cellules. Et c'est bien là le problème: les solutions données jusqu'à présent par Sepia s'appliquent à la totalité de la cellule Word, et non à la 1ère ligne uniquement.
    Oui mais je pensais que ce qu'il vous fallait concernait l'accès aux cellules et qu'à partir des exemples, vous pourriez extrapoler. Comme ce n'est pas le cas, voila comment exploiter le 1er paragraphe d'une cellule qui a été repérée et la passer en gras :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveDocument.Tables(1).Cell(5, 1).Range.Paragraphs(1).Range.Bold
    @+

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 11
    Points : 12
    Points
    12
    Par défaut
    Bonjour Sepia,

    Merci beaucoup pour ta réponse qui m'a fourni l'élément qui me manquait, à savoir la notion de "paragraphs" dans une cellule multi-lignes.

    Je cherchais bêtement à m'en sortir avec la recherche du premier CHR(13) pour extraire les caractères de gauche, mais si ça ne renvoyait pas d'erreur ça ne fonctionnait pas non plus.

    Grâce à toi, j'ai enfin pu appliquer la première ligne en caractères gras.

    Je pense que ta réponse pourra également servir à Scouby77 que je salue aussi au passage.

    Encore une fois merci.

    Cordialement.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 12/03/2015, 11h46
  2. Sélectionner une colonne variable tableau VBA
    Par Tux1 dans le forum Général VBA
    Réponses: 2
    Dernier message: 24/12/2012, 14h43
  3. Réponses: 2
    Dernier message: 23/11/2012, 16h20
  4. copie d'une table Y d'une base A vers une table X d'une base
    Par moneyboss dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 30/08/2005, 21h24
  5. [VBA-E] Effacer les doubles dans 1 colonne grace à une macro
    Par Stef.proxi dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 05/08/2004, 15h44

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