Modification code

Bonjour le forum,

j'ai codé une macro qui boucle dans un répertoire afin d'ouvrir plusieurs fichiers, mais quand je récupère le nom de l'onglet dans une variable, ça récupère le nom du deuxième fichier, alors que je récupère le nom de l'onglet qui s'ouvre. Voici mon code, je ne peux pas partager de fichier exemple mais si jamais certains d'entre vous aurait une idée ça m'arrangerait.

Merci le forum.

Sub macro1()

Dim myPath As String, myFile As Variant
Dim wkbk As Workbook

Application.ScreenUpdating = True

myPath = "C:\Users\XXXXX\Desktop\2020-07-01\"
myFile = Dir(myPath & "\*.csv")

Do While myFile <> ""

    Set wkbk = Workbooks.Open(myPath & myFile)
    wkbk.Activate
    myFile = Dir()

    Dim sht As Worksheet

    Set wkbk = ActiveWorkbook 'ThisWorkbook 'Workbooks(NewFileName)
    Set sht = wkbk.Sheets(1)
    Set cwk = ThisWorkbook 'Workbooks("GenFactureOVH.xlsm")
    Set csht = cwk.Sheets("tauxclients") 'cwk.Sheets(1)

    'Recherche de la ligne correspondante au fichier client dans la feuille numclients
    Dim lig As Integer
    Dim NomClient As String

    NomClient = Mid(myFile, 1, InStrRev(myFile, ".") - 12)
    On Error Resume Next
    Stop
    MsgBox NomClient
    lig = csht.Range("A:A").Find(NomClient, LookIn:=xlValues, lookat:=xlPart).Row

Bonjour,

Il faudrait mettre votre MyFile = Dir() en toute fin de boucle. Sinon, le nom de myfile change, créant ainsi un décalage...

Cordialement,

Bonjour,

Regarde les commentaires de ce code :

myFile = Dir(myPath & "\*.csv")  ' STOCKE LE 1er FICHIER CSV dans myFile

Do While myFile <> "" 'boucle

    Set wkbk = Workbooks.Open(myPath & myFile) 'OUVRE LE 1er FICHIER CSV
    wkbk.Activate 'active
    myFile = Dir() 'STOCKE LE 2nd FICHIER CSV dans myFile

ahhhh en effet une erreur, je l'avais mis là au début je l'ai copié pour le mettre à la fin de ma boucle sans l'enlever au début, et à force de chercher compliqué je n'ai même ,pas remarqué, MERCI à vous !!

Bonjour,

Avant de m'attaquer au problème mentionné, quelques remarques :
- On évite de déclarer des variables en cours de macro, il est préférable et plus clair de tout grouper en début de macro
- Ces instructions sont redondantes :

Set wkbk = Workbooks.Open(myPath & myFile) 'Cette ligne affecte le classeur à la variable wkbk
wkbk.Activate 'L'instruction précédente rend déjà automatiquement le classeur actif
Set wkbk = ActiveWorkbook 'La variable wkbk correspond déjà à ce classeur

- La variable sht est déclarée comme un objet Worksheet, c'est donc un Worksheet et non un Sheet qu'il faut lui affecter
- Quel est l'intérêt de l'instruction Stop ?

Concernant votre demande, quelle variable est censée accueillir le nom de l'onglet, et prend au final le nom du fichier ? Ce n'est pas clairement expliqué...

Bonjour Pedro, en effet mon code est loin d'être clean, merci pour vos remarques

La demande a été résolue, merci beaucoup bonne journée

Rechercher des sujets similaires à "modification code"