Rassembler les onglets de différents classeurs dans un seul
Airemlique
-
rEVOLV3r Messages postés 232 Statut Membre -
rEVOLV3r Messages postés 232 Statut Membre -
Bonjour tout le monde,
J'ai plusieurs classeurs contenant chacun trois onglets. Seul l'onglet central m'intéresse.
Je cherche à obtenir un classeur rassemblant tous les onglets centraux de ces classeurs.
Quelqu'un connaitrait-il un programme VBA adéquat?
Merci d'avance pour vos réponses
PS: Cette question a déjà été posée de façon analogue mais mes connaissances en VBA ne me permettent malheureusement pas d'adapter les réponses.
J'ai plusieurs classeurs contenant chacun trois onglets. Seul l'onglet central m'intéresse.
Je cherche à obtenir un classeur rassemblant tous les onglets centraux de ces classeurs.
Quelqu'un connaitrait-il un programme VBA adéquat?
Merci d'avance pour vos réponses
PS: Cette question a déjà été posée de façon analogue mais mes connaissances en VBA ne me permettent malheureusement pas d'adapter les réponses.
A voir également:
- Rassembler les onglets de différents classeurs dans un seul
- Rouvrir les onglets fermés chrome - Guide
- Comment rassembler plusieurs fichiers pdf en un seul - Guide
- Double affichage sur un seul écran - Guide
- Regrouper plusieurs onglets excel en un seul - Guide
- Comment imprimer un tableau excel sur une seule page - Guide
11 réponses
Bonjour,
Vous pouvez le réaliser via clic droit sur l'onglet concerné et clic sur l'option [Déplacer ou copier..]. Dans la fenêtre, sous [Dans classeur :] vous choisissez le classeur adéquat puis cocher l'option [Créer une copie] et pour terminer clic OK. Suite ouvrir le classeur suivant et répéter les opérations (c'est plus rapide à faire qu'à l'expliquer.
Vous pouvez le réaliser via clic droit sur l'onglet concerné et clic sur l'option [Déplacer ou copier..]. Dans la fenêtre, sous [Dans classeur :] vous choisissez le classeur adéquat puis cocher l'option [Créer une copie] et pour terminer clic OK. Suite ouvrir le classeur suivant et répéter les opérations (c'est plus rapide à faire qu'à l'expliquer.
Bonjour,
Ou bien tu ouvres tes fichiers, sélectionnes celui qui reçoit (pour qu'il soit en premier, en haut à gauche à la fin) et fais 'fenetre / réorganiser / mosaïque' pour les avoir tous sous les yeux.
Tu sélectionnes l'onglet voulu et tu fais un cliqué-glissé pour le déposer sur le fichier qui reçoit.
Appuie sur Ctrl quand tu relâches la souris si tu veux copier et non déplacer l'onglet.
eric
Ou bien tu ouvres tes fichiers, sélectionnes celui qui reçoit (pour qu'il soit en premier, en haut à gauche à la fin) et fais 'fenetre / réorganiser / mosaïque' pour les avoir tous sous les yeux.
Tu sélectionnes l'onglet voulu et tu fais un cliqué-glissé pour le déposer sur le fichier qui reçoit.
Appuie sur Ctrl quand tu relâches la souris si tu veux copier et non déplacer l'onglet.
eric
Merci pour vos réponses.
En réalité, il y a de nombreux classeurs et je souhaiterais utiliser une macro de façon à ce que ce soit fait de façon automatique.
Quelqu'un a t-il une idée du code VBA à entrer?
En réalité, il y a de nombreux classeurs et je souhaiterais utiliser une macro de façon à ce que ce soit fait de façon automatique.
Quelqu'un a t-il une idée du code VBA à entrer?
Bonjour,
Il me faudrait un petite indication pour vous faire le code vba ;-)
Est-ce que tous vos classeurs sont-ils dans le même dossier ? Si oui, cela est facile.
Il me faudrait un petite indication pour vous faire le code vba ;-)
Est-ce que tous vos classeurs sont-ils dans le même dossier ? Si oui, cela est facile.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour
regarde si cette discussion peut te mettre sur une piste
https://forums.commentcamarche.net/forum/affich-27957860-remplir-un-fichier-excel-a-partir-d-autres-fichiers-excels
regarde si cette discussion peut te mettre sur une piste
https://forums.commentcamarche.net/forum/affich-27957860-remplir-un-fichier-excel-a-partir-d-autres-fichiers-excels
Bonjour,
merci pour vos réponses.
Oui rEVOLV3r tous les classeurs sont dans le même dossier.
Michel_m, en fait il s'agit de déplacer simplement les onglets des classeurs dans un seul classeur mais sans fusionner les onglets entre eux. Il s'agit s de systématiser la procédure du déplacer-copier dans un autre classeur tous ces onglets.
Merci de votre aide
merci pour vos réponses.
Oui rEVOLV3r tous les classeurs sont dans le même dossier.
Michel_m, en fait il s'agit de déplacer simplement les onglets des classeurs dans un seul classeur mais sans fusionner les onglets entre eux. Il s'agit s de systématiser la procédure du déplacer-copier dans un autre classeur tous ces onglets.
Merci de votre aide
Voilà la macro, elle nécessite certaines explications.
___
Sub Import()
'Source
Dim ClasseurSource As Workbook
Set ClasseurSource = ActiveWorkbook
'Chemin du dossier où sont les classeurs excel
Dim CheminTypeDonnees As String
'soit en hard
CheminTypeDonnees = "C:\Users\regis\Desktop\test\*.*" 'chemin a modifier biensur
'soit en relatif
'chemin = classeursource.Sheets(1).range("A1").value
'dans ce cas il faut mettre le chemin comme marqué ci-dessus dans la case A1
'Attention à bien laisser l'extension dans le chemin ! Si tu as plusieurs type de fichiers il faut mettre *.xls ou *xlsm suivant ce que tu as.
'Définition du chemin à tester - PERMET DE "MONTRER" LE CHEMIN A LA MACRO
Dim RetVal As Boolean
Dim Chemin As String
Chemin = "C:\Users\regis\Desktop\test"
ChDir Chemin
RetVal = Application.Dialogs(xlDialogOpen).Show(CheminTypeDonnees) 'ouverture de la boite de dialogue
If RetVal = True Then Exit Sub
'Si le chemin montré est correct, pressez sur annuler ! Pour que la macro continue. Je n'ai malheureusement toujorus pas trouvé d'autre façon de faire pour "montrer" à la macro le chemin de base sans tout faire buger la première fois.
'Y a t'il des fichiers dans le répertoire ?
Dim objOFS As Variant
Set objOFS = CreateObject("Scripting.FileSystemObject")
'Test si au moins un fichier present
If Dir(CheminTypeDonnees) <> "" Then
'Activer le classeur source
ClasseurSource.Activate
'Gérer le répertoire de fichiers excel
fichier = Dir(CheminTypeDonnees)
Do While fichier <> ""
Set wbsource = Workbooks.Open(fichier) 'ouverture du premier classeur
Set wksNewSheet = wbsource.Sheets(2) 'selection du premier onglet
wksNewSheet.Copy after:=ClasseurSource.Sheets(1) ' mets a la place du 1 le dernier onglet de ton classeur principal
ClasseurSource.Activate
wbsource.Close 'fermerture du classeur excel dont l'onglet a été copié
fichier = Dir 'Prochain classeur
Loop 'bouclage
End If
End Sub
___
Amicalement,
Régis
___
Sub Import()
'Source
Dim ClasseurSource As Workbook
Set ClasseurSource = ActiveWorkbook
'Chemin du dossier où sont les classeurs excel
Dim CheminTypeDonnees As String
'soit en hard
CheminTypeDonnees = "C:\Users\regis\Desktop\test\*.*" 'chemin a modifier biensur
'soit en relatif
'chemin = classeursource.Sheets(1).range("A1").value
'dans ce cas il faut mettre le chemin comme marqué ci-dessus dans la case A1
'Attention à bien laisser l'extension dans le chemin ! Si tu as plusieurs type de fichiers il faut mettre *.xls ou *xlsm suivant ce que tu as.
'Définition du chemin à tester - PERMET DE "MONTRER" LE CHEMIN A LA MACRO
Dim RetVal As Boolean
Dim Chemin As String
Chemin = "C:\Users\regis\Desktop\test"
ChDir Chemin
RetVal = Application.Dialogs(xlDialogOpen).Show(CheminTypeDonnees) 'ouverture de la boite de dialogue
If RetVal = True Then Exit Sub
'Si le chemin montré est correct, pressez sur annuler ! Pour que la macro continue. Je n'ai malheureusement toujorus pas trouvé d'autre façon de faire pour "montrer" à la macro le chemin de base sans tout faire buger la première fois.
'Y a t'il des fichiers dans le répertoire ?
Dim objOFS As Variant
Set objOFS = CreateObject("Scripting.FileSystemObject")
'Test si au moins un fichier present
If Dir(CheminTypeDonnees) <> "" Then
'Activer le classeur source
ClasseurSource.Activate
'Gérer le répertoire de fichiers excel
fichier = Dir(CheminTypeDonnees)
Do While fichier <> ""
Set wbsource = Workbooks.Open(fichier) 'ouverture du premier classeur
Set wksNewSheet = wbsource.Sheets(2) 'selection du premier onglet
wksNewSheet.Copy after:=ClasseurSource.Sheets(1) ' mets a la place du 1 le dernier onglet de ton classeur principal
ClasseurSource.Activate
wbsource.Close 'fermerture du classeur excel dont l'onglet a été copié
fichier = Dir 'Prochain classeur
Loop 'bouclage
End If
End Sub
___
Amicalement,
Régis
Merci Régis.
Quelques précisions: que faut-il entrer dans
CheminTypeDonnees = "C:\Users\regis\Desktop\test\*.*"
Est-ce qu'il faut rentrer le dossier où sont tous les classeurs et si oui faut-il terminer par \*_*
Ou faut-il entrer le chemin jusqu'au fichier rassemblant tous les onglets?
Même question pour:
Chemin = "C:\Users\regis\Desktop\test"
Pour l'instant quand j'exécute la macro, j'ai une fenêtre d'ouverture du dossier entré dans le code qui apparait et qui me propose d'ouvrir un classeur excel. c'est normal? Dois-je ouvrir le fichier où tout sera rassemblé?
Quelques précisions: que faut-il entrer dans
CheminTypeDonnees = "C:\Users\regis\Desktop\test\*.*"
Est-ce qu'il faut rentrer le dossier où sont tous les classeurs et si oui faut-il terminer par \*_*
Ou faut-il entrer le chemin jusqu'au fichier rassemblant tous les onglets?
Même question pour:
Chemin = "C:\Users\regis\Desktop\test"
Pour l'instant quand j'exécute la macro, j'ai une fenêtre d'ouverture du dossier entré dans le code qui apparait et qui me propose d'ouvrir un classeur excel. c'est normal? Dois-je ouvrir le fichier où tout sera rassemblé?
C'est le dossier ou sont tous tes classeurs :-)
Ton classeur excel exectue une macro avec la fonction Activeworkbook, donc il peut etre placé nimporte ou tu iras de toute facon chercher tes classeurs excel dans le répertoire que tu as noté.
Donc pour cheminTypeDonnes tu dois rentrer le dossier ou sont tes classeurs excel pour lesquels tu veux copier leur onglet. Et oui tu dois laisser l'extension *.*
Mais tu peux la modifier par *.xls ou *.xlsm.
en fait * veut dire "tous les caractères" donc c'est le nom de ton fichier
et .xls ou .xlsm pour les extensions excel
et *.* veut dire : tous les fichiers avec nimporte quelle extension.
Si tu laisses *.*, cela te prendra en compte tes classeurs .xls et .xlsm mais aussi tous les autres fichiers présents dans ton dossier. alors fait attention a ne pas avoir de fichiers qui ne te servent pas pour la copie de tes onglet dans ton dossier ;-)
Le Chemin est en fait le chemin ou se trouve tes fichiers excel mais sans leur extension.
Oui c'est normal, pour la fenetre d'ouverture. C'est juste pour vérifier si tu as le bon chemin. Cliques sur annuler et la macro se lance.
En fait, lorsque tu lances la marcro, si l'implémentation de la fenetre ouvrir n'est pas là, elle ne va pas fonctionner car elle n'arrive pas à faire le répertoire DIR toute seule...Je sais c'est bête mais c'est la seule façon que j'ai trouvé pour qu'elle fonctionne du premier coup ^^
Donc cliques sur annulé et ca va fonctionner :-)
Ton classeur excel exectue une macro avec la fonction Activeworkbook, donc il peut etre placé nimporte ou tu iras de toute facon chercher tes classeurs excel dans le répertoire que tu as noté.
Donc pour cheminTypeDonnes tu dois rentrer le dossier ou sont tes classeurs excel pour lesquels tu veux copier leur onglet. Et oui tu dois laisser l'extension *.*
Mais tu peux la modifier par *.xls ou *.xlsm.
en fait * veut dire "tous les caractères" donc c'est le nom de ton fichier
et .xls ou .xlsm pour les extensions excel
et *.* veut dire : tous les fichiers avec nimporte quelle extension.
Si tu laisses *.*, cela te prendra en compte tes classeurs .xls et .xlsm mais aussi tous les autres fichiers présents dans ton dossier. alors fait attention a ne pas avoir de fichiers qui ne te servent pas pour la copie de tes onglet dans ton dossier ;-)
Le Chemin est en fait le chemin ou se trouve tes fichiers excel mais sans leur extension.
Oui c'est normal, pour la fenetre d'ouverture. C'est juste pour vérifier si tu as le bon chemin. Cliques sur annuler et la macro se lance.
En fait, lorsque tu lances la marcro, si l'implémentation de la fenetre ouvrir n'est pas là, elle ne va pas fonctionner car elle n'arrive pas à faire le répertoire DIR toute seule...Je sais c'est bête mais c'est la seule façon que j'ai trouvé pour qu'elle fonctionne du premier coup ^^
Donc cliques sur annulé et ca va fonctionner :-)