Problème ouverture fichiers multiples xml

Y compris Power BI, Power Query et toute autre question en lien avec Excel
I
Innuendo67
Membre habitué
Membre habitué
Messages : 73
Inscrit le : 26 août 2015
Version d'Excel : 2013 fr

Message par Innuendo67 » 2 avril 2016, 22:12

Bonsoir,

Je viens vers vous pour un problème dont je ne vois aucune once de résolution...

J'utilise ce code:
Dim DernLigne As Long
Dim repertoiredePVàimporter As String
Dim wb As Workbook

repertoiredePVàimporter = ActiveWorkbook.Path & "\FICHIERS A TRAITER"

ChDir repertoiredePVàimporter

monfichier = Dir("PV*.xml")
While monfichier <> ""

Cells(Rows.Count, 1).End(xlUp)(2).Select
    
    Workbooks.OpenXML Filename:=monfichier
    
    If monfichier = False Then Exit Sub
   
   DernLigne = Range("BF" & Rows.Count).End(xlUp).Row
Range("AH3:AH" & DernLigne).SpecialCells(xlCellTypeVisible).Select
    Selection.Copy
        
    Windows("gestion fichier.xlsm").Activate
    Cells(Rows.Count, 2).End(xlUp)(2).Select
    
    ActiveSheet.Paste
C'est une ouverture de tous les fichiers contenus dans le dossier FICHIER A TRAITER.

Ensuite le code fait des copier/coller de chaque fichier ouvert un à un sur le fichier gestion fichier.

Ce code fonctionne parfaitement bien lorsque je mets le dossier contenant le xlsm sur le bureau de mon PC.
Si je déplace ce dossier sous D ou une clé USB, il n'ouvre pas les xml...

Je n'arrive pas du tout à voir ce qui cloche...

Merci à vous de l'attention porté à mon projet.

Cordialement,

Innuendo67.
Avatar du membre
eriiic
Passionné d'Excel
Passionné d'Excel
Messages : 9'400
Appréciations reçues : 403
Inscrit le : 7 février 2010
Version d'Excel : 2010fr

Message par eriiic » 2 avril 2016, 22:29

Bonjour,

Workbooks.OpenXML Filename:=ActiveWorkbook.Path & "\FICHIERS A TRAITER\" & monfichier
non ?

Et tu utilises ActiveWorkbook.Path, ce n'est pas ThisWorkbook.Path que tu veux plutôt ?
ActiveWorkbook = fichier actif
ThisWorkbook = celui qui a cette macro

eric
En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.
(les Shadoks)

En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
I
Innuendo67
Membre habitué
Membre habitué
Messages : 73
Inscrit le : 26 août 2015
Version d'Excel : 2013 fr

Message par Innuendo67 » 2 avril 2016, 22:53

Bonsoir Eriiic.

Malheureusement cela ne fonctionne pas...

Mais le pire c'est que cela fonctionne parfaitement sur le bureau mais pas ailleurs... Etrange...

Cordialement,

Innuendo67
M
MFerrand
Fanatique d'Excel
Fanatique d'Excel
Messages : 17'171
Appréciations reçues : 446
Inscrit le : 20 juillet 2015
Version d'Excel : 2010 FR

Message par MFerrand » 2 avril 2016, 23:01

Bonsoir,

ChDir ne modifie que le répertoire courant, pas le lecteur. Si on doit passer de C: à D: il faut donc aussi changer de lecteur courant avec ChDrive.
I
Innuendo67
Membre habitué
Membre habitué
Messages : 73
Inscrit le : 26 août 2015
Version d'Excel : 2013 fr

Message par Innuendo67 » 3 avril 2016, 10:37

Bonjour MFerrand,

ça ne fonctionne pas non plus...

Je mets l'intégralité du code pour que ce soit plus clair. Il est surement perfectible dans le fond...
Sub importgroupédePVxml()

Application.ScreenUpdating = False
Application.DisplayAlerts = False

Windows("gestion fichier.xlsm").Activate
Range("A2:K1000000").Select
 
    ActiveWindow.ScrollRow = 1
    Selection.ClearContents

Dim DernLigne As Long
Dim repertoiredePVàimporter As String
Dim wb As Workbook


repertoiredePVàimporter = ActiveWorkbook.Path & "\FICHIERS A TRAITER"


ChDir repertoiredePVàimporter

monfichier = Dir("PV*.xml")

While monfichier <> ""

Cells(Rows.Count, 1).End(xlUp)(2).Select
    
    
    
    Workbooks.OpenXML Filename:=monfichier
    
   If monfichier = False Then Exit Sub
   ''
   DernLigne = Range("BF" & Rows.Count).End(xlUp).Row
Range("AH3:AH" & DernLigne).SpecialCells(xlCellTypeVisible).Select
    Selection.Copy
        
    Windows("gestion fichier.xlsm").Activate
    Cells(Rows.Count, 2).End(xlUp)(2).Select
    
    ActiveSheet.Paste
   
    

'Dim wb As Workbook
    For Each wb In Workbooks
        If UCase(wb.Name) Like "PV*" Then wb.Activate: Exit For
    Next wb



   ''
   DernLigne = Range("BF" & Rows.Count).End(xlUp).Row
Range("AH3:AH" & DernLigne).SpecialCells(xlCellTypeVisible).Select
    Selection.Copy
        ''

    
    
    Windows("gestion fichier.xlsm").Activate
    Cells(Rows.Count, 5).End(xlUp)(2).Select
    
    ActiveSheet.Paste
   
    

    For Each wb In Workbooks
        If UCase(wb.Name) Like "PV*" Then wb.Activate: Exit For
    Next wb
    
   DernLigne = Range("BF" & Rows.Count).End(xlUp).Row
Range("BF3:BF" & DernLigne).SpecialCells(xlCellTypeVisible).Select
    Selection.Copy
        ''

    
    
    Windows("gestion fichier.xlsm").Activate
    Cells(Rows.Count, 4).End(xlUp)(2).Select
    
    ActiveSheet.Paste
   
    

    For Each wb In Workbooks
        If UCase(wb.Name) Like "PV*" Then wb.Activate: Exit For
    Next wb
   ''
   DernLigne = Range("BF" & Rows.Count).End(xlUp).Row
Range("BV3:BV" & DernLigne).SpecialCells(xlCellTypeVisible).Select
    Selection.Copy
        ''

    
    
    Windows("gestion fichier.xlsm").Activate
    Cells(Rows.Count, 9).End(xlUp)(2).Select
    
    ActiveSheet.Paste
   
    

    For Each wb In Workbooks
        If UCase(wb.Name) Like "PV*" Then wb.Activate: Exit For
    Next wb
   ''
   DernLigne = Range("BF" & Rows.Count).End(xlUp).Row
Range("CD3:CD" & DernLigne).SpecialCells(xlCellTypeVisible).Select
    Selection.Copy
        ''

   
    
    Windows("gestion fichier.xlsm").Activate
    Cells(Rows.Count, 3).End(xlUp)(2).Select
    
    ActiveSheet.Paste
   
    

    For Each wb In Workbooks
        If UCase(wb.Name) Like "PV*" Then wb.Activate: Exit For
    Next wb
   ''
   DernLigne = Range("BF" & Rows.Count).End(xlUp).Row
Range("DI3:DI" & DernLigne).SpecialCells(xlCellTypeVisible).Select
    Selection.Copy
        ''

    
    
    Windows("gestion fichier.xlsm").Activate
    Cells(Rows.Count, 10).End(xlUp)(2).Select
    
    ActiveSheet.Paste
   
    

    For Each wb In Workbooks
        If UCase(wb.Name) Like "PV*" Then wb.Activate: Exit For
    Next wb
   ''
   DernLigne = Range("BF" & Rows.Count).End(xlUp).Row
Range("IW3:IW" & DernLigne).SpecialCells(xlCellTypeVisible).Select
    Selection.Copy
        ''

    
    
    Windows("gestion fichier.xlsm").Activate
    Cells(Rows.Count, 8).End(xlUp)(2).Select
    
    ActiveSheet.Paste
   
''
For Each wb In Workbooks
        If UCase(wb.Name) Like "PV*" Then wb.Activate: Exit For
    Next wb
   ''
   DernLigne = Range("BF" & Rows.Count).End(xlUp).Row
Range("EM3:EM" & DernLigne).SpecialCells(xlCellTypeVisible).Select
    Selection.Copy
        ''

 ActiveWindow.Close
    
    Windows("gestion fichier.xlsm").Activate
    Cells(Rows.Count, 11).End(xlUp)(2).Select
    
    ActiveSheet.Paste
    
    

    
monfichier = Dir()

Wend



Application.ScreenUpdating = True
Application.DisplayAlerts = True

Columns("F:G").Select
Selection.NumberFormat = "General"

'MsgBox "FIN DE TRAITEMENT"
Windows("gestion fichier.xlsm").Activate

Range("A1").Select


End Sub
Je rappelle que ce code fonctionne parfaitement bien dès que le dossier contenant le fichier gestion fichier est sur le bureau.
Sur D non, sur une clé USB non plus... il ne m'importe rien comme s'il n'ouvrait pas les fichiers xml du dossier FICHIERS A TRAITER...

Merci de votre attention.

Cordialement,

Innuendo67
p
pierre.jy
Membre fidèle
Membre fidèle
Messages : 499
Appréciation reçue : 1
Inscrit le : 26 février 2016
Version d'Excel : 2010

Message par pierre.jy » 3 avril 2016, 11:27

Bonjour,

commence par enlever les caractères accentuées dans les noms de tes variables ...

ensuite il ne faut pas utiliser chDir mais préciser explicitement le répertoire dans toutes tes commandes Dir ou Open..


(...)
monfichier = Dir(repertoiredePVaimporter & "\PV*.xml")   ' Dir ne renvoi que le nom du fichier pas son chemin !!

While monfichier <> ""

Cells(Rows.Count, 1).End(xlUp)(2).Select
    
    
    
    Workbooks.OpenXML Filename:=repertoiredePVaimporter & "\" & monfichier
(....)
I
Innuendo67
Membre habitué
Membre habitué
Messages : 73
Inscrit le : 26 août 2015
Version d'Excel : 2013 fr

Message par Innuendo67 » 3 avril 2016, 18:48

Bonjour Pierre.jy,

effectivement cela fonctionne sur D ou sur une clé USB. Mais.....cela ne fonctionne plus lorsque le dossier contenant le xlsm est sur le bureau. Je ne comprends vraiment pas pourquoi...

Cordialement,

Innuendo67
p
pierre.jy
Membre fidèle
Membre fidèle
Messages : 499
Appréciation reçue : 1
Inscrit le : 26 février 2016
Version d'Excel : 2010

Message par pierre.jy » 3 avril 2016, 20:41

re,


et comment renseigne tu la variable :
repertoiredePVaimporter 
en particulier lorsque le fichier est sur ton bureau ?
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message