Regrouper plusieurs classeurs dans un seul

Le
CARL
Bonjour

J'aimerais regrouper tous les classeurs (*.xls) présents dans le répertoire
DEMO dans autant de feuiles ou onglets portant le même nom que le fichier
Excel d'origine dans un nouveau classeur appelé "regroupement.xls"

Y a-t-il un généreux et compétent bénévoles de ce forum qui peut m'aider ?

--
CARL
Merci
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 3
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
FdeCourt
Le #21063731
Salut,

Essayes avec ce code :

Sub lister_fichier_rep()

Static FSO As FileSystemObject
Dim sfFolder As Scripting.Folder
Dim sfFile As Scripting.File
Dim FilesList()
Dim i As Integer
Application.EnableEvents = False
repFichier = ActiveWorkbook.Path
Randomize
Set FSO = CreateObject("Scripting.FileSystemObject")

Set sfFolder = FSO.GetFolder(repFichier)

For Each sfFile In sfFolder.Files
If sfFile.Name <> ThisWorkbook.Name Then
x = 0
Workbooks.Open Filename:=sfFile
For Each Sh In Workbooks(sfFile.Name).Sheets
x = x + 1
Sh.Copy After:=ThisWorkbook.Sheets
(ThisWorkbook.Sheets.Count)
ActiveSheet.Name = sfFile.Name & "_" & x & _
IIf(feuilleExiste(sfFile.Name & "_" & x) = False, "", Int(Rnd() *
99999 + 1000))
Next
Workbooks(sfFile.Name).Close saveChanges:úlse
End If
Next sfFile
Application.EnableEvents = True
On Error GoTo 0
Exit Sub
err_handler:
MsgBox Err.Description
End Sub
Function feuilleExiste(x As String)
On Error Resume Next
Sheets(x).Select
g = Err.Number
If Err.Number = 0 Then
feuilleExiste = True
Else
feuilleExiste = False
End If
End Function


Cordialement,

F.
CARL
Le #21064441
Merci de votre réponse

Dès l'éxécution du code pour la seconde ligne (Static FSO As
FileSystemObject ), j'ai un message d'erreur de compilation -type défini par
lutilsateur non défini

Également les lignes suivantes sont en ROUGE
ThisWorkbook.Sheets.Count)
ActiveSheet.Name = sfFile.Name & "_" & x & _
IIf(feuilleExiste(sfFile.Name & "_" & x) = False, "", Int(Rnd() *
99999 + 1000))


Merci de votre effort
--
CARL
Merci


"FdeCourt" a écrit :

Salut,

Essayes avec ce code :

Sub lister_fichier_rep()

Static FSO As FileSystemObject
Dim sfFolder As Scripting.Folder
Dim sfFile As Scripting.File
Dim FilesList()
Dim i As Integer
Application.EnableEvents = False
repFichier = ActiveWorkbook.Path
Randomize
Set FSO = CreateObject("Scripting.FileSystemObject")

Set sfFolder = FSO.GetFolder(repFichier)

For Each sfFile In sfFolder.Files
If sfFile.Name <> ThisWorkbook.Name Then
x = 0
Workbooks.Open Filename:=sfFile
For Each Sh In Workbooks(sfFile.Name).Sheets
x = x + 1
Sh.Copy After:=ThisWorkbook.Sheets
(ThisWorkbook.Sheets.Count)
ActiveSheet.Name = sfFile.Name & "_" & x & _
IIf(feuilleExiste(sfFile.Name & "_" & x) = False, "", Int(Rnd() *
99999 + 1000))
Next
Workbooks(sfFile.Name).Close saveChanges:úlse
End If
Next sfFile
Application.EnableEvents = True
On Error GoTo 0
Exit Sub
err_handler:
MsgBox Err.Description
End Sub
Function feuilleExiste(x As String)
On Error Resume Next
Sheets(x).Select
g = Err.Number
If Err.Number = 0 Then
feuilleExiste = True
Else
feuilleExiste = False
End If
End Function


Cordialement,

F.
.



FdeCourt
Le #21065181
Oups, désolé, sous VBE, dans Outils > References, il faut que tu
coches Microsof Scripting Runtime puis OK

Ensuite, il faut faire attention, certains lecteurs de News tronquent
les lignes
Le code suivant est en réalité sur deux ligne, et non 5.

Sh.Copy After:=ThisWorkbook.Sheets
(ThisWorkbook.Sheets.Count)
ActiveSheet.Name = sfFile.Name & "_" & x & _
IIf(feuilleExiste(sfFile.Name & "_" & x) = False, "", Int(Rnd() *
99999 + 1000))

La premiere ligne va de Sh.Copy..... à Sheets.Count)
La deuxième ligne de ActiveSheet..... à 1000))

Cordialement,

F.
Tatanka
Le #21065881
Ave F.

« Ensuite, il faut faire attention, certains lecteurs de News tronquent
les lignes ».

Oui et ça m'énerve !
J'utilise OE 6 et news.microsoft.com.
Peut-on augmenter le nombre de caractères par ligne ?

Serge
michdenis
Le #21066011
Bonjour Tatanka,

Bien sûr !

