Ouvrir des fichiers .xls avec une macro excel
Résolu
Thubs
-
amanin -
amanin -
Bonjour,
j'ai un petit problème avec Excel. Je crée une macro qui doit aller vérifier des données dans plusieurs fichiers excel d'un même dossier.
Le nombre de ces fichiers et leur nom est variable, donc il faudrait que la macro fasse une recherche de "*.xls" dans le dossier et puisse les ouvrir tous.
Est ce que c'est faisable ?
Merci
Phil
j'ai un petit problème avec Excel. Je crée une macro qui doit aller vérifier des données dans plusieurs fichiers excel d'un même dossier.
Le nombre de ces fichiers et leur nom est variable, donc il faudrait que la macro fasse une recherche de "*.xls" dans le dossier et puisse les ouvrir tous.
Est ce que c'est faisable ?
Merci
Phil
A voir également:
- Ouvrir des fichiers .xls avec une macro excel
- Comment ouvrir un fichier epub ? - Guide
- Ouvrir fichier .bin - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Ouvrir fichier .dat - Guide
- Comment ouvrir un fichier docx ? - Guide
4 réponses
Bonsoir,
voici une vieille contribution réaménagée :
A+
voici une vieille contribution réaménagée :
Option Explicit
Public dossier
Public Type BROWSEINFO
hOwner As Long
pidlRoot As Long
pszDisplayName As String
lpszTitle As String
ulFlags As Long
lpfn As Long
lParam As Long
iImage As Long
End Type
'32-bit API declarations
Declare Function SHGetPathFromIDList Lib "shell32.dll" _
Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As Long
Declare Function SHBrowseForFolder Lib "shell32.dll" _
Alias "SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) As Long
Function GetDirectory(Optional Msg) As String
Dim bInfo As BROWSEINFO
Dim path As String
Dim r As Long, x As Long, pos As Integer
bInfo.pidlRoot = 0&
If IsMissing(Msg) Then
bInfo.lpszTitle = ""
Else
bInfo.lpszTitle = Msg
End If
bInfo.ulFlags = &H1
x = SHBrowseForFolder(bInfo)
path = Space$(512)
r = SHGetPathFromIDList(ByVal x, ByVal path)
If r Then
pos = InStr(path, Chr$(0))
GetDirectory = Left(path, pos - 1)
Else
GetDirectory = ""
End If
End Function
Sub Traiter_Dossier()
'Objectif : traiter les fichiers d'un répertoire
'
Dim fs, i, nomfich, FileNumber, specfichier, nbfichiers
Dim fso As New FileSystemObject
dossier = GetDirectory("choisissez le dossier à traiter")
If dossier <> "" Then
Set fs = Application.FileSearch
With fs
.LookIn = dossier
.SearchSubFolders = True
.FileType = msoFileTypeAllFiles
If .Execute() > 0 Then
nbfichiers = .FoundFiles.Count
MsgBox "Ce dossier contient " & nbfichiers & " fichier(s) répondant aux critères."
For i = 1 To nbfichiers
specfichier = .FoundFiles(i)
'*********************
'Mettre ici le traitement à réaliser
'*********************
Next i
Else
MsgBox "Aucun fichier n'a été trouvé."
End If
End With
End If
End Subne pas oublier de référencer "Microsoft scripting runtime" (menu outils/références... dans VBA)
A+
Bonjour,
tu ouvres ton fichier avec
cordialement
tu ouvres ton fichier avec
Workbooks.OpenText Filename:=specfichier, Origin:= _
xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False, _
Comma:=False, Space:=True, Other:=False, FieldInfo:=Array(1, 1), _
TrailingMinusNumbers:=True tu vérifieras les options en faisant un enregistrement manuel de macro.
cordialement
Par contre, j'ai un autre souci: le dossier que j'explore contient des fichiers .txt que je dois ouvrir avec Excel et mettre en forme en reconnaissant les espaces comme séparateurs de colonnes. Grâce à ton code, j'arrive à obtenir le nom du fichier mais je n'arrive pas à l'ouvrir et un message me disant que le fichier est introuvable apparaît. Je ne sais absolument pas d'où cela peut venir. Quelqu'un aurait-il une idée???