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
| Option Explicit
Sub ImportTableauWord()
Dim wdDoc As Object, wdFileName As Variant, TableNo As Integer
Dim iRow As Long, iCol As Integer, k As Integer
wdFileName = Application.GetOpenFilename("Fichiers Word (*.doc*),*.doc*", , "Document à exploiter")
If wdFileName = False Then Exit Sub
Set wdDoc = GetObject(wdFileName)
With wdDoc
TableNo = wdDoc.tables.Count
If TableNo = 0 Then
MsgBox "Aucun tableau dans ce document", vbExclamation, "Anomalie"
ElseIf TableNo > 1 Then
TableNo = InputBox("Ce document contient " & TableNo & " tableaux." & vbCrLf & _
"Indiquer le n° du tableau à importer", "Quel tableau?", "1")
End If
With .tables(TableNo)
For iRow = 1 To .Rows.Count '--- parcourir les lignes
For iCol = 1 To .Columns.Count '--- parcourir les colonnes
If iCol * iRow = 1 Then '--- si ligne 1, colonne 1: copier/coller
.cell(iRow, iCol).Range.Copy
Range("A1").PasteSpecial xlPasteValues
k = 1
Else '--- sinon récupérer texte
On Error Resume Next '--- erreur quand pas de cellule (lié aux cellules fusionnées)
Range("A1").Offset(0, k) = WorksheetFunction.Clean(.cell(iRow, iCol).Range.Text)
If Err.Number = 0 Then
k = k + 1
Else
Err.Clear
End If
On Error GoTo 0
End If
Next iCol
Next iRow
End With
End With
Set wdDoc = Nothing
End Sub |
Partager