Outils / options / onglet Envoi /
Section : Format d'envoi des messages de groupes de discussion

Tu choisis le bouton radio et le bouton de commande apparenté au
bouton radio et tu détermines les caractéristiques de la fenêtre
ouvrante dont le retour à la ligne automatique après ....caractères



"Tatanka" OV$
Ave F.

« Ensuite, il faut faire attention, certains lecteurs de News tronquent
les lignes ».

Oui et ça m'énerve !
J'utilise OE 6 et news.microsoft.com.
Peut-on augmenter le nombre de caractères par ligne ?

Serge
FdeCourt
Le #21066181
Michdenis,

Et en utilisant Google Groups ?
Ou alors, y a t'il un moyen sous VBE de tronquer automatiquement les
lignes en ajoutant _ à chaque fin de ligne ?

Merci

F.
Mgr T. Banni
Le #21066331
hum....est-ce valable pour le message reçu?
n'est-il pas dit qu'il s'agit d'un format d'envoi?
mais bon, ce que j'en dis moi....
Mgr T.B.

"michdenis" ObJKV$
Bonjour Tatanka,

Bien sûr !

Outils / options / onglet Envoi /
Section : Format d'envoi des messages de groupes de discussion

Tu choisis le bouton radio et le bouton de commande apparenté au
bouton radio et tu détermines les caractéristiques de la fenêtre
ouvrante dont le retour à la ligne automatique après ....caractères



"Tatanka" de discussion :
OV$
Ave F.

« Ensuite, il faut faire attention, certains lecteurs de News tronquent
les lignes ».

Oui et ça m'énerve !
J'utilise OE 6 et news.microsoft.com.
Peut-on augmenter le nombre de caractères par ligne ?

Serge



michdenis
Le #21068051
Le meilleur moyen de savoir est de faire une tentative. Ma configuration me permet 90
caractères sans qu'il y ait une coupure automatique par le service de messagerie. Je n'ai
fait aucun retour à la ligne forcée en tapant ce message. Comment as-tu reçu ce message ?
Tes lignes ne devraient pas avoir plus de 90 caractères. Tu peux calculer leur nombre qui
s'affichent sur la même ligne en utilisant formule Nbcar() d'Excel après avoir effectué un
copier-coller.

Le problème lié à la limitation de l'affichage se fait lors de l'envoi comme tu le
mentionnes, mais comme peu de personnes configurent leur logiciel, c'est la valeur par
défaut qui s'applique. Le logiciel permet d'avoir jusqu'à 132 caractères par ligne. Si
chacun utilisait cette norme, les lignes de code coupées dans les messages seraient pour
ainsi dire chose du passé. Espérons que ce message sera lu par plusieurs et que ceux-ci
modifieront leur configuration.





"Mgr T. Banni" #
hum....est-ce valable pour le message reçu?
n'est-il pas dit qu'il s'agit d'un format d'envoi?
mais bon, ce que j'en dis moi....
Mgr T.B.

"michdenis" ObJKV$
Bonjour Tatanka,

Bien sûr !

Outils / options / onglet Envoi /
Section : Format d'envoi des messages de groupes de discussion

Tu choisis le bouton radio et le bouton de commande apparenté au
bouton radio et tu détermines les caractéristiques de la fenêtre
ouvrante dont le retour à la ligne automatique après ....caractères



"Tatanka" de discussion :
OV$
Ave F.

« Ensuite, il faut faire attention, certains lecteurs de News tronquent
les lignes ».

Oui et ça m'énerve !
J'utilise OE 6 et news.microsoft.com.
Peut-on augmenter le nombre de caractères par ligne ?

Serge



michdenis
Le #21068041
| y a t'il un moyen sous VBE de tronquer automatiquement

Dans la fenêtre de l'éditeur de code, nous pouvons y aller
de 1024 caractères par ligne de code. Même si l'on peut, je
ne connais pas grand monde qui l'utilise !

Je ne connais pas de truc qui permet de faire ça automatiquement.

Merci

F.
Mgr T. Banni
Le #21068071
je réponds en tapant le même texte mais en mettant une valeur de 100
caractères par ligne :
le meilleur moyen est de faire une tentative. Ma configuration me permet 90
caractères sans qu'il y ait coupure automatique par le service de
messagerie. Je n'ai fait aucun retour à la ligne forcée en tapant ce
message. Comment as-tu reçu ce message?

voili voilou, denis...à toi de nous dire ce qu'il en est chez toi mais
regarde ton message ci-dessous et tu verras que la coupure des lignes est
pour le moins étrange.....est-ce parce que j'étais réglé sur 72 ou 76 (je ne
me souviens plus) caractères au moment de la réception?
T.B.

Le meilleur moyen de savoir est de faire une tentative. Ma configuration me
permet 90
caractères sans qu'il y ait une coupure automatique par le service de
messagerie. Je n'ai
fait aucun retour à la ligne forcée en tapant ce message. Comment as-tu reçu
ce message ?
Tes lignes ne devraient pas avoir plus de 90 caractères. Tu peux calculer
leur nombre qui
s'affichent sur la même ligne en utilisant formule Nbcar() d'Excel après
avoir effectué un
copier-coller.
Publicité
Poster une réponse
Anonyme