je débute sur vba et je dois créer une application dans excel .
le but est du prendre le contenu de plusieurs documents word de les stocker dans des variables dans excel puis de les combiner pour en faire un seul document world.
exemple une lampe personnalisable
doc1 = type d'ampoule
doc2 = type de pied
doc3 = type bouton
doc final = notice de montage
Je dois créer au final un manuel de référence pour les clients en fonction des chois de celui ci.
je sais comment je souhait structurer mon interface excel mais je ne connais pas la syntaxe pour:
Oublie la dernière proposition, elle ne fonctionne pas! MichD
jujuetd63
Le mardi 07 Avril 2020 à 16:16 par MichD :
dans le doc final toutes les images ont disparues savez comment je peux régler le problème. merci bonne journée
Essaie comme ceci : '------------------------------------------------- Sub test() Dim Wd As Object, MyDoc As Object Dim Rg As Object, Dc As Object Dim MyPath As String, DocName As Object Dim MyFile As String 'Chemin du répertoire où sont les différents fichiers Word. 'Tous les fichiers de ce répertoire seront traités. MyPath = "E:Téléchargements_Test" MyFile = Dir(MyPath & "*.do*") Application.ScreenUpdating = False Set Wd = CreateObject("Word.Application") Wd.Visible = True 'Le contenu de tous les fichiers sera ajouté 'à ce nouveau document. Set MyDoc = Wd.Documents.Add MyDoc.Paragraphs.Add Do While MyFile <> "" Set Dc = Wd.Documents.Open(MyPath & MyFile) Set Rg = MyDoc.Range Rg.WholeStory Rg.Paragraphs.Add Rg.InsertAfter Dc.Name Set DocName = Rg.Paragraphs(Rg.Paragraphs.Count).Range With DocName .Font.Bold = True .Font.Size = 14 .Font.Color = vbBlue End With Rg.Paragraphs.Add Set DocName = Rg.Paragraphs(Rg.Paragraphs.Count).Range With DocName .Font.Bold = False .Font.Size = 11 .Font.Color = wdColorAutomatic End With Rg.InsertAfter Dc.Content Dc.Close False MyFile = Dir() Loop Application.ScreenUpdating = True End Sub '------------------------------------------------- MichD
bonjour, Désolé de vous ennuyer avec se projet, mais le dernier code que vous m'avez donné fait la même chose que l'autre. la mise en page et conservé mais les images, graphiques et tableaux sont remplacé par un "/". je ne sais pas si le problème est dans le code ou dans le format des documents ou des images, des graphiques (standard word) ou des tableaux word. merci pour votre aide j'ai pris contacte avec Microsoft pour savoir si se que veux faire est possible. Si vous avez d'autres idées je suis preneur. Pour info j'ai un pack office 2016. bonne journée
Le mardi 07 Avril 2020 à 16:16 par MichD :
>> dans le doc final toutes les images ont disparues
>> savez comment je peux régler le problème.
>> merci
>> bonne journée
>>
>>
>>
> Essaie comme ceci :
>
> '-------------------------------------------------
> Sub test()
> Dim Wd As Object, MyDoc As Object
> Dim Rg As Object, Dc As Object
> Dim MyPath As String, DocName As Object
> Dim MyFile As String
>
> 'Chemin du répertoire où sont les différents fichiers
> Word.
> 'Tous les fichiers de ce répertoire seront traités.
> MyPath = "E:Téléchargements_Test"
>
> MyFile = Dir(MyPath & "*.do*")
>
> Application.ScreenUpdating = False
>
> Set Wd = CreateObject("Word.Application")
> Wd.Visible = True
>
> 'Le contenu de tous les fichiers sera ajouté
> 'à ce nouveau document.
> Set MyDoc = Wd.Documents.Add
> MyDoc.Paragraphs.Add
>
> Do While MyFile <> ""
> Set Dc = Wd.Documents.Open(MyPath & MyFile)
> Set Rg = MyDoc.Range
> Rg.WholeStory
> Rg.Paragraphs.Add
> Rg.InsertAfter Dc.Name
> Set DocName = Rg.Paragraphs(Rg.Paragraphs.Count).Range
> With DocName
> .Font.Bold = True
> .Font.Size = 14
> .Font.Color = vbBlue
> End With
> Rg.Paragraphs.Add
> Set DocName = Rg.Paragraphs(Rg.Paragraphs.Count).Range
> With DocName
> .Font.Bold = False
> .Font.Size = 11
> .Font.Color = wdColorAutomatic
> End With
> Rg.InsertAfter Dc.Content
> Dc.Close False
> MyFile = Dir()
> Loop
> Application.ScreenUpdating = True
> End Sub
> '-------------------------------------------------
>
> MichD
bonjour,
Désolé de vous ennuyer avec se projet, mais le dernier code que vous m'avez donné fait la même chose que l'autre.
la mise en page et conservé mais les images, graphiques et tableaux sont remplacé par un "/".
je ne sais pas si le problème est dans le code ou dans le format des documents ou des images, des graphiques (standard word) ou des tableaux word.
merci pour votre aide j'ai pris contacte avec Microsoft pour savoir si se que veux faire est possible.
Si vous avez d'autres idées je suis preneur.
Pour info j'ai un pack office 2016.
bonne journée
dans le doc final toutes les images ont disparues savez comment je peux régler le problème. merci bonne journée
Essaie comme ceci : '------------------------------------------------- Sub test() Dim Wd As Object, MyDoc As Object Dim Rg As Object, Dc As Object Dim MyPath As String, DocName As Object Dim MyFile As String 'Chemin du répertoire où sont les différents fichiers Word. 'Tous les fichiers de ce répertoire seront traités. MyPath = "E:Téléchargements_Test" MyFile = Dir(MyPath & "*.do*") Application.ScreenUpdating = False Set Wd = CreateObject("Word.Application") Wd.Visible = True 'Le contenu de tous les fichiers sera ajouté 'à ce nouveau document. Set MyDoc = Wd.Documents.Add MyDoc.Paragraphs.Add Do While MyFile <> "" Set Dc = Wd.Documents.Open(MyPath & MyFile) Set Rg = MyDoc.Range Rg.WholeStory Rg.Paragraphs.Add Rg.InsertAfter Dc.Name Set DocName = Rg.Paragraphs(Rg.Paragraphs.Count).Range With DocName .Font.Bold = True .Font.Size = 14 .Font.Color = vbBlue End With Rg.Paragraphs.Add Set DocName = Rg.Paragraphs(Rg.Paragraphs.Count).Range With DocName .Font.Bold = False .Font.Size = 11 .Font.Color = wdColorAutomatic End With Rg.InsertAfter Dc.Content Dc.Close False MyFile = Dir() Loop Application.ScreenUpdating = True End Sub '------------------------------------------------- MichD
bonjour, Désolé de vous ennuyer avec se projet, mais le dernier code que vous m'avez donné fait la même chose que l'autre. la mise en page et conservé mais les images, graphiques et tableaux sont remplacé par un "/". je ne sais pas si le problème est dans le code ou dans le format des documents ou des images, des graphiques (standard word) ou des tableaux word. merci pour votre aide j'ai pris contacte avec Microsoft pour savoir si se que veux faire est possible. Si vous avez d'autres idées je suis preneur. Pour info j'ai un pack office 2016. bonne journée
MichD
merci pour votre aide j'ai pris contacte avec Microsoft pour savoir si se que veux faire est possible. Si vous avez d'autres idées je suis preneur. Pour info j'ai un pack office 2016. bonne journée
C'est sûrement possible. Tu es sur un forum Excel et non Word. Moi, j'ai une connaissance très limitée du modèle objet Word pour la programmation en VBA. Je réussis à copier le contenu incluant les images d'un fichier Word vers un autre fichier Word, mais j'éprouve de la difficulté à faire en sorte que la copie des autres fichiers s'ajoute harmonieusement l'un à la suite de l'autre. Tu devrais consulter un forum Word, tu aurais plus de chance d'obtenir ce que tu désires. À la retraite, je n'ai pas beaucoup d'intérêt à pousser plus loin l'apprentissage de la programmation avec les objets Word que j'utilise que pour une lettre à l'occasion. Salutations, MichD
merci pour votre aide j'ai pris contacte avec Microsoft pour savoir si se que
veux faire est possible.
Si vous avez d'autres idées je suis preneur.
Pour info j'ai un pack office 2016.
bonne journée
C'est sûrement possible. Tu es sur un forum Excel et non Word. Moi, j'ai
une connaissance très limitée du modèle objet Word pour la programmation
en VBA. Je réussis à copier le contenu incluant les images d'un fichier
Word vers un autre fichier Word, mais j'éprouve de la difficulté à faire
en sorte que la copie des autres fichiers s'ajoute harmonieusement l'un
à la suite de l'autre.
Tu devrais consulter un forum Word, tu aurais plus de chance d'obtenir
ce que tu désires. À la retraite, je n'ai pas beaucoup d'intérêt à
pousser plus loin l'apprentissage de la programmation avec les objets
Word que j'utilise que pour une lettre à l'occasion.
merci pour votre aide j'ai pris contacte avec Microsoft pour savoir si se que veux faire est possible. Si vous avez d'autres idées je suis preneur. Pour info j'ai un pack office 2016. bonne journée
C'est sûrement possible. Tu es sur un forum Excel et non Word. Moi, j'ai une connaissance très limitée du modèle objet Word pour la programmation en VBA. Je réussis à copier le contenu incluant les images d'un fichier Word vers un autre fichier Word, mais j'éprouve de la difficulté à faire en sorte que la copie des autres fichiers s'ajoute harmonieusement l'un à la suite de l'autre. Tu devrais consulter un forum Word, tu aurais plus de chance d'obtenir ce que tu désires. À la retraite, je n'ai pas beaucoup d'intérêt à pousser plus loin l'apprentissage de la programmation avec les objets Word que j'utilise que pour une lettre à l'occasion. Salutations, MichD
jujuetd63
Le jeudi 02 Avril 2020 à 14:23 par jujuetd63 :
Bonjour, je débute sur vba et je dois créer une application dans excel . le but est du prendre le contenu de plusieurs documents word de les stocker dans des variables dans excel puis de les combiner pour en faire un seul document world. exemple une lampe personnalisable doc1 = type d'ampoule doc2 = type de pied doc3 = type bouton doc final = notice de montage Je dois créer au final un manuel de référence pour les clients en fonction des chois de celui ci. je sais comment je souhait structurer mon interface excel mais je ne connais pas la syntaxe pour: prendre le contenu d'un word créer un doc word. pouvez vous m'aider merci
merci pour l'aide je vais suivre votre conseil. bonne journée
Le jeudi 02 Avril 2020 à 14:23 par jujuetd63 :
> Bonjour,
>
> je débute sur vba et je dois créer une application dans excel .
> le but est du prendre le contenu de plusieurs documents word de les stocker
> dans des variables dans excel puis de les combiner pour en faire un seul
> document world.
> exemple une lampe personnalisable
>
> doc1 = type d'ampoule
> doc2 = type de pied
> doc3 = type bouton
>
> doc final = notice de montage
>
> Je dois créer au final un manuel de référence pour les
> clients en fonction des chois de celui ci.
>
> je sais comment je souhait structurer mon interface excel mais je ne connais
> pas la syntaxe pour:
>
> prendre le contenu d'un word
> créer un doc word.
>
> pouvez vous m'aider
> merci
merci pour l'aide je vais suivre votre conseil.
bonne journée
Bonjour, je débute sur vba et je dois créer une application dans excel . le but est du prendre le contenu de plusieurs documents word de les stocker dans des variables dans excel puis de les combiner pour en faire un seul document world. exemple une lampe personnalisable doc1 = type d'ampoule doc2 = type de pied doc3 = type bouton doc final = notice de montage Je dois créer au final un manuel de référence pour les clients en fonction des chois de celui ci. je sais comment je souhait structurer mon interface excel mais je ne connais pas la syntaxe pour: prendre le contenu d'un word créer un doc word. pouvez vous m'aider merci
merci pour l'aide je vais suivre votre conseil. bonne journée
MichD
Voici une manière de faire mais avec l'application Word. A ) Ouvre un document Word B ) Ajoute la macro suivante. C ) Lance l'exécution La macro va ouvrir une fenêtre afin que tu puisses choisir le répertoire où sont situés tous les fichiers à réunir dans un seul. Cette procédure provient du site Web suivant. Je l'ai testée et cela fonctionne correctement. Sur le même site, tu en as un autre si tu préfères. https://www.datanumen.com/blogs/2-ways-quickly-merge-multiple-word-documents-one-via-vba/ À cette ligne de code : Type:=wdSectionBreakContinuous ' OU Type:=wdPageBreak Si tu désires que chaque document Word que tu copies se fasse à partir d'une nouvelle page, tu choisis Type:=wdPageBreak , ou si la copie doit se faire immédiatement à la suite du document précédent wdSectionBreakContinuous '----------------------------------------------------- Sub MergeFilesInAFolderIntoOneDoc() Dim dlgFile As FileDialog Dim objDoc As Document, objNewDoc As Document Dim StrFolder As String, strFile As String Set dlgFile = Application.FileDialog(msoFileDialogFolderPicker) With dlgFile If .Show = -1 Then StrFolder = .SelectedItems(1) & "" Else MsgBox ("No folder is selected!") Exit Sub End If End With strFile = Dir(StrFolder & "*.do*", vbNormal) Set objNewDoc = Documents.Add While strFile <> "" Set objDoc = Documents.Open(FileName:=StrFolder & strFile) objDoc.Range.Copy objNewDoc.Activate With Selection .Paste .InsertBreak Type:=wdSectionBreakContinuous ' Type:=wdPageBreak .Collapse wdCollapseEnd End With objDoc.Close SaveChanges:=wdDoNotSaveChanges strFile = Dir() Wend objNewDoc.Activate Selection.EndKey Unit:=wdStory Selection.Delete End Sub '----------------------------------------------------- MichD
Voici une manière de faire mais avec l'application Word.
A ) Ouvre un document Word
B ) Ajoute la macro suivante.
C ) Lance l'exécution
La macro va ouvrir une fenêtre afin que tu puisses choisir le répertoire
où sont situés tous les fichiers à réunir dans un seul.
Cette procédure provient du site Web suivant. Je l'ai testée et cela
fonctionne correctement. Sur le même site, tu en as un autre si tu préfères.
À cette ligne de code :
Type:=wdSectionBreakContinuous ' OU Type:=wdPageBreak
Si tu désires que chaque document Word que tu copies se fasse à partir
d'une nouvelle page, tu choisis Type:=wdPageBreak , ou si la copie doit
se faire immédiatement à la suite du document précédent
wdSectionBreakContinuous
'-----------------------------------------------------
Sub MergeFilesInAFolderIntoOneDoc()
Dim dlgFile As FileDialog
Dim objDoc As Document, objNewDoc As Document
Dim StrFolder As String, strFile As String
Set dlgFile = Application.FileDialog(msoFileDialogFolderPicker)
With dlgFile
If .Show = -1 Then
StrFolder = .SelectedItems(1) & ""
Else
MsgBox ("No folder is selected!")
Exit Sub
End If
End With
strFile = Dir(StrFolder & "*.do*", vbNormal)
Set objNewDoc = Documents.Add
While strFile <> ""
Set objDoc = Documents.Open(FileName:=StrFolder & strFile)
objDoc.Range.Copy
objNewDoc.Activate
With Selection
.Paste
.InsertBreak Type:=wdSectionBreakContinuous ' Type:=wdPageBreak
.Collapse wdCollapseEnd
End With
objDoc.Close SaveChanges:=wdDoNotSaveChanges
strFile = Dir()
Wend
objNewDoc.Activate
Selection.EndKey Unit:=wdStory
Selection.Delete
End Sub
'-----------------------------------------------------
Voici une manière de faire mais avec l'application Word. A ) Ouvre un document Word B ) Ajoute la macro suivante. C ) Lance l'exécution La macro va ouvrir une fenêtre afin que tu puisses choisir le répertoire où sont situés tous les fichiers à réunir dans un seul. Cette procédure provient du site Web suivant. Je l'ai testée et cela fonctionne correctement. Sur le même site, tu en as un autre si tu préfères. https://www.datanumen.com/blogs/2-ways-quickly-merge-multiple-word-documents-one-via-vba/ À cette ligne de code : Type:=wdSectionBreakContinuous ' OU Type:=wdPageBreak Si tu désires que chaque document Word que tu copies se fasse à partir d'une nouvelle page, tu choisis Type:=wdPageBreak , ou si la copie doit se faire immédiatement à la suite du document précédent wdSectionBreakContinuous '----------------------------------------------------- Sub MergeFilesInAFolderIntoOneDoc() Dim dlgFile As FileDialog Dim objDoc As Document, objNewDoc As Document Dim StrFolder As String, strFile As String Set dlgFile = Application.FileDialog(msoFileDialogFolderPicker) With dlgFile If .Show = -1 Then StrFolder = .SelectedItems(1) & "" Else MsgBox ("No folder is selected!") Exit Sub End If End With strFile = Dir(StrFolder & "*.do*", vbNormal) Set objNewDoc = Documents.Add While strFile <> "" Set objDoc = Documents.Open(FileName:=StrFolder & strFile) objDoc.Range.Copy objNewDoc.Activate With Selection .Paste .InsertBreak Type:=wdSectionBreakContinuous ' Type:=wdPageBreak .Collapse wdCollapseEnd End With objDoc.Close SaveChanges:=wdDoNotSaveChanges strFile = Dir() Wend objNewDoc.Activate Selection.EndKey Unit:=wdStory Selection.Delete End Sub '----------------------------------------------------- MichD
jujuetd63
Le jeudi 02 Avril 2020 à 14:23 par jujuetd63 :
Bonjour, je débute sur vba et je dois créer une application dans excel . le but est du prendre le contenu de plusieurs documents word de les stocker dans des variables dans excel puis de les combiner pour en faire un seul document world. exemple une lampe personnalisable doc1 = type d'ampoule doc2 = type de pied doc3 = type bouton doc final = notice de montage Je dois créer au final un manuel de référence pour les clients en fonction des chois de celui ci. je sais comment je souhait structurer mon interface excel mais je ne connais pas la syntaxe pour: prendre le contenu d'un word créer un doc word. pouvez vous m'aider merci
merci beaucoup pour votre aide. je vais voir comment je peux utiliser ce que vous m'avez envoyé. cordialement
Le jeudi 02 Avril 2020 à 14:23 par jujuetd63 :
> Bonjour,
>
> je débute sur vba et je dois créer une application dans excel .
> le but est du prendre le contenu de plusieurs documents word de les stocker
> dans des variables dans excel puis de les combiner pour en faire un seul
> document world.
> exemple une lampe personnalisable
>
> doc1 = type d'ampoule
> doc2 = type de pied
> doc3 = type bouton
>
> doc final = notice de montage
>
> Je dois créer au final un manuel de référence pour les
> clients en fonction des chois de celui ci.
>
> je sais comment je souhait structurer mon interface excel mais je ne connais
> pas la syntaxe pour:
>
> prendre le contenu d'un word
> créer un doc word.
>
> pouvez vous m'aider
> merci
merci beaucoup pour votre aide.
je vais voir comment je peux utiliser ce que vous m'avez envoyé.
cordialement
Bonjour, je débute sur vba et je dois créer une application dans excel . le but est du prendre le contenu de plusieurs documents word de les stocker dans des variables dans excel puis de les combiner pour en faire un seul document world. exemple une lampe personnalisable doc1 = type d'ampoule doc2 = type de pied doc3 = type bouton doc final = notice de montage Je dois créer au final un manuel de référence pour les clients en fonction des chois de celui ci. je sais comment je souhait structurer mon interface excel mais je ne connais pas la syntaxe pour: prendre le contenu d'un word créer un doc word. pouvez vous m'aider merci
merci beaucoup pour votre aide. je vais voir comment je peux utiliser ce que vous m'avez envoyé. cordialement
MichD
Bonjour, J'avais un peu de temps et j'ai adapté la procédure soumise de mon dernier message pour Excel Colle cette procédure dans un module standard. Le fichier final deviendra visible seulement à la fin de l'opération. Par conséquent, tu ne t’inquiètes pas si cela prend quelques secondes(?) selon le nombre de documents à traiter et que rien ne passe à l'écran. Même chose pour cette procédure, tu peux choisir d'insérer les documents l'un à la suite de l'autre, ou chaque document s'ajoute sur la page suivante dans le nouveau document. Pour ce faire, à toi de choisir ce que tu désires dans la ligne de code suivante dans la procédure. Type:=wdSectionBreakContinuous ' OU wdPageBreak '----------------------------------------------- Sub MergeFilesInAFolderIntoOneDoc() Dim Wd As Object Dim dlgFile As FileDialog Dim objDoc As Object, objNewDoc As Object Dim StrFolder As String, strFile As String Set dlgFile = Application.FileDialog(msoFileDialogFolderPicker) With dlgFile If .Show = -1 Then StrFolder = .SelectedItems(1) & "" Else MsgBox ("No folder is selected!") Exit Sub End If End With strFile = Dir(StrFolder & "*.do*", vbNormal) Set Wd = CreateObject("Word.application") Set objNewDoc = Wd.Documents.Add objNewDoc.Paragraphs.Add While strFile <> "" Set objDoc = Wd.Documents.Open(Filename:=StrFolder & strFile) objDoc.Range.Copy objNewDoc.Activate With Wd.Selection .Paste .Collapse wdCollapseEnd .InsertBreak Type:=wdSectionBreakContinuous ' OU wdPageBreak End With objDoc.Close SaveChanges:=wdDoNotSaveChanges strFile = Dir() Wend objNewDoc.Activate Wd.Selection.EndKey unit:=wdStory Wd.Selection.Delete Wd.Visible = True End Sub '----------------------------------------------- MichD
Bonjour,
J'avais un peu de temps et j'ai adapté la procédure soumise de mon
dernier message pour Excel
Colle cette procédure dans un module standard.
Le fichier final deviendra visible seulement à la fin de l'opération.
Par conséquent, tu ne t’inquiètes pas si cela prend quelques secondes(?)
selon le nombre de documents à traiter et que rien ne passe à l'écran.
Même chose pour cette procédure, tu peux choisir d'insérer les documents
l'un à la suite de l'autre, ou chaque document s'ajoute sur la page
suivante dans le nouveau document. Pour ce faire, à toi de choisir ce
que tu désires dans la ligne de code suivante dans la procédure.
Type:=wdSectionBreakContinuous ' OU wdPageBreak
'-----------------------------------------------
Sub MergeFilesInAFolderIntoOneDoc()
Dim Wd As Object
Dim dlgFile As FileDialog
Dim objDoc As Object, objNewDoc As Object
Dim StrFolder As String, strFile As String
Set dlgFile = Application.FileDialog(msoFileDialogFolderPicker)
With dlgFile
If .Show = -1 Then
StrFolder = .SelectedItems(1) & ""
Else
MsgBox ("No folder is selected!")
Exit Sub
End If
End With
strFile = Dir(StrFolder & "*.do*", vbNormal)
Set Wd = CreateObject("Word.application")
Set objNewDoc = Wd.Documents.Add
objNewDoc.Paragraphs.Add
While strFile <> ""
Set objDoc = Wd.Documents.Open(Filename:=StrFolder & strFile)
objDoc.Range.Copy
objNewDoc.Activate
With Wd.Selection
.Paste
.Collapse wdCollapseEnd
.InsertBreak Type:=wdSectionBreakContinuous ' OU wdPageBreak
End With
objDoc.Close SaveChanges:=wdDoNotSaveChanges
strFile = Dir()
Wend
objNewDoc.Activate
Wd.Selection.EndKey unit:=wdStory
Wd.Selection.Delete
Wd.Visible = True
End Sub
'-----------------------------------------------
Bonjour, J'avais un peu de temps et j'ai adapté la procédure soumise de mon dernier message pour Excel Colle cette procédure dans un module standard. Le fichier final deviendra visible seulement à la fin de l'opération. Par conséquent, tu ne t’inquiètes pas si cela prend quelques secondes(?) selon le nombre de documents à traiter et que rien ne passe à l'écran. Même chose pour cette procédure, tu peux choisir d'insérer les documents l'un à la suite de l'autre, ou chaque document s'ajoute sur la page suivante dans le nouveau document. Pour ce faire, à toi de choisir ce que tu désires dans la ligne de code suivante dans la procédure. Type:=wdSectionBreakContinuous ' OU wdPageBreak '----------------------------------------------- Sub MergeFilesInAFolderIntoOneDoc() Dim Wd As Object Dim dlgFile As FileDialog Dim objDoc As Object, objNewDoc As Object Dim StrFolder As String, strFile As String Set dlgFile = Application.FileDialog(msoFileDialogFolderPicker) With dlgFile If .Show = -1 Then StrFolder = .SelectedItems(1) & "" Else MsgBox ("No folder is selected!") Exit Sub End If End With strFile = Dir(StrFolder & "*.do*", vbNormal) Set Wd = CreateObject("Word.application") Set objNewDoc = Wd.Documents.Add objNewDoc.Paragraphs.Add While strFile <> "" Set objDoc = Wd.Documents.Open(Filename:=StrFolder & strFile) objDoc.Range.Copy objNewDoc.Activate With Wd.Selection .Paste .Collapse wdCollapseEnd .InsertBreak Type:=wdSectionBreakContinuous ' OU wdPageBreak End With objDoc.Close SaveChanges:=wdDoNotSaveChanges strFile = Dir() Wend objNewDoc.Activate Wd.Selection.EndKey unit:=wdStory Wd.Selection.Delete Wd.Visible = True End Sub '----------------------------------------------- MichD
MichD
Un petit oubli lors de mon dernier message, je n'ai pas déclaré les constantes de l'application Word utilisées dans la procédure. Comme je n'ai pas déclaré la référence Word dans le projetVBA du classeur, Excel ne peut pas connaître la valeur numérique de ces constantes textes. 2 Choix : A ) déclarer les constantes en début de procédure B ) utiliser la valeur numérique de ces constantes au lieu de la valeur texte de ces constantes directement dans le code. Par conséquent, nul besoin de déclarer les constantes au début de la procédure Voici la version finale: '--------------------------------------------- Sub MergeFilesInAFolderIntoOneDoc() Const wdPageBreak = 7 Const wdSectionBreakContinuous = 3 Const wdCollapseEnd = 0 Const wdDoNotSaveChanges = 0 Const wdStory = 6 Dim Wd As Object, dlgFile As FileDialog Dim objDoc As Object, objNewDoc As Object Dim StrFolder As String, strFile As String Set dlgFile = Application.FileDialog(msoFileDialogFolderPicker) With dlgFile If .Show = -1 Then StrFolder = .SelectedItems(1) & "" Else MsgBox ("No folder is selected!") Exit Sub End If End With strFile = Dir(StrFolder & "*.do*", vbNormal) Set Wd = CreateObject("Word.application") Set objNewDoc = Wd.Documents.Add objNewDoc.Paragraphs.Add While strFile <> "" Set objDoc = Wd.Documents.Open(Filename:=StrFolder & strFile) objDoc.Range.Copy objNewDoc.Activate With Wd.Selection .Paste .Collapse wdCollapseEnd .InsertBreak Type:=wdSectionBreakContinuous 'OU wdPageBreak End With objDoc.Close SaveChanges:=wdDoNotSaveChanges strFile = Dir() Wend objNewDoc.Activate Wd.Selection.EndKey unit:=wdStory Wd.Selection.Delete Wd.Visible = True End Sub '--------------------------------------------- MichD
Un petit oubli lors de mon dernier message, je n'ai pas déclaré les
constantes de l'application Word utilisées dans la procédure.
Comme je n'ai pas déclaré la référence Word dans le projetVBA du
classeur, Excel ne peut pas connaître la valeur numérique de ces
constantes textes.
2 Choix :
A ) déclarer les constantes en début de procédure
B ) utiliser la valeur numérique de ces constantes au lieu de la valeur
texte de ces constantes directement dans le code. Par conséquent, nul
besoin de déclarer les constantes au début de la procédure
Voici la version finale:
'---------------------------------------------
Sub MergeFilesInAFolderIntoOneDoc()
Un petit oubli lors de mon dernier message, je n'ai pas déclaré les constantes de l'application Word utilisées dans la procédure. Comme je n'ai pas déclaré la référence Word dans le projetVBA du classeur, Excel ne peut pas connaître la valeur numérique de ces constantes textes. 2 Choix : A ) déclarer les constantes en début de procédure B ) utiliser la valeur numérique de ces constantes au lieu de la valeur texte de ces constantes directement dans le code. Par conséquent, nul besoin de déclarer les constantes au début de la procédure Voici la version finale: '--------------------------------------------- Sub MergeFilesInAFolderIntoOneDoc() Const wdPageBreak = 7 Const wdSectionBreakContinuous = 3 Const wdCollapseEnd = 0 Const wdDoNotSaveChanges = 0 Const wdStory = 6 Dim Wd As Object, dlgFile As FileDialog Dim objDoc As Object, objNewDoc As Object Dim StrFolder As String, strFile As String Set dlgFile = Application.FileDialog(msoFileDialogFolderPicker) With dlgFile If .Show = -1 Then StrFolder = .SelectedItems(1) & "" Else MsgBox ("No folder is selected!") Exit Sub End If End With strFile = Dir(StrFolder & "*.do*", vbNormal) Set Wd = CreateObject("Word.application") Set objNewDoc = Wd.Documents.Add objNewDoc.Paragraphs.Add While strFile <> "" Set objDoc = Wd.Documents.Open(Filename:=StrFolder & strFile) objDoc.Range.Copy objNewDoc.Activate With Wd.Selection .Paste .Collapse wdCollapseEnd .InsertBreak Type:=wdSectionBreakContinuous 'OU wdPageBreak End With objDoc.Close SaveChanges:=wdDoNotSaveChanges strFile = Dir() Wend objNewDoc.Activate Wd.Selection.EndKey unit:=wdStory Wd.Selection.Delete Wd.Visible = True End Sub '--------------------------------------------- MichD