OVH Cloud OVH Cloud

VBA EXCEL ET WORD

5 réponses
Avatar
Kamel
Bonjour,

Quelqu'un pourrait me donner une ébauche d'une macro ds les grandes lignes
en VBA sous Excel qui ouvrirait un document word et qui copierait une
feuille Excel dans ce document word, fermerait Excel mais tout en gardant
word ouvert ....

si on pouvait me donner le plus de detail possible tel que la declaration de
lobjet document word .. etc (SVP !!!!!!)

Merci

5 réponses

Avatar
Daniel.j
Une page sur ce sujet:
http://dj.joss.free.fr/word.htm

Daniel
"Kamel" a écrit dans le message de news:
| Bonjour,
|
| Quelqu'un pourrait me donner une ébauche d'une macro ds les grandes lignes
| en VBA sous Excel qui ouvrirait un document word et qui copierait une
| feuille Excel dans ce document word, fermerait Excel mais tout en gardant
| word ouvert ....
|
| si on pouvait me donner le plus de detail possible tel que la declaration de
| lobjet document word .. etc (SVP !!!!!!)
|
| Merci
|
|
Avatar
Lydya
Bonsoir Kamel,

Voici deux macros testées uniquement avec Excel et Word 97 (nom de la
feuille xl à copier à adapter ainsi que le chemin et le nom du document Word
à ouvrir).
Dans la première, tu précises toi-même la plage à copier (ici A1:G10) :
--
Sub CopieExcelWord()
Dim PlageACopier As Range
Dim AppWord As Object
Set PlageACopier = Sheets("NomFeuille").Range("A1:G10")
Set AppWord = CreateObject("Word.Application")
PlageACopier.Copy
With AppWord
.Visible = True
.documents.Open FileName:="C:TempDocAOuvrir.doc"
.Selection.Paste
End With
ActiveWorkbook.Save
Application.Quit
End Sub
--
Dans la deuxième macro, la plage à copier est définie automatiquement: le
nombre de lignes est déterminé d'après la dernière cellule non vide de la
col A et le nombre de colonnes d'après la dernière cellule non vide de la
ligne 1.
--
Sub CopiePlageAutoExcelWord()
Dim NbLignes As Long
Dim NbCols As Integer
Dim Feuille As Worksheet
Dim PlageACopier As Range
Dim AppWord As Object
Set Feuille = Sheets("NomFeuille")
If WorksheetFunction.CountA(Cells) > 0 Then
NbLignes = [A:A].Find("*", , , , , xlPrevious).Row
NbCols = [1:1].Find("*", , , , , xlPrevious).Column
Else
MsgBox "La feuille ne contient pas de données"
Exit Sub
End If
Set PlageACopier = Feuille.Range(Cells(1, 1), Cells(NbLignes, NbCols))
Set AppWord = CreateObject("Word.Application")
PlageACopier.Copy
With AppWord
.Visible = True
.documents.Open FileName:="C:TempDocAOuvrir.doc"
.Selection.Paste
End With
ActiveWorkbook.Save
Application.Quit
End Sub
--
Bonne soirée

Lydya



"Kamel" a écrit dans le message de
news:
Bonjour,

Quelqu'un pourrait me donner une ébauche d'une macro ds les grandes lignes
en VBA sous Excel qui ouvrirait un document word et qui copierait une
feuille Excel dans ce document word, fermerait Excel mais tout en gardant
word ouvert ....

si on pouvait me donner le plus de detail possible tel que la declaration
de

lobjet document word .. etc (SVP !!!!!!)

Merci




Avatar
Kamel
Merci bcp Lydya !!!!! ;-))

--
Bon courage ...
Kamel
"Lydya" a écrit dans le message de
news:
Bonsoir Kamel,

Voici deux macros testées uniquement avec Excel et Word 97 (nom de la
feuille xl à copier à adapter ainsi que le chemin et le nom du document
Word

à ouvrir).
Dans la première, tu précises toi-même la plage à copier (ici A1:G10) :
--
Sub CopieExcelWord()
Dim PlageACopier As Range
Dim AppWord As Object
Set PlageACopier = Sheets("NomFeuille").Range("A1:G10")
Set AppWord = CreateObject("Word.Application")
PlageACopier.Copy
With AppWord
.Visible = True
.documents.Open FileName:="C:TempDocAOuvrir.doc"
.Selection.Paste
End With
ActiveWorkbook.Save
Application.Quit
End Sub
--
Dans la deuxième macro, la plage à copier est définie automatiquement: le
nombre de lignes est déterminé d'après la dernière cellule non vide de la
col A et le nombre de colonnes d'après la dernière cellule non vide de la
ligne 1.
--
Sub CopiePlageAutoExcelWord()
Dim NbLignes As Long
Dim NbCols As Integer
Dim Feuille As Worksheet
Dim PlageACopier As Range
Dim AppWord As Object
Set Feuille = Sheets("NomFeuille")
If WorksheetFunction.CountA(Cells) > 0 Then
NbLignes = [A:A].Find("*", , , , , xlPrevious).Row
NbCols = [1:1].Find("*", , , , , xlPrevious).Column
Else
MsgBox "La feuille ne contient pas de données"
Exit Sub
End If
Set PlageACopier = Feuille.Range(Cells(1, 1), Cells(NbLignes, NbCols))
Set AppWord = CreateObject("Word.Application")
PlageACopier.Copy
With AppWord
.Visible = True
.documents.Open FileName:="C:TempDocAOuvrir.doc"
.Selection.Paste
End With
ActiveWorkbook.Save
Application.Quit
End Sub
--
Bonne soirée

