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

Macros et VBA Excel Discussion :

Distribution structuré d'informations d'un document Word vers une feuille Excel (VBA ou Manip'?)


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Consultant communication & réseaux
    Inscrit en
    Juillet 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant communication & réseaux
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juillet 2017
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Distribution structuré d'informations d'un document Word vers une feuille Excel (VBA ou Manip'?)
    Bonjour à tous,

    Dans l'exemple de fichier word ci-joint (6 pages, le doc réel fait 238 pages), j'ai des mots (en gras et colorié en rouge), suivi de leurs définitions sur plusieurs lignes (non-formaté et colorié en noir).

    J'aurais besoin de transférer ces informations dans une feuille excel pour que le mot en question apparaisse dans une cellule et que la définition entière apparaisse dans la cellule de gauche.
    J'essaye surtout d'éviter que les définitions d'un même apparaisse dans plusieurs cellules descendante à cause de marque de paragraphe ou de saut de ligne manuel.

    Ex bon:
    A1:
    À chaux et à sable
    B1:
    Bâtir à chaux et à sable = très solidement.
    Fam.: très robuste. “un grand gaillard bâti à chaux et à sable”

    Ex mauvais:
    A1:
    À chaux et à sable
    B1:
    Bâtir à chaux et à sable = très solidement.
    B2:
    Fam.: très robuste. “un grand gaillard bâti à chaux et à sable"

    A dispo pour échanger sur le sujet, mais toute proposition de VBA ou de manipulation seront le bienvenu.
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 182
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 182
    Points : 5 514
    Points
    5 514
    Par défaut
    Bonjour,

    Assez simple. Recopier tout le texte du document Word (Ctrl-A) dans une feuille Excel du dossier joint (Ctrl-V), ensuite lancer la macro 'En_2_colonnes'.
    Il est aussi possible de le faire en plusieurs fois sur la même feuille, ou sur plusieurs feuilles.
    Seules choses à respecter:
    - ne pas laisser de cellule vide en colonne 1 (la macro commence à la ligne 1 et s'arrête au moment où elle rencontre une cellule vide);
    - toujours avoir la même couleur pour les mots (rouge);
    - le premier mot, en ligne 1, doit avoir sa couleur caractéristique (rouge).

    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
    Sub En_2_colonnes()
       Dim kR As Long, kColor As Long
       kR = 1
       kColor = Cells(kR, 1).Font.Color    '--- couleur de la 1ère cellule en colonne 1 --- caractéristique
       '--- présentation colonnes 1 et 2
        Cells.VerticalAlignment = xlTop
        Columns("A:A").ColumnWidth = 20
        Columns("B:B").ColumnWidth = 160
        Columns("B:B").WrapText = True
       '--- traitement
       While Cells(kR, 1) <> ""
          Debug.Print kR, Cells(kR, 1).Font.Color
          Cells(kR, 1).Select
          If Cells(kR, 1).Font.Color = kColor Then
             '--- cellule titre
             kR = kR + 1
          Else
             '--- cellule texte
             If Cells(kR - 1, 2) = "" Then
                Cells(kR - 1, 2) = Cells(kR, 1)
             Else
                Cells(kR - 1, 2) = Cells(kR - 1, 2) & vbCrLf & Cells(kR, 1)
             End If
             Rows(kR).Delete Shift:=xlUp     '--- supprime la ligne
          End If
       Wend
    End Sub
    Bonne continuation.
    Fichiers attachés Fichiers attachés

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Consultant communication & réseaux
    Inscrit en
    Juillet 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant communication & réseaux
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juillet 2017
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci EricDgn!

    le macro a marché parfaitement, et m'a même clairement montré quelques erreurs de format dans le doc word d'origine donc, nickel!

    Merci encore,

    D.

Discussions similaires

  1. Manipulation, d'objet word dans une feuille Excel
    Par lolo-tine dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/03/2013, 15h51
  2. [XL-2003] savegarder dans un meme document word depuis une macro Excel
    Par jabranejb dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 04/12/2012, 22h51
  3. Réponses: 4
    Dernier message: 27/04/2007, 12h19
  4. [Excel] Basuler les informations d'une listBox vers une feuille Excel
    Par Paloma dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 30/11/2006, 14h06
  5. Réponses: 1
    Dernier message: 29/08/2006, 17h03

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