Boucle Fusion fichiers feuille = nom fichier sans extension Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
Répondre
H
HUGOBASS
Membre fidèle
Membre fidèle
Messages : 200
Appréciation reçue : 1
Inscrit le : 18 septembre 2014
Version d'Excel : Mac 2016 FR

Message par HUGOBASS » 14 septembre 2015, 17:50

Bonjour à toutes et tous,

J'ai réussi non sans mal (je débute en VBA) à adapter le code (je remercie d'ailleurs son auteur initial) ci après pour fusionner plusieurs fichiers en un seul (les feuilles de chacun des fichiers sources sont copier dans autant de feuilles dans le fichier compilé final).

Je n'arrive pas pas contre à faire en sorte que le nom des feuilles soient celui du fichier source sans l'extension.
J'ai essayé avec Name et Replace sans trouver la bonne syntaxe à écrire dans mon code et la boucle malgré mes recherches.

J'arrive à éventuellement écrire un nom de feuille définie suivie d'un numéro de compteur au cas ou il y'aurait plusieurs feuille sur le fichier source en reprenant ceci dans le code : Maitre.Sheets(Maitre.Sheets.Count).Name = " import " & compteur

Mais ma finalité serait de reprendre le non du fichier source sans l'extension (".xlsb" dans mon cas pratique).

Auriez vous une solution à me proposer ?

Merci
Cordialement
Hugues
Sub Fusion()
  
ChDir ActiveWorkbook.Path
  Set Maitre = ActiveWorkbook
  
  compteur = 1
  nf = Dir("*.xlsb")
  Do While nf <> ""
    If nf <> Maitre.Name Then
      Workbooks.Open Filename:=nf
      For k = 1 To Sheets.Count
        Sheets(k).Copy after:=Maitre.Sheets(Maitre.Sheets.Count)
        'Maitre.Sheets(Maitre.Sheets.Count).Name = "Feuille" & compteur c'est cette partie du code que je voudrais adapter à ma situation
        compteur = compteur + 1
      Next k
      Workbooks(nf).Close False
    End If
    nf = Dir
  Loop
End Sub
Avatar du membre
Banzai64
Fanatique d'Excel
Fanatique d'Excel
Messages : 16'690
Appréciations reçues : 5
Inscrit le : 21 novembre 2010
Version d'Excel : 2003 FR (learning 2010 - 2013)

Message par Banzai64 » 14 septembre 2015, 18:33

Bonjour

A tester
Option Explicit

Sub Fusion()
Dim Maitre As Workbook
Dim Compteur As Integer
Dim Nf As String
Dim K As Integer

  Application.ScreenUpdating = False
  ChDir ActiveWorkbook.Path
  Set Maitre = ActiveWorkbook
 
  Nf = Dir("*.xlsb")
  Do While Nf <> ""
    If Nf <> Maitre.Name Then
      With Workbooks.Open(Filename:=Nf)
        For K = 1 To .Sheets.Count
          .Sheets(K).Copy after:=Maitre.Sheets(Maitre.Sheets.Count)
          ActiveSheet.Name = Replace(Nf, ".xlsb", "") & " " & K
        Next K
        .Close False
    End With
    End If
    Nf = Dir
  Loop
End Sub
Avatar du membre
fred2406
Membre impliqué
Membre impliqué
Messages : 2'230
Appréciations reçues : 48
Inscrit le : 13 mai 2014
Version d'Excel : O365Pro-2019-2011MAC
Version de Calc : 6.3

Message par fred2406 » 14 septembre 2015, 18:53

Bonjour Hugobass et banzai...
J'allais justement posé la question de que faire si il y a plusieurs feuilles dans le fichier source comment les nommées...
fred
Je ne réponds pas aux M.P. non sollicités.
Ne pas oublier :
:btres:
Fred :O-O:
H
HUGOBASS
Membre fidèle
Membre fidèle
Messages : 200
Appréciation reçue : 1
Inscrit le : 18 septembre 2014
Version d'Excel : Mac 2016 FR

Message par HUGOBASS » 14 septembre 2015, 21:19

Bonjour Fred406, Bonjour Banzai,

Merci à vous 2 d'avoir pris le temps de lire mon message
Banzai, merci pour ton code qui répond tout à fait à mes attentes, je coche donc ce post comme résolu.

Bonne soirée

Cordialement
Hugues
Répondre
  • Sujets similaires
    Réponses
    Vues
    Dernier message