Assemblage de classeur excel
Résolu
jujuetd63
-
jujuetd63 -
jujuetd63 -
Bonjour,
Je débute sur VBA et je souhaite pouvoir assembler plusieurs classeurs EXCEL pour créer un document au format PDF mais je souhaite aussi garder ce même document dans une version facilement modifiable (un classeur EXCEL final par exemple).
Je réalise déjà une opération similaire avec des documents WORD où je transfère l'ensemble des documents sources dans un dossier avant de lancer un document WORD dans lequel se trouve une macro qui effectue l'assemblage.
Je pensais donc rassembler les différentes sources EXCEL dans un autre dossier, et de la faire l'assemblage. Cela je pense déjà pouvoir le faire par moi même.
J'ai trouvé plusieurs tuto pour assembler deux classeurs mais cela ne correspond pas à ce que je veux faire.
Je souhaite pouvoir assembler tout les documents TYPE EXCEL contenue dans le dossier mais dans un ordre défini.
Pour les documents WORD que j'assemble déjà, il suffi de les numéroter au moment du transfert et cela fonctionne, je pense donc pouvoir faire la même chose pendant le transfert des documents EXCEL.
Je ne trouve pas de code permettant de s'approcher de se fonctionnement.
Si vous avez des idées je suis preneur merci d'avance.
Je me tourne vers vous car c'est vous qui m'avais permis de mettre le document WORD final en PDF dans ce projet.
Cordialement
Je débute sur VBA et je souhaite pouvoir assembler plusieurs classeurs EXCEL pour créer un document au format PDF mais je souhaite aussi garder ce même document dans une version facilement modifiable (un classeur EXCEL final par exemple).
Je réalise déjà une opération similaire avec des documents WORD où je transfère l'ensemble des documents sources dans un dossier avant de lancer un document WORD dans lequel se trouve une macro qui effectue l'assemblage.
Je pensais donc rassembler les différentes sources EXCEL dans un autre dossier, et de la faire l'assemblage. Cela je pense déjà pouvoir le faire par moi même.
J'ai trouvé plusieurs tuto pour assembler deux classeurs mais cela ne correspond pas à ce que je veux faire.
Je souhaite pouvoir assembler tout les documents TYPE EXCEL contenue dans le dossier mais dans un ordre défini.
Pour les documents WORD que j'assemble déjà, il suffi de les numéroter au moment du transfert et cela fonctionne, je pense donc pouvoir faire la même chose pendant le transfert des documents EXCEL.
Je ne trouve pas de code permettant de s'approcher de se fonctionnement.
Si vous avez des idées je suis preneur merci d'avance.
Je me tourne vers vous car c'est vous qui m'avais permis de mettre le document WORD final en PDF dans ce projet.
Cordialement
Configuration: Windows / Edge 18.18362
A voir également:
- Assemblage de classeur excel
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
- Imprimer un classeur excel sur mac - Guide
13 réponses
Bonjour,
Tu peux t'inspirer de cela:
http://boisgontierjacques.free.fr/pages_site/GestionOnglets.htm#OngletsClasseursRepertoire
Il faut bien entendu qu'ils soient dans le même répertoire et dans l'ordre que toi est le seul a savoir!
Tu peux t'inspirer de cela:
http://boisgontierjacques.free.fr/pages_site/GestionOnglets.htm#OngletsClasseursRepertoire
Il faut bien entendu qu'ils soient dans le même répertoire et dans l'ordre que toi est le seul a savoir!
Si je comprend bien ce qui est écrit dans le document du lien il faut que le document actif soit celui qui reçoit le contenu des autres documents.
Dans mon cas le classeur EXCEL actif est l'interface d'assemblage.
Le document assemblé est à créer de toute pièce à chaque utilisation de l'interface.
Je ne peux donc pas utiliser le document actif comme dans le code que vous m' avez envoyer.
Comment est il possible de modifier ce code pour le faire fonctionner sans le document actif?
Si il faut un document support je peux en créer un ( je ne sais pas encore comment).
J'utilise une méthode similaire pour l'assemblage des documents WORD.
Dans mon cas le classeur EXCEL actif est l'interface d'assemblage.
Le document assemblé est à créer de toute pièce à chaque utilisation de l'interface.
Je ne peux donc pas utiliser le document actif comme dans le code que vous m' avez envoyer.
Comment est il possible de modifier ce code pour le faire fonctionner sans le document actif?
Si il faut un document support je peux en créer un ( je ne sais pas encore comment).
J'utilise une méthode similaire pour l'assemblage des documents WORD.
bonjour, il est possible de modifier ce code, en remplaçant la ligne
par exemple:
Set classeurMaitre = ActiveWorkbookpar la création d'un document Excel.
par exemple:
dim classeurMaitre as workbook Set classeurMaitre= Workbooks.Add ' le reste du boulot classeurMaitre.SaveAs Filename:= thisworkbook.path + "\Assemble.xlsx"
désolé mais je ne vois pas où mettre les quatre ligne de code que tu m'a donné dans le code suivant:
Code donné par cs_le piver
et que veut dire ".ADD"
Sub consolide()
' Ce classeur et les classeurs à consolider sont dans le même répertoire
répertoire = ThisWorkbook.Path
Set classeurMaitre = ActiveWorkbook
sup
compteur = 1
nf = Dir(répertoire & "\*.xls") ' premier fichier
Do While nf <> ""
If nf <> classeurMaitre.Name Then
Workbooks.Open Filename:=nf
For k = 1 To Sheets.Count
Sheets(k).Copy After:=classeurMaitre.Sheets(classeurMaitre.Sheets.Count)
classeurMaitre.Sheets(classeurMaitre.Sheets.Count).Name = "Mapage" & compteur
compteur = compteur + 1
Next k
Workbooks(nf).Close False
End If
nf = Dir
Loop
End Sub
Sub sup()
Application.DisplayAlerts = False
If Sheets.Count > 1 Then
Sheets("Accueil").Move before:=Sheets(1)
Sheets(2).Select
For i = 2 To Sheets.Count
ActiveSheet.Delete
Next i
End If
End Sub
Code donné par cs_le piver
et que veut dire ".ADD"
il faudrait quand même avoir les bases!
https://www.excel-plus.fr/vba/demvba/gerer-les-classeurs-en-vba/
Le code que t'a donné yg_be est facile à mettre en place. Cela saute aux yeux.
il faudra aussi modifier cette ligne car tu n'auras que les classeurs 2003!
@+ Le Pivert
https://www.excel-plus.fr/vba/demvba/gerer-les-classeurs-en-vba/
Le code que t'a donné yg_be est facile à mettre en place. Cela saute aux yeux.
il faudra aussi modifier cette ligne car tu n'auras que les classeurs 2003!
nf = Dir(répertoire & "\*.xls") ' premier fichier
@+ Le Pivert
je suis désolé si mon niveau est bas mais on me demande de faire se travail car personne n'a travailler sur VBA et que j'ai vu VBA lors d'une formation en automatisme il y a 4 ans maintenant pendant 3 jours. Je n'ai manipulé que des informations provenant de différentes page d' un même classeur.
Aujourd'hui et avec l'aide de différents forums comme celui ci, j'ai créé une interface qui assemble des documents WORD et le met en PDF.
Je ne souhaite pas vous faire perdre votre temps, je vous remercie pour votre aide et je vais essayer ce que vous m'avez fourni.
Aujourd'hui et avec l'aide de différents forums comme celui ci, j'ai créé une interface qui assemble des documents WORD et le met en PDF.
Je ne souhaite pas vous faire perdre votre temps, je vous remercie pour votre aide et je vais essayer ce que vous m'avez fourni.
Ce n'est pas une question de temps mais de compréhension::
Quand je lis:
désolé mais je ne vois pas où mettre les quatre ligne de code que tu m'a donné dans le code suivant:
https://forums.commentcamarche.net/forum/affich-36676544-assemblage-de-classeur-excel#3
regarde ce post attentivement tout est dit!
@+ Le Pivert
Quand je lis:
désolé mais je ne vois pas où mettre les quatre ligne de code que tu m'a donné dans le code suivant:
https://forums.commentcamarche.net/forum/affich-36676544-assemblage-de-classeur-excel#3
regarde ce post attentivement tout est dit!
@+ Le Pivert
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
c'est la ligne:
classeurMaitre.SaveAs Filename:= thisworkbook.path + "\Assemble.xlsx"
qui me pose problème.
je ne sais pas où la mettre.
je comprend qu'elle enregistre le document dans le répertoire où se trouve le classeur actif mais est il le document final ou le document support pour l'assemblage.
classeurMaitre.SaveAs Filename:= thisworkbook.path + "\Assemble.xlsx"
qui me pose problème.
je ne sais pas où la mettre.
je comprend qu'elle enregistre le document dans le répertoire où se trouve le classeur actif mais est il le document final ou le document support pour l'assemblage.
bonjour,
Après plusieurs tests j'ai une erreur au niveau de la ligne :
Workbooks.Open Filename:=nf
dans le code suivant:
Je rassemble grâce au "call" les documents EXCEL dans un dossier "assemblagemodbus"
puis je dois les assembler.
Je reçois l'erreur 1004: "nous ne trouvons pas 00_entete.xlsx".
je pensais qu'à la ligne "r?pertoire = "D:\COMPTE.R\test macro\assemblagemodbus"
j'indiquais le dossier où le document d'assemblage et les documents à assembler se trouvaient.
Comme puis je sélectionner le dossier où se trouve mes document à assembler?
Cordialement
Après plusieurs tests j'ai une erreur au niveau de la ligne :
Workbooks.Open Filename:=nf
dans le code suivant:
Sub assembmodbus()
Call entete
Call ensmodbus1
Call ensmodbus2
Call ensmodbus3
Call ensmodbus4
Call ensmodbus5
Call ensmodbus6
Call ensmodbus7
Call ensmodbus8
Call ensmodbus9
Call ensmodbus10
Call ensmodbus11
Call ensmodbus12
Call ensmodbus13
Call ensmodbus14
Call ensmodbus15
Call ensmodbus16
Call ensmodbus17
Call ensmodbus18
Call ensmodbus19
Call ensmodbus20
' Ce classeur et les classeurs ? consolider sont dans le m?me r?pertoire
r?pertoire = "D:\COMPTE.R\test macro\assemblagemodbus"
Dim classeurMaitre As Workbook
Set classeurMaitre = Workbooks.Add
sup
compteur = 1
nf = Dir(r?pertoire & "\*.xlsx") ' premier fichier
Do While nf <> ""
If nf <> classeurMaitre.Name Then
Workbooks.Open Filename:=nf
For k = 1 To Sheets.Count
Sheets(k).Copy After:=classeurMaitre.Sheets(classeurMaitre.Sheets.Count)
classeurMaitre.Sheets(classeurMaitre.Sheets.Count).Name = "ModBus" & compteur
compteur = compteur + 1
Next k
Workbooks(nf).Close False
End If
nf = Dir
Loop
classeurMaitre.SaveAs Filename:="D:\COMPTE.R\test macro\final" & "\DocModbusFinal.xlsx"
Call savePDFmodbus
End Sub
Sub sup()
Application.DisplayAlerts = False
If Sheets.Count > 1 Then
Sheets("Accueil").Move Before:=Sheets(1)
Sheets(2).Select
For i = 2 To Sheets.Count
ActiveSheet.Delete
Next i
End If
End Sub
Je rassemble grâce au "call" les documents EXCEL dans un dossier "assemblagemodbus"
puis je dois les assembler.
Je reçois l'erreur 1004: "nous ne trouvons pas 00_entete.xlsx".
je pensais qu'à la ligne "r?pertoire = "D:\COMPTE.R\test macro\assemblagemodbus"
j'indiquais le dossier où le document d'assemblage et les documents à assembler se trouvaient.
Comme puis je sélectionner le dossier où se trouve mes document à assembler?
Cordialement
A rectifier:
pour voir si c'est le bon fichier mettre ceci:
Il serait préférable de faire:
@+ Le Pivert
r?pertoire = "D:\COMPTE.R\test macro\assemblagemodbus\"' il manquait \
pour voir si c'est le bon fichier mettre ceci:
If nf <> classeurMaitre.Name Then
MsgBox nf
Workbooks.Open Filename:=nf
Il serait préférable de faire:
Sub assembmodbus() Call entete Call ensmodbus1 Call ensmodbus2 Call ensmodbus3 Call ensmodbus4 Call ensmodbus5 Call ensmodbus6 Call ensmodbus7 Call ensmodbus8 Call ensmodbus9 Call ensmodbus10 Call ensmodbus11 Call ensmodbus12 Call ensmodbus13 Call ensmodbus14 Call ensmodbus15 Call ensmodbus16 Call ensmodbus17 Call ensmodbus18 Call ensmodbus19 Call ensmodbus20 End Sub Sub savepdf() ' Ce classeur et les classeurs ? consolider sont dans le m?me r?pertoire r?pertoire = "D:\COMPTE.R\test macro\assemblagemodbus" Dim classeurMaitre As Workbook Set classeurMaitre = Workbooks.Add 'lasuite
@+ Le Pivert
merci cela fonctionne.
Autre question, j' ai un code qui me permet de convertir un document WORD en PDF.
j'ai voulu l'adapter pour convertir le document EXCEL final créé avec le code du poste au dessus mais cela ne fonctionne pas.
voici le code pour WORD:
Et voici le code modifier pour EXCEL
l'erreur que j'ai, est au niveau de la déclaration de la variable "Dim appexcel As Workbook.Application"
Autre question, j' ai un code qui me permet de convertir un document WORD en PDF.
j'ai voulu l'adapter pour convertir le document EXCEL final créé avec le code du poste au dessus mais cela ne fonctionne pas.
voici le code pour WORD:
Sub savePDF()
Dim docWord As Word.Document
Dim appWord As Word.Application
Dim fic_doc As String
Dim cheminpdf As String
Set appWord = New Word.Application
appWord.Visible = True
fic_doc = Range("h4").Value
'Ouverture du document principal Word
Set docWord = appWord.Documents.Open(fic_doc)
cheminpdf = Replace(fic_doc, "docx", "pdf")
'enregistre en pdf dans le dossier en cours
docWord.ExportAsFixedFormat outputFileName:=cheminpdf, _
exportFormat:=wdExportFormatPDF
'Fermeture du document Word
docWord.Close False
appWord.Quit
End Sub
Et voici le code modifier pour EXCEL
Sub savePDFmodbus()
Dim docexcel As Workbook
Dim appexcel As Workbook.Application
Dim chemin As String
Dim cheminpdf As String
Set appexcel = New Workbooks.Application
appexcel.Visible = True
chemin = Range("h5").Value
'Ouverture du document principal excel
Set docexcel = Workbooks.Documents.Open(chemin)
cheminpdf = Replace(chemin, "xlsx", "pdf")
'enregistre en pdf dans le dossier en cours
docexcel.ExportAsFixedFormat outputFileName:=cheminpdf, _
exportFormat:=wdExportFormatPDF
'Fermeture du document Word
docexcel.Close False
appexcel.Quit
End Sub
l'erreur que j'ai, est au niveau de la déclaration de la variable "Dim appexcel As Workbook.Application"
non pour une raison que j'ignore je n'arrive pas à enregistrer de macro quand je créer un pdf en manuel.
j' ai réussi pour d'autres fonctionnalités mais pour celle ci cela ne fonctionne pas la macro est vide.
de plus le classeur à convertir est fermé et enregistré dans un dossier diffèrent de l'interface EXCEL qui est ouverte.
j' ai réussi pour d'autres fonctionnalités mais pour celle ci cela ne fonctionne pas la macro est vide.
de plus le classeur à convertir est fermé et enregistré dans un dossier diffèrent de l'interface EXCEL qui est ouverte.
Comme ceci:
C'est une macro à mettre dans le classeur assemblé!!!
@+ Le Pivert
Sub CreerPDF()
Dim sRep As String
Dim sFilename As String
Sheets.Select 'sélection de toutes les feuilles
sRep = ThisWorkbook.Path & "\"
sFilename = ThisWorkbook.Name
sFilename = Left(sFilename, InStr(1, sFilename, ".")) & "pdf"
ActiveSheet.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=sRep & sFilename, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=True
MsgBox "Enregistrer en PDF dans le même dossier que ce classeur", vbInformation, "Enregistrement en PDF"
End Sub
C'est une macro à mettre dans le classeur assemblé!!!
@+ Le Pivert
ou peut-être:
classeurMaitre.SaveAs Filename:="D:\COMPTE.R\test macro\final" & "\DocModbusFinal.xlsx"
sFilename = "D:\COMPTE.R\test macro\final" & "\DocModbusFinal.pdf"
classeurMaitre.ExportAsFixedFormat
Type:=xlTypePDF, _
Filename:=sRep & sFilename, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=True
bonjour
je teste depuis ce matin le code ci dessus mais j'ai une erreur de compilation.
"attendu: identificateur"
sur les lignes suivantes:
J'ai vérifié la syntaxe, elle semble ok.
Je ne comprend pas le problème même avec l'aide.
je teste depuis ce matin le code ci dessus mais j'ai une erreur de compilation.
"attendu: identificateur"
sur les lignes suivantes:
Type:=xlTypePDF, _
Filename:=sRep & sFilename, _
Quality:=xlQualityStandard, _
IncludeDocProperies:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=True
J'ai vérifié la syntaxe, elle semble ok.
Je ne comprend pas le problème même avec l'aide.
désolé
je viens de trouver mon erreur.
J'ai une erreur de compilation sur la ligne:
"IncludeDocProperies:=True, _"
Argument nommé introuvable
Faut il une référence spéciale?
j'ai essayé sans cette ligne le document semble se créer mais je ne peu pas l'ouvrir.
je viens de trouver mon erreur.
J'ai une erreur de compilation sur la ligne:
"IncludeDocProperies:=True, _"
Argument nommé introuvable
Faut il une référence spéciale?
j'ai essayé sans cette ligne le document semble se créer mais je ne peu pas l'ouvrir.