Recherche d'un fichier XL, nom/path connus

Résolu/Fermé
cycytoulouse Messages postés 15 Date d'inscription vendredi 31 août 2007 Statut Membre Dernière intervention 9 octobre 2018 - 13 sept. 2018 à 09:02
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 - 3 oct. 2018 à 19:50
Bonjour,

Je souhaite que ma macro parcourt les fichiers XL d'un dossier spécifique, l'ouvre si elle le trouve, le crée si ce n'est pas le cas.

Pour résumer, j'ai une liste dans ma macro, pour chaque enregistrement de cette liste, un fichier XL correspondant doit etre crée s'il n'est pas existant, ouvert s'il l'est.

C'est sans doute une question de débutant alors je m'en excuse par avance.

Cyril



A voir également:

2 réponses

yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
Modifié le 13 sept. 2018 à 09:20
bonjour, ton second paragraphe est en contradiction avec le premier. peux-tu partager le code de ta macro, pour éviter tout malentendu?
tiens aussi compte de la réponse que tu as reçue: https://forums.commentcamarche.net/forum/affich-35580544-creation-d-un-fichier-excel-protege-mot-d-passe
0
cycytoulouse Messages postés 15 Date d'inscription vendredi 31 août 2007 Statut Membre Dernière intervention 9 octobre 2018
Modifié le 13 sept. 2018 à 16:41
Bonjour,

Merci pour la réponse et désolé si je ne suis pas clair.
le tableau dans ma macro est MonTabListeRM(a, b); il faut que la macro check que : pour chaque ligne de ce tableau, un fichier correpondant dans un dossier spécifique existe ou pas.

Si un fichier existe alors la macro n'aura juste qu'à le modifier, et s'il n'existe pas il faudra le créer avec le nom
MonTabListeRM(a, 1) & ".xlsx".

Je ne suis pas sur que mon code soit trés fiable...ni trés propre.
    a = 1
    b = 1
    x = 0

For a = 1 To NombLigneTabRM

        Rep = "K:\GVA\P1\P1O\P1O_All\Marketing\"
        Fichier = Dir(Rep)
        
        Do While Fichier <> ""
        
                If Fichier = MonTabListeRM(a, b) & ".xlsx" Then
                      ' ouvre le fichier et modifie le
                      Workbooks.Open Filename:="K:\GVA\P1\P1O\P1O_All\Marketing\" & MonTabListeRM(a, b) & ".xlsx", Password:=MonTabListeRM(a, 4)
                      Set Feuille2 = Sheets.Add(After:=ActiveSheet)
                      Feuille2.Name = MonTabEvenement(1, 2) & " " & MonTabEvenement(2, 2)
                      ActiveWorkbook.Save
                      ActiveWorkbook.Close
                      x = 1
                End If
        
            Fichier = Dir
        Loop
        
        If x = 0 Then
            'crée le fichier et 
            Workbooks.Add
           Set Feuille2 = Sheets.Add(After:=ActiveSheet)
           Feuille2.Name = MonTabEvenement(1, 2) & " " & MonTabEvenement(2, 2)
           ChDir "K:\GVA\P1\P1O\P1O_All\Marketing"
           ActiveWorkbook.SaveAs Filename:="K:\GVA\P1\P1O\P1O_All\Marketing\" & MonTabListeRM(a, b) & ".xlsx", Password:=MonTabListeRM(a, 4), FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
           ActiveWorkbook.Close
        End If
        
        x = 0
Next a


EDIT : Ajout des balises de code



0
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
13 sept. 2018 à 15:09
comme tu n'es dis rien, je suppose que le code fait ce que tu veux.
suggestions d'améliorations:
- ajouter "option explicit" en début de module, et déclarer tes variables
- utiliser des noms représentatifs pour tes variables

ta logique me semble très bizarre. pourquoi parcourir la liste des fichiers présents dans le dossier pour vérifier si un fichier déterminé est présent? moi je vérifierais directement si le fichier est présent, sans faire de boucle.

une ébauche:
Dim rep As String
Dim A As Long
Dim b As Long
Dim NombLigneTabRM As Long
Dim MonTabListeRM, MonTabEvenement
Dim Feuille2 As Worksheet
b = 1
rep = "K:\GVA\P1\P1O\P1O_All\Marketing\"

For A = 1 To NombLigneTabRM

    If Dir(rep & MonTabListeRM(A, b) & ".xlsx") <> "" Then
    
        ' ouvre le fichier et modifie le
        Workbooks.Open Filename:="K:\GVA\P1\P1O\P1O_All\Marketing\" & MonTabListeRM(A, b) & ".xlsx", Password:=MonTabListeRM(A, 4)
        Set Feuille2 = Sheets.Add(After:=ActiveSheet)
        Feuille2.Name = MonTabEvenement(1, 2) & " " & MonTabEvenement(2, 2)
        ActiveWorkbook.Save
        ActiveWorkbook.Close
    Else
        'crée le fichier et
        Workbooks.Add
        Set Feuille2 = Sheets.Add(After:=ActiveSheet)
        Feuille2.Name = MonTabEvenement(1, 2) & " " & MonTabEvenement(2, 2)
        ChDir "K:\GVA\P1\P1O\P1O_All\Marketing"
        ActiveWorkbook.SaveAs Filename:="K:\GVA\P1\P1O\P1O_All\Marketing\" & MonTabListeRM(A, b) & ".xlsx", Password:=MonTabListeRM(A, 4), FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
        ActiveWorkbook.Close
    End If
    
Next A
0
cycytoulouse Messages postés 15 Date d'inscription vendredi 31 août 2007 Statut Membre Dernière intervention 9 octobre 2018
13 sept. 2018 à 15:19
Merci pour ces conseils...j'ai fait une boucle car je ne connaissais pas la fonction pour trouver directement le fichier...maintenant je la connais, et je t'en remercie. Je suis autodidacte, et j'admets volontier qu'il me manque de la rigueure et de la méthode...
0
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476 > cycytoulouse Messages postés 15 Date d'inscription vendredi 31 août 2007 Statut Membre Dernière intervention 9 octobre 2018
3 oct. 2018 à 19:50
peux-tu marquer comme résolu, via la roue dentée à droite du titre?
0