fusion de pls fichiers xls

fusion de pls fichiers xls - VB/VBA/VBS - Programmation

Marsh Posté le 09-03-2012 à 11:44:36    

Bonjour,
J'ai utilisé cette macro pour pouvoir pointer vers un dossier et récupérer certaines données d'un seul onglet("General" ).
Mais je n'arrive pas à la faire fonctionner!!
quand je lance l’exécution, rien ne se passe
Merci bcp pour votre aide

Code :
  1. Private Sub CommandButton1_Click()
  2. End Sub
  3. Sub btnImport_QuandClic()
  4. Dim Debut As Variant
  5. Dim NumeroLigne As Integer, i As Integer
  6. Dim NomFichier As String
  7. Dim DDate As String
  8. Dim DossierOk As String
  9.  
  10.     ' Par curiosité
  11.     Debut = Time()
  12.     Application.ScreenUpdating = False
  13.         Entete
  14.         DossierOk = Dossier
  15.         ' Pour éviter le drame du copier/coller ....
  16.         If Right(DossierOk, 1) <> "\" Then DossierOk = DossierOk & "\"
  17.  
  18.         ListeFichiersDans DossierOk
  19.          
  20.         ' Si un onglet de NomFichier ne s'appelle pas NomFeuille
  21.         ' une erreur #REF! est incrite dans les cellules concernées
  22.          
  23.         ' On démarre à cette ligne
  24.         NumeroLigne = 4
  25.         For i = 1 To NbFichiers
  26.             NomFichier = ShImport.Range("A" & NumeroLigne)
  27.  
  28.             With ShImport
  29.                 .Cells(NumeroLigne, 4) = ExtraireValeur(DossierOk, NomFichier, NomFeuille, "A7" )
  30.                 .Cells(NumeroLigne, 5) = ExtraireValeur(DossierOk, NomFichier, NomFeuille, "D7" )
  31.                 .Cells(NumeroLigne, 6) = ExtraireValeur(DossierOk, NomFichier, NomFeuille, "H7" )
  32.                 .Cells(NumeroLigne, 7) = ExtraireValeur(DossierOk, NomFichier, NomFeuille, "J7" )
  33.                 .Cells(NumeroLigne, 8) = ExtraireValeur(DossierOk, NomFichier, NomFeuille, "D7" )
  34.                 .Cells(NumeroLigne, 9) = ExtraireValeur(DossierOk, NomFichier, NomFeuille, "H7" )
  35.  
  36.    
  37.             End With
  38.              
  39.             NumeroLigne = NumeroLigne + 1
  40.             Application.StatusBar = i & " / " & NbFichiers
  41.         Next
  42.          
  43.         Application.StatusBar = "Terminé : " & Format((Time() - Debut) * 100000, "0.00" )
  44.      
  45.         ' Revenir en haut à gauche
  46.         With ActiveWindow
  47.             .ScrollRow = 1
  48.             .ScrollColumn = 1
  49.         End With
  50.          
  51.        With ShImport
  52.            .Rows("3:3" ).Font.Bold = True
  53.            .Columns("B:C" ).Select
  54.            With Selection
  55.                 .HorizontalAlignment = xlCenter
  56.                 .VerticalAlignment = xlBottom
  57.            End With
  58.            .Columns("A:I" ).Columns.AutoFit
  59.            .Range("A1" ).Select
  60.       End With
  61.     Application.ScreenUpdating = True
  62. End Sub
  63. End Sub
  64. End Sub
  65. Private Sub UserForm_Click()
  66. Option Explicit
  67. Dim NbFichiers As Integer
  68. '   Dossier des classeurs à traiter
  69. Const Dossier As String = "C:\Documents and Settings\mkhalmadani\Bureau\Dossier"
  70. '   On suppose que tous les fichiers contiennent les données dans Feuil1
  71. '       Si un onglet ne s'appelle pas NomFeuille
  72. '       une erreur #REF! est inscrite dans les cellules concernées
  73. Const NomFeuille As String = "General"
  74.  
  75. Private Sub Entete()
  76.     With ShImport
  77.         ' Tout effacer
  78.         .Cells.Clear
  79.         .Range("A3" ).Formula = "Fichier"
  80.         ' A tout hasard cela peut être interessant
  81.         ' d'avoir ces infos sur les fichiers
  82.         .Range("B3" ) = "Date de Création"
  83.         .Range("C3" ) = "Date Dernière Modification"
  84.  
  85.         'test avec quelques cellules
  86.        
  87.         .Range("D3" ) = "A10"
  88.         .Range("E3" ) = "D10"
  89.         .Range("F3" ) = "H10"
  90.         .Range("G3" ) = "J10"
  91.         .Range("H3" ) = "D54"
  92.         .Range("I3" ) = "H54"
  93.     End With
  94. End Sub
  95.  
  96. Private Sub ListeFichiersDans(Dossier As String)
  97. Dim FSO As Scripting.FileSystemObject
  98. Dim DossierSource As Scripting.Folder
  99. Dim Fichier As Scripting.file
  100. Dim r As Long
  101.  
  102.     Set FSO = New Scripting.FileSystemObject
  103.     Set DossierSource = FSO.GetFolder(Dossier)
  104.      
  105.     NbFichiers = 0
  106.     r = ShImport.Range("A65536" ).End(xlUp).Row + 1
  107.      
  108.     ' Balayer le dossier et extraire le nom des fichiers
  109.     For Each Fichier In DossierSource.Files
  110.         With ShImport
  111.             .Cells(r, 1) = Fichier.Name
  112.             .Cells(r, 2) = Fichier.DateCreated
  113.             .Cells(r, 3) = Fichier.DateLastModified
  114.         End With
  115.         NbFichiers = NbFichiers + 1
  116.         r = r + 1
  117.     Next Fichier
  118.      
  119.     Set Fichier = Nothing
  120.     Set DossierSource = Nothing
  121.     Set FSO = Nothing
  122. End Sub
  123.  
  124. '   Permet de lire une valeur dans un fichier Excel fermé
  125. Private Function ExtraireValeur(ByVal Dossier As String, ByVal Fichier As String, ByVal Feuille As String, ByVal Cellule As String)
  126. Dim Argument As String
  127.     Fichier = Replace(Fichier, "'", "''" )
  128.     Argument = "'" & Dossier & "[" & Fichier & "]" & Feuille & "'!" & Range(Cellule).Address(, , xlR1C1)
  129.     ExtraireValeur = ExecuteExcel4Macro(Argument)
  130. End Function
  131. Private Sub DispoBoutons()
  132. Dim t As Range
  133.     With ShImport
  134.         .Activate
  135.         .Rows(1).RowHeight = 12.75
  136.         .Rows(2).RowHeight = 12.75
  137.          
  138.         Set t = .Cells(1, 3)
  139.         With .Buttons("btnImport" )
  140.             .Left = t.Left + 3
  141.             .Top = t.Top + 5
  142.             .Width = t.Width - 6
  143.             .Height = Rows(1).RowHeight + Rows(2).RowHeight - 8
  144.         End With
  145.     End With
  146. End Sub
  147.  
  148. Private Sub Workbook_Open()
  149.     DispoBoutons
  150.     With ActiveWindow
  151.         .ScrollRow = 1
  152.         .ScrollColumn = 1
  153.     End With
  154.     ShImport.Range("A1" ).Select
  155. End Sub
  156. End Sub

Reply

Marsh Posté le 09-03-2012 à 11:44:36   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed