Bonjour à tous,
je me présente, Christophe, 34 ans et tout nouveau dans le domaine VBA.
Je viens d'intégrer une nouvelle société et pour me simplifier la vie dans tous les tris de documents et récupérer les informations qui me sont nécessaires j'ai besoin de faire des requêtes en VBA.
Aujourd'hui je voudrai récupérer des informations stockées dans plusieurs classeurs Excel.
Pour ce faire, j'ai commencé mes recherches sur le net et j'ai déjà un bon début de macro en boucle qui me fais la liste de tous mes fichiers, me donne l'adresse, le nom du fichier et le lien complet, ouvre et ferme les fichiers listés.
J'attends que cette macro fonctionne parfaitement avant d'y ajouter les copier-coller qui m'intéressent. Ca sera l'étape suivante!
Par contre, tout cela compilé me donne du fil a retordre et j'ai besoin de votre aide sur certains points!!
Je fais appel aux experts!!!!
Voici ma macro issu de plusieurs macro trouvées sur différents forums et adapté a mon besoin.
Option Explicit
Sub test()
Dim Dossier As String
Dossier = ActiveWorkbook.Path
ListFilesInFolder Dossier, True
End Sub
Sub ListFilesInFolder(strFolderName As String, bIncludeSubfolders As Boolean)
Static FSO As FileSystemObject
Dim oSourceFolder As Scripting.Folder
Dim oSubFolder As Scripting.Folder
Dim oFile As Scripting.File
Static wksDest As Worksheet
Static iRow As Long
Static bNotFirstTime As Boolean
If Not bNotFirstTime Then
Set wksDest = ActiveSheet
Set FSO = CreateObject("Scripting.FileSystemObject")
wksDest.Cells(2, 1) = "Dossiers"
wksDest.Cells(2, 2) = "Noms des Fichiers"
wksDest.Cells(2, 3) = "Lien des fichiers"
iRow = 3
bNotFirstTime = True
End If
Set oSourceFolder = FSO.GetFolder(strFolderName)
For Each oFile In oSourceFolder.Files
wksDest.Cells(iRow, 1) = oFile.ParentFolder.Path
wksDest.Cells(iRow, 2) = oFile.Name
wksDest.Cells(iRow, 3) = oFile.Path
Shell "explorer.exe " & wksDest.Cells(iRow, 3).Text
Application.EnableEvents = False
ActiveWorkbook.Close
Application.EnableEvents = False
iRow = iRow + 1
Next oFile
If bIncludeSubfolders Then
For Each oSubFolder In oSourceFolder.SubFolders
ListFilesInFolder oSubFolder.Path, True
Next oSubFolder
End If
End Sub
Pour l'exécution de cette macro mon fichier la contenant (nommé import) doit être placé dans le dossier.
Alors avec cette macro, mes soucis sont:
1) Mon fichier import apparait également dans la liste, donc il s'ouvre puis se ferme puis ma macro s'arrete!! c'est balo!! Comment faire pour que ce fichier n'apparaisse pas dans ma liste.
L'idéal pour moi serai d'avoir l'ouverture d'une boite de dialogue avec sélection de l'emplacement ou aller chercher les infos. Dans ce cas, je n'aurais plus besoin de mettre le fichier la ou il doit piocher les infos.
2) Je souhaite juste ouvrir les fichiers, puiser les infos qui vont bien et refermer. Pour la copie et colle j'ai la macro a adapter dans ma boucle mais mon problème est que j'ai des messages du type "activer macro" ou "voulez vous enregistre avant de fermer les fichier". Je souhaite inhiber ces message et de ce fait ne pas avoir a cliquer a chaque ouverture et fermeture de fichier.
Voila pour mes premières questions....
J'espère avoir été assez clair dans mes explications.
Je vous remercie par avance de votre aide
Crdlt
Christophe