flosauveur69
XLDnaute Occasionnel
Bonjour à tous,
j'ai la macro ci-dessous et j'aimerais une piste d'amélioration:
(A quoi sert la macro: elle m'ouvre un à un chaque fichiers html -ou xls selon le strfile données- se trouvant dans le même répertoire du classeur où se trouve la macro. Une fois ce fichier ouvert, elle me copier une plage de cellule dans la feuil1 et me ferme le fichier et ainsi de suite)
Comme dit au dessus, pour aller me copier-coller la plage de cellule voulue, cette macro, m'ouvre puis me ferme chacun des classeur html xls. J'aimerais, si possible, que la macro me récupère et me colle cette plage de cellule sans ouvrir puis fermer les classeurs dans le but de gagner du temps.
merci d'avance de votre aide.
la macroce n'est pas moi qui l'ai faite car étant novice VBA, je l'ai juste un peu modifier)
Public Sub cmdRecupere_Click()
Dim strWB As String, strFile As String
Application.ScreenUpdating = False
Application.EnableEvents = False
' Nom du classeur actuel
strWB = ThisWorkbook.Name
' Récupération du premier fichier dans le répertoire et sous repertoire
strFile = Dir(ThisWorkbook.Path & "\*.html")
' Boucle du 1er au dernier classeur dans le répertoire et sous repertoire
Do While strFile <> ""
' Si le classeur n'est pas "Total.xls" et si son nom n'existe pas en colonne C
If strFile <> strWB And Worksheets("Feuil1").Columns("C").Find(strFile, LookIn:=xlValues, LookAt:=xlWhole) Is Nothing Then
' Ouvrir le fichier
Workbooks.Open ThisWorkbook.Path & "\" & strFile
' Copie des données
Workbooks(strFile).Worksheets(1).Range("A13:C28").Copy
With Workbooks(strWB).Worksheets("Feuil1")
.Range("A2").Insert xlDown 'insertion en ligne 2
.Range("C2:C17").ClearContents 'on ne garde que les données A2:B17
.Range("C2") = strFile
End With
' Fermeture du classeur
Workbooks(strFile).Close
End If
' Classeur suivant
strFile = Dir
Loop
Application.EnableEvents = True
Application.ScreenUpdating = True
MsgBox "Le traitement des fichiers est terminé.", vbInformation, "Traitement..."
End Sub
j'ai la macro ci-dessous et j'aimerais une piste d'amélioration:
(A quoi sert la macro: elle m'ouvre un à un chaque fichiers html -ou xls selon le strfile données- se trouvant dans le même répertoire du classeur où se trouve la macro. Une fois ce fichier ouvert, elle me copier une plage de cellule dans la feuil1 et me ferme le fichier et ainsi de suite)
Comme dit au dessus, pour aller me copier-coller la plage de cellule voulue, cette macro, m'ouvre puis me ferme chacun des classeur html xls. J'aimerais, si possible, que la macro me récupère et me colle cette plage de cellule sans ouvrir puis fermer les classeurs dans le but de gagner du temps.
merci d'avance de votre aide.
la macroce n'est pas moi qui l'ai faite car étant novice VBA, je l'ai juste un peu modifier)
Public Sub cmdRecupere_Click()
Dim strWB As String, strFile As String
Application.ScreenUpdating = False
Application.EnableEvents = False
' Nom du classeur actuel
strWB = ThisWorkbook.Name
' Récupération du premier fichier dans le répertoire et sous repertoire
strFile = Dir(ThisWorkbook.Path & "\*.html")
' Boucle du 1er au dernier classeur dans le répertoire et sous repertoire
Do While strFile <> ""
' Si le classeur n'est pas "Total.xls" et si son nom n'existe pas en colonne C
If strFile <> strWB And Worksheets("Feuil1").Columns("C").Find(strFile, LookIn:=xlValues, LookAt:=xlWhole) Is Nothing Then
' Ouvrir le fichier
Workbooks.Open ThisWorkbook.Path & "\" & strFile
' Copie des données
Workbooks(strFile).Worksheets(1).Range("A13:C28").Copy
With Workbooks(strWB).Worksheets("Feuil1")
.Range("A2").Insert xlDown 'insertion en ligne 2
.Range("C2:C17").ClearContents 'on ne garde que les données A2:B17
.Range("C2") = strFile
End With
' Fermeture du classeur
Workbooks(strFile).Close
End If
' Classeur suivant
strFile = Dir
Loop
Application.EnableEvents = True
Application.ScreenUpdating = True
MsgBox "Le traitement des fichiers est terminé.", vbInformation, "Traitement..."
End Sub