Vérifier si un des fichiers du répertoire ouvert

Fermé
Perduuu - Modifié le 23 oct. 2018 à 13:52
 NeedHelp - 23 oct. 2018 à 13:54
Bonjour,

J'ai réussi avec l'aide de Google à faire fonctionner une macro qui récupérer des données sur plusieurs fichiers.
Mon soucis est que j'aurais besoin de tester si un des fichiers du répertoire "CA" est ouvert avant de l'exécuter.
J'ai bien trouvé des sujets pour vérifier si un classeur spécifique est ouvert, mais pas tous ceux d'un répertoire et à mon niveau c'est compliqué de l'adapter.

Mon code:

Sub controle()
Dim BDD As FileDialog 'déclare la variable BDD (Boîte de Dialogue Dossier)
Dim CA As String 'déclare la variable CA (Chemin d'Accès)
Dim CD As Workbook 'déclare la variable CD (Classeur Destination)
Dim OD As Worksheet 'déclare la variable OD (Onglet Destination)
Dim FS As String 'décalre la variable FS (Fichier Source)
Dim CS As Workbook 'déclare la variable CS (Classeur Source)
Dim OS As Worksheet 'déclare la variable OS (Onglet Source)
Dim DEST As Range 'déclare la variable DEST (celllue de DESTination)


'le chemin d'accès
CA = "S:\DIEPA\Equipes\IEPA\01_Commun\00. ADMIN - SECRETARIAT\PROJETS\Projet mouvement IEPA\2.0\"

Set CD = ThisWorkbook 'définit la classeur destination CD
Set OD = CD.Sheets(1) 'définit l'onglet destination OD (à adapter à ton cas, ici j'ai mis le premier onglet)
FS = Dir(CA & "*.xlsm") 'définit le premier fichier source Excel contenu dans le dossier ayant CA comme chemin d'accès
Do While FS <> "" ' exécute tant qu'il existe des fichiers source
    Workbooks.Open CA & FS 'ouvre le fichier source FS
    Set CS = ActiveWorkbook 'définit la classeur source CS
    Set OS = CS.Worksheets(8) 'définit l'onglet source OS (à adapter à ton cas, ici j'ai j'ai mis le premier onglet)
     
    'définit la cellule de destination DEST (première cellule vide de la colonne A)
    Set DEST = OD.Cells(Application.Rows.Count, "A").End(xlUp).Offset(1, 0)
    L = OS.Range("A" & Rows.Count).End(xlUp).Row + 1 'La variable qui trouve la dernière ligne
    OS.Range("B1:C1").Copy DEST 'copie la plage de l'onglet source et la colle dans DEST
    
       
    CS.Close False 'ferme le claseru source CS (sans enregistrer)
    FS = Dir 'définit le prochain fichier source excel du dossier ayant CA comme chemin d'accès
Loop 'boucle
End Sub


D'avance merci pour votre aide, votre savoir!

1 réponse

cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
Modifié le 23 oct. 2018 à 11:53
Bonjour,

voir ceci:

pour parcourir un répertoire:

https://silkyroad.developpez.com/vba/boucles/#LVI

et cela pour les classeurs ouverts

https://excel-malin.com/codes-sources-vba/vba-verifier-si-un-classeur-est-ouvert/

avec une combinaison des 2


0
Merci pour ton aide sur ce sujet, je suis en train de regarder, d'essayer.

Par contre pas du tout merci d'avoir signalé comme doublon quelque chose qui ne l'était pas! Ma demande n'était absolument pas la même. Prend le temps de lire avant de signaler la prochaine fois.

En te remerciant néanmoins encore une fois pour l'aide sur ce sujet.
0