Bonjour,
J'arrive actuellement au bout du périple consistant à consolider des fichiers, et il me reste un dernier problème.
J'utilise le code suivant :
Le principe est d'ouvrir les fichiers, de reporter les cellules mentionner puis de les refermer.
Le problème est que dans la plupart des fichiers ils s'ouvrent soit en lecture seule (donc un message "Vous lire ce fichier en lecture seule ?" apparait), soit un message apparait pour savoir si on souhaite l'enregistrer quand un fichier se ferme.
Résultat je passe mon temps à cliquer sur Oui et Non. Y aurait il un moyen d'intégrer une ligne ou deux dans le code, permettant ainsi aux fichiers de s'ouvrir et se fermer sans qu'on ait à cliquer à chaque fois ?
Cordialement,
Etn
J'arrive actuellement au bout du périple consistant à consolider des fichiers, et il me reste un dernier problème.
J'utilise le code suivant :
Code:
Private Function ChoisirDossier() As String
Dim objShell
Dim objFolder
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.BrowseForFolder _
(&H0&, "Sélectionnez un Dossier", &H1&)
On Error GoTo Erreur
ChoisirDossier = objFolder.ParentFolder _
.ParseName(objFolder.Title).Path & ""
Exit Function
Erreur:
ChoisirDossier = ""
End Function
Sub NOM()
Dim FSO 'As Scripting.FileSystemObject
Dim SourceFolder 'As Scripting.Folder
Dim FileItem 'As Scripting.File
Dim chemin$
Dim T()
Dim cpt&
Dim g&
Dim i&
Dim j&
Dim Lig&
Dim var
Dim WB As Workbook
Dim S As Worksheet
Dim DEST As Worksheet
Dim Info(1 To 1, 1 To 26)
'------------
chemin$ = "C:\Downloads"
If chemin$ = "" Then Exit Sub
Set FSO = CreateObject("Scripting.FileSystemObject")
Set SourceFolder = FSO.GetFolder(chemin$)
If SourceFolder.Files.Count = 0 Then Exit Sub
For Each FileItem In SourceFolder.Files
If LCase(Right(FileItem.Name, 4)) = ".xls" Or LCase(Right(FileItem.Name, 5)) = ".xlsx" Or LCase(Right(FileItem.Name, 5)) = ".xlsm" Then
cpt& = cpt& + 1
ReDim Preserve T(1 To cpt&)
T(cpt&) = chemin$ & "\" & FileItem.Name
End If
Next FileItem
Set FileItem = Nothing
Set SourceFolder = Nothing
Set FSO = Nothing
'------------
Application.ScreenUpdating = False
Set DEST = Sheets.Add
Lig& = 1
For g& = 1 To UBound(T)
Set WB = GetObject(T(g&))
Set S = WB.Sheets("NOM")
Info(1, 1) = S.Range("c1")
Info(1, 2) = S.Range("d35")
Info(1, 3) = S.Range("d36")
Info(1, 4) = S.Range("e35")
Info(1, 5) = S.Range("e36")
WB.Close
Set WB = Nothing
Lig& = Lig& + 1
DEST.Range(DEST.Cells(Lig&, 1), _
DEST.Cells(Lig&, UBound(Info, 2))) = Info
Erase Info
Next g&
var = Array("NOM")
With DEST
.Range(.Cells(1, 1), .Cells(1, UBound(var) + 1)) = var
.Range("a1:e1").Interior.ColorIndex = 6
End With
Application.ScreenUpdating = False
Exit Sub
Erreur:
Application.ScreenUpdating = False
MsgBox "Erreur " & Err.Number & vbCrLf & Err.Description
End Sub
Le principe est d'ouvrir les fichiers, de reporter les cellules mentionner puis de les refermer.
Le problème est que dans la plupart des fichiers ils s'ouvrent soit en lecture seule (donc un message "Vous lire ce fichier en lecture seule ?" apparait), soit un message apparait pour savoir si on souhaite l'enregistrer quand un fichier se ferme.
Résultat je passe mon temps à cliquer sur Oui et Non. Y aurait il un moyen d'intégrer une ligne ou deux dans le code, permettant ainsi aux fichiers de s'ouvrir et se fermer sans qu'on ait à cliquer à chaque fois ?
Cordialement,
Etn
Dernière modification par un modérateur: