XL 2016 Déplacement de classeur

  • Initiateur de la discussion Initiateur de la discussion Jielgé
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Bonsoir Jielgé, wDog66,

Exécutez cette macro :
VB:
Sub Deplacer_fichier()
Dim fichier$, source$, destination$, fso As Object
fichier = "Données.xlsx"
source = "C:\Users\G\Documents\Fichiers à traiter\" & fichier
destination = "C:\Users\G\Documents\Fichiers traités\" & fichier
Set fso = CreateObject("Scripting.FileSystemObject")
fso.movefile source, destination
End Sub
A+
 
Bonjour job75.
Pas s'ils sont sur des lecteurs différents, il semblerait.
À moins que ce soit détecté et que dans ce cas un MoveFile soit assumé automatiquement.
Mais ça m'étonnerait parce qu'en principe cette instruction ne déplace pas le fichier, elle change seulement sa référence, même si cela touche des noms de sous dossiers au lieu de son propre nom.
 
Bonsoir Jielgé, wDog66,

Exécutez cette macro :
VB:
Sub Deplacer_fichier()
Dim fichier$, source$, destination$, fso As Object
fichier = "Données.xlsx"
source = "C:\Users\G\Documents\Fichiers à traiter\" & fichier
destination = "C:\Users\G\Documents\Fichiers traités\" & fichier
Set fso = CreateObject("Scripting.FileSystemObject")
fso.movefile source, destination
End Sub
A+
Bonjour à tous,
En fait, je souhaite déplacer un grand nombre de fichiers. J'ai donc légèrement modifié la macro de Job75, et ça marche !!!

Sub Deplacer_fichier()
'
Application.ScreenUpdating = False
Application.DisplayAlerts = False

Dim fichier$, source$, destination$, fso As Object
fichier = Dir("C:\Users\...\Fichiers à traiter\" & "*.xlsx")
Do While fichier <> ""
source = "C:\Users\...\Fichiers à traiter\" & fichier
destination = "C:\Users\...\Fichiers traités\" & fichier
Set fso = CreateObject("Scripting.FileSystemObject")
fso.movefile source, destination
fichier = Dir
Loop

Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
 
Bonjour
si tu modifie un code que l'on te donne fait le bien
l'object FSO est un gros lourdaud le recréer a chaque fichier n'est pas nécessaire
et il y a filecopy aussi qui fonctionne très bien et qui est intégré dans excel

les 3 méthodes

Méthode FSO

VB:
Sub Deplacer_fichier()
    'gel de l'ecran
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
  
    Dim fichier$, DossierSource$, DossierDestination$, FSO As Object 'variables necessaires
  
  
    'veiller  à ce que les chemin de dossiers terminent bien par un slach
    DossierSource = "C:\Users\...\Fichiers à traiter\"
    DossierDestination = "C:\Users\...\Fichiers traités\"
  
    fichier = Dir(DossierSource & "*.xlsx") 'on lance un premier dir
  
    If fichier <> "" Then 'si il y a quelque chose on continue
      
        Set FSO = CreateObject("Scripting.FileSystemObject") 'le FSO on ne le crée qu'une fois
      
        Do While fichier <> ""
            FSO.movefile DossierSource & fichier, DossierDestination & fichier
            fichier = Dir
            DoEvents
        Loop
    End If
  
    'degel de l'ecran
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
End Sub

Méthode FileCopy

VB:
Sub Deplacer_fichier2()
    'gel de l'ecran
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
  
    Dim fichier$, DossierSource$, DossierDestination$ 'variables necessaires
  
    'veiller  à ce que les chemin de dossiers terminent bien par un slach
    DossierSource = "C:\Users\...\Fichiers à traiter\"
    DossierDestination = "C:\Users\...\Fichiers traités\"
  
    fichier = Dir(DossierSource & "*.xlsx") 'on lance un premier dir
  
    If fichier <> "" Then 'si il y a quelque chose on continue
      
               Do While fichier <> ""
            FileCopy DossierSource & fichier, DossierDestination & fichier
            fichier = Dir
            DoEvents
        Loop
    End If
  
    'degel de l'ecran
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
End Sub

Méthode Name AS NewName

VB:
Sub Deplacer_fichier3()
    'gel de l'ecran
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
  
    Dim fichier$, DossierSource$, DossierDestination$, 'variables necessaires
  
  
    'veiller  à ce que les chemin de dossiers terminent bien par un slach
    DossierSource = "C:\Users\...\Fichiers à traiter\"
    DossierDestination = "C:\Users\...\Fichiers traités\"
  
    fichier = Dir(DossierSource & "*.xlsx") 'on lance un premier dir
  
    If fichier <> "" Then 'si il y a quelque chose on continue
      
        Do While fichier <> ""
            Name DossierSource & fichier As DossierDestination & fichier
            fichier = Dir
            DoEvents
        Loop
    End If
  
    'degel de l'ecran
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
End Sub

Patrick
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
13
Affichages
315
  • Question Question
Microsoft 365 Personal.xlsb
Réponses
4
Affichages
339
Réponses
4
Affichages
186
Réponses
10
Affichages
199
Réponses
2
Affichages
89
Réponses
5
Affichages
258
Réponses
0
Affichages
86
Retour