Recherche d'un fichier XL, nom/path connus

Résolu
cycytoulouse Messages postés 18 Statut Membre -  
yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   -
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



--
CycyToulouse

2 réponses

  1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    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
  2. cycytoulouse Messages postés 18 Statut Membre
     
    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
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      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
    2. cycytoulouse Messages postés 18 Statut Membre
       
      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
      1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > cycytoulouse Messages postés 18 Statut Membre
         
        peux-tu marquer comme résolu, via la roue dentée à droite du titre?
        0