VBA - Recuperer données Word dans EXCEL

jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 - 27 août 2010 à 18:06
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 - 30 août 2010 à 11:40
Bonjour,

je persiste..

J'ai trouvé comment récupérer la valeur des champs d'un formulaire word.. mon souci désormais est de pouvoir lire également le contenur de tableaux (se trouvant dans un document Word).

Le code suivant doit normalement me permettre d'y arriver :
Sub test()
Dim WordDoc As Object
Dim i As Integer, j As Integer
Dim Cible As Variant
    Set WordApp =  New Word.Application
    Set WordDoc = GetObject("D:MonDocument.doc")
    lignes = WordDoc.Tables(1).Rows.Count
    Colonnes = WordDoc.Tables(1).Columns.Count
    For i = 1 To lignes
        For j = 1 To Colonnes
            Cible = WordDoc.Tables(1).Columns(j).Cells(i)

            Sheets(1).Cells(i, j) = _
            Application.WorksheetFunction.Substitute(Cible, vbCr, vbLf)
            Sheets(1).Cells(i, j) = _
            Left(Sheets(1).Cells(i, j), Len(Sheets(1).Cells(i, j)) - 1)
        Next j
    Next i
End Sub



Le souci c'est que j'ai un message d'erreur à la ligne
 Cible  = WordDoc.Tables(1).Columns(j).Cells(i)


m'indiquant:
"Impossible d'accéder à des colonnes individuelles de cette collection car le tableau possède des cellules de largeur différente."

Auriez-vous une méthode pour lire un tableau d'un document word ? ou une méthode pour lire les lignes qui s'y trouvent ?

Et dernière question (si si après j'arrête promis ) : Pensez-vous s'il est possible de rechercher un texte dans un document Word puis de récupérer la valeur du champ qui se trouverait à côté ?


Par avance merci pour vos réponses.

Cordialement,
Jordane,
______________________________________________________
Règles du forum à lire avant de poster une question : ICI

3 réponses

CGSI3 Messages postés 416 Date d'inscription vendredi 22 février 2008 Statut Membre Dernière intervention 7 janvier 2018 1
27 août 2010 à 19:23
Bonjour Jordane,
Essaie déja cela.
cell est un objet, si tu veux la valeur de cet objet c'est cell.value ou
Cible = WordDoc.Tables(1).Columns(j).Cells(i).value

En Excel Cells possède 2 coordonnées ???
Cela marche peut être ...
Cible = WordDoc.Tables(1).Cells(i, j).value

Mais je me trompe peut être, word n'est pas
mon domaine ...

Dis moi si ca marche !
Bonne Prog CGSI3
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
27 août 2010 à 19:25
Salut
En supposant que tu attaques ton tableau horizontalement (plus logique) :
    With Tables(1)
        For r = 1 To .Rows.Count
            Debug.Print .Rows(r).Cells.Count & _
                        " cellules horizontales à la ligne " & r
        Next r
    End With

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 344
30 août 2010 à 11:40
Bonjour,
Merci CGSI3 mais ça ne fonctionne pas pour les tableaux word.

et ... Désolé Jack. même de cette manière le message d'erreur apparait... (sniff).

enfin bon.. merci d'avoir répondu mais ça ne fonctionne toujours pas.

D'autres idées ?

Cordialement,
Jordane,
______________________________________________________
Règles du forum à lire avant de poster une question : ICI
0
Rejoignez-nous