Lydya



"Kamel" a écrit dans le message de
news:
Bonjour,

Quelqu'un pourrait me donner une ébauche d'une macro ds les grandes
lignes


en VBA sous Excel qui ouvrirait un document word et qui copierait une
feuille Excel dans ce document word, fermerait Excel mais tout en
gardant


word ouvert ....

si on pouvait me donner le plus de detail possible tel que la
declaration


de
lobjet document word .. etc (SVP !!!!!!)

Merci








Avatar
Kamel
Merci bcp !!!

--
Bon courage ...
Kamel
"Daniel.j" a écrit dans le message de
news:%
Une page sur ce sujet:
http://dj.joss.free.fr/word.htm

Daniel
"Kamel" a écrit dans le message de news:


| Bonjour,
|
| Quelqu'un pourrait me donner une ébauche d'une macro ds les grandes
lignes

| en VBA sous Excel qui ouvrirait un document word et qui copierait une
| feuille Excel dans ce document word, fermerait Excel mais tout en
gardant

| word ouvert ....
|
| si on pouvait me donner le plus de detail possible tel que la
declaration de

| lobjet document word .. etc (SVP !!!!!!)
|
| Merci
|
|




Avatar
Lydya
Kamel,
Dans la deuxième macro, après:
Set Feuille = Sheets("NomFeuille")
Il faut ajouter:
Feuille.Activate

--
Lydya


"Lydya" a écrit dans le message de
news:
Bonsoir Kamel,

Voici deux macros testées uniquement avec Excel et Word 97 (nom de la
feuille xl à copier à adapter ainsi que le chemin et le nom du document
Word

à ouvrir).
Dans la première, tu précises toi-même la plage à copier (ici A1:G10) :
--
Sub CopieExcelWord()
Dim PlageACopier As Range
Dim AppWord As Object
Set PlageACopier = Sheets("NomFeuille").Range("A1:G10")
Set AppWord = CreateObject("Word.Application")
PlageACopier.Copy
With AppWord
.Visible = True
.documents.Open FileName:="C:TempDocAOuvrir.doc"
.Selection.Paste
End With
ActiveWorkbook.Save
Application.Quit
End Sub
--
Dans la deuxième macro, la plage à copier est définie automatiquement: le
nombre de lignes est déterminé d'après la dernière cellule non vide de la
col A et le nombre de colonnes d'après la dernière cellule non vide de la
ligne 1.
--
Sub CopiePlageAutoExcelWord()
Dim NbLignes As Long
Dim NbCols As Integer
Dim Feuille As Worksheet
Dim PlageACopier As Range
Dim AppWord As Object
Set Feuille = Sheets("NomFeuille")
If WorksheetFunction.CountA(Cells) > 0 Then
NbLignes = [A:A].Find("*", , , , , xlPrevious).Row
NbCols = [1:1].Find("*", , , , , xlPrevious).Column
Else
MsgBox "La feuille ne contient pas de données"
Exit Sub
End If
Set PlageACopier = Feuille.Range(Cells(1, 1), Cells(NbLignes, NbCols))
Set AppWord = CreateObject("Word.Application")
PlageACopier.Copy
With AppWord
.Visible = True
.documents.Open FileName:="C:TempDocAOuvrir.doc"
.Selection.Paste
End With
ActiveWorkbook.Save
Application.Quit
End Sub
--
Bonne soirée

Lydya



"Kamel" a écrit dans le message de
news:
Bonjour,

Quelqu'un pourrait me donner une ébauche d'une macro ds les grandes
lignes


en VBA sous Excel qui ouvrirait un document word et qui copierait une
feuille Excel dans ce document word, fermerait Excel mais tout en
gardant


word ouvert ....

si on pouvait me donner le plus de detail possible tel que la
declaration


de
lobjet document word .. etc (SVP !!!!!!)

Merci