Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1047 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  fusion de pls fichiers xls

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

fusion de pls fichiers xls

n°2130573
marouma
Posté le 09-03-2012 à 11:44:36  profilanswer
 

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

mood
Publicité
Posté le 09-03-2012 à 11:44:36  profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  fusion de pls fichiers xls

 

Sujets relatifs
Lecture de gros fichiers CSV sur AndroidSouci de fichiers introuvables
cherche logiciel de consultation de fichiers multiformatsErreur lors de la lecture de gros fichiers sur réseau local
[C] problème de fichiersEnvoi de fichiers dans la zone privée d'un site, confidentialité ?
copier toutes les feuilles d'un ensemble de fichiers ExcelLes fichiers en C
Fichiers de Localisation (Appli. Multi-Langues)fusion de fichiers
Plus de sujets relatifs à : fusion de pls fichiers xls


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR