OVH Cloud OVH Cloud

Tableau Word vers Excel

2 réponses
Avatar
Jacques \(BE\)
Bonjour,

Je dois importer un tableau Word vers Excel. Et pour être plus précis
certaines cellules
(connues d'avance).
Access et Excel me sont assez familier mais je n'ai jamais programmé Word
via le VBA !

Pourriez-vous me donner une piste pour procéder à cette importation.

Merci de vos réponses

Jacques

2 réponses

Avatar
Jacques
Merci, c'est parfait ! Je vais importer le tableau au complet et je ferai le
ménage dans Excel :-)
Un grand merci

Jacques


"Jean-Guy Marcil" a écrit dans le message de news:

Jacques (BE) was telling us:
Jacques (BE) nous racontait que :

Bonjour,

Je dois importer un tableau Word vers Excel. Et pour être plus précis
certaines cellules
(connues d'avance).


Connues comment?
Il te restera cet aspect à travailler...

Access et Excel me sont assez familier mais je n'ai jamais programmé
Word via le VBA !

Pourriez-vous me donner une piste pour procéder à cette importation.

Merci de vos réponses


Option Explicit
'Dans l'éditeur VBA de Word: Outils > Référence, ajouter une référence
'à la librairie de Microsoft Excel

Sub TableToWorkbook()

Dim oXL As Excel.Application
Dim oWB As Excel.Workbook
Dim oSheet As Excel.Worksheet
Dim oRng As Excel.Range
Dim ExcelWasNotRunning As Boolean
Dim WorkbookToWorkOn As String
Dim rgeWordTable As Range

'Sélectionner un tableau, dans ce cas,
'celui sous le curseur, si pas de tableau, quitter

If Not Selection.Information(wdWithInTable) Then
MsgBox "Veuillez placer le curseur dans un tableau."
Exit Sub
Else
Set rgeWordTable = Selection.Range.Tables(1).Range
rgeWordTable.Copy
End If

'Spécifier le classeur à utiliser
WorkbookToWorkOn = "C:Documents and SettingsHP_AdministratorMy
DocumentsBook1.xls"

'Si Excel est déjà activé, y référer; sinon lancer Excel
On Error Resume Next
Set oXL = GetObject(, "Excel.Application")

If Err Then
ExcelWasNotRunning = True
Set oXL = New Excel.Application
End If

On Error GoTo Err_Handler

'Si on veut que Excel soit visible, on peut ajouter laligne:
'oXL.Visible = True
'ici; mais le code exécute plus vite si Excel est invisible

'Ouvrir le classeur
Set oWB = oXL.Workbooks.Open(FileName:=WorkbookToWorkOn)

'Sélectionner une feuille
Set oSheet = oXL.ActiveWorkbook.Worksheets(1)

'Transférer les données
With oSheet
.Cells(3, 3).Select
.Paste
.Cells(3, 3).Select
End With
oWB.Save

If ExcelWasNotRunning Then
oXL.Quit
End If

'Ne pas oublier d'enlever les objets de la mémoire.
Set oRng = Nothing
Set oSheet = Nothing
Set oWB = Nothing
Set oXL = Nothing

'Quitter
Exit Sub

Err_Handler:
MsgBox WorkbookToWorkOn & " a causé un problème. " & Err.Description,
vbCritical, _
"Erreur : " & Err.Number
If ExcelWasNotRunning Then
oXL.Quit
End If

End Sub

--

Salut!
_______________________________________
Jean-Guy Marcil - Word MVP

Word MVP site: http://www.word.mvps.org





Avatar
Jean-Guy Marcil
Jacques (BE) was telling us:
Jacques (BE) nous racontait que :

Bonjour,

Je dois importer un tableau Word vers Excel. Et pour être plus précis
certaines cellules
(connues d'avance).


Connues comment?
Il te restera cet aspect à travailler...

Access et Excel me sont assez familier mais je n'ai jamais programmé
Word via le VBA !

Pourriez-vous me donner une piste pour procéder à cette importation.

Merci de vos réponses


Option Explicit
'Dans l'éditeur VBA de Word: Outils > Référence, ajouter une référence
'à la librairie de Microsoft Excel

Sub TableToWorkbook()

Dim oXL As Excel.Application
Dim oWB As Excel.Workbook
Dim oSheet As Excel.Worksheet
Dim oRng As Excel.Range
Dim ExcelWasNotRunning As Boolean
Dim WorkbookToWorkOn As String
Dim rgeWordTable As Range

'Sélectionner un tableau, dans ce cas,
'celui sous le curseur, si pas de tableau, quitter

If Not Selection.Information(wdWithInTable) Then
MsgBox "Veuillez placer le curseur dans un tableau."
Exit Sub
Else
Set rgeWordTable = Selection.Range.Tables(1).Range
rgeWordTable.Copy
End If

'Spécifier le classeur à utiliser
WorkbookToWorkOn = "C:Documents and SettingsHP_AdministratorMy
DocumentsBook1.xls"

'Si Excel est déjà activé, y référer; sinon lancer Excel
On Error Resume Next
Set oXL = GetObject(, "Excel.Application")

If Err Then
ExcelWasNotRunning = True
Set oXL = New Excel.Application
End If

On Error GoTo Err_Handler

'Si on veut que Excel soit visible, on peut ajouter laligne:
'oXL.Visible = True
'ici; mais le code exécute plus vite si Excel est invisible

'Ouvrir le classeur
Set oWB = oXL.Workbooks.Open(FileName:=WorkbookToWorkOn)

'Sélectionner une feuille
Set oSheet = oXL.ActiveWorkbook.Worksheets(1)

'Transférer les données
With oSheet
.Cells(3, 3).Select
.Paste
.Cells(3, 3).Select
End With
oWB.Save

If ExcelWasNotRunning Then
oXL.Quit
End If

'Ne pas oublier d'enlever les objets de la mémoire.
Set oRng = Nothing
Set oSheet = Nothing
Set oWB = Nothing
Set oXL = Nothing

'Quitter
Exit Sub

Err_Handler:
MsgBox WorkbookToWorkOn & " a causé un problème. " & Err.Description,
vbCritical, _
"Erreur : " & Err.Number
If ExcelWasNotRunning Then
oXL.Quit
End If

End Sub

--

Salut!
_______________________________________
Jean-Guy Marcil - Word MVP

Word MVP site: http://www.word.mvps.org