Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.
  • Initiateur de la discussion Initiateur de la discussion Rod_38
  • 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 !

R

Rod_38

Guest
Bonjour,

Je suis nouveau sur VBA mais je suis arrivé à créer ce code :

destination = "Extraire syntheses.xlsm"


For i = 1 To 3

' Sélection des répertoires de départ
If i = 1 Then
ChDrive "C"
ChDir "C:\X/Y/A"
End If
If i = 2 Then
ChDrive "C"
ChDir "C:\X/Y/Z\"
End If
If i = 3 Then
ChDrive "C"
ChDir "C:\\X/Y/R"
End If

Windows(destination).Activate
ActiveSheet.UsedRange.Select
Selection.ClearContents
Range("A1").Select

Application.ScreenUpdating = False


' Copier les données de chaque fichier
source = Dir("*.HTM")
While source <> ""
Workbooks.Open source
Windows(source).Activate
Range("B120").Select
Selection.Copy
Windows(destination).Activate
ActiveSheet.Paste

Je souhaiterai ajouter une chose. Je souhaiterai ajouter que la macro n'ouvre dans les dossiers que les fichiers de la veille.

Merci de me dire si il y a une solution ou si je dois effectuer un listing en premier et après travailler par rapport à ce listing.

Merci
 
Re : VBA Liste

Bonjour Rod_38,

Avant d'essayer de poursuivre ton projet, il faut changer ta sélection des répertoires de départ. En effet, les noms de répertoires ne peuvent contenir des "slash /", mais des "anti shlash \" (barre simple, barre inversée. On peut imaginer des répertoires de ce type :
Code:
If i = 1 Then 
ChDrive "C:\"
ChDir "C:\X_Y/A\"
End If
If i = 2 Then
ChDrive "C:\"
ChDir "C:\X_Y_Z\"
End If
If i = 3 Then
ChDrive "C:\"
ChDir "C:\\X_Y_R\"
End If
qui peut s'écrire plus simplement
Code:
If i = 1 Then ChDir "C:\X_Y/A\"
If i = 2 Then ChDir "C:\X_Y_Z\"
If i = 3 Then ChDir "C:\\X_Y_R\"
Pour le reste, il serait peut-être utile que tu mettes dans un fichier ce que tu souhaites obtenir (explications ou exemples visuels). En l'état, j'ai peur de ne pas savoir exactement où l'on va.


Bon courage
A+ Jack2
 
Dernière édition:
Re : VBA Liste

Merci mais j 'avais juste enlever les chemins car ils st long et ne sont pas utile pour la macro.

Pour faire simple j ai un dossier qui contient des centaines de fichiers qui sont crées tous les jours et ma macro qui fonctionne lit tous ces fichiers.
Je souhaiterai limite la lecture de ces fichiers à une seule journée sachant que je ne veux pas ouvrir tous les fichiers.

Voici un exemple du dossier ou je veux extraire que les htm
 

Pièces jointes

  • Nouvelle image bitmap.jpg
    38.5 KB · Affichages: 55
  • Nouvelle image bitmap.jpg
    38.5 KB · Affichages: 62
Re : VBA Liste

Bonsoir,

Ci-joint un bout de code qui permet d'isoler, de lister les fichiers .htm et htm et de savoir s'il date de la veille. EN fonction de cela, il faudrait que me dise ce que tu veux faire de ces fichiers (les copier, les supprimer, les lister dans une feuille de calcul, si oui de quelle manière.... N'hésite à être "bavard" ou envoyer un exemple.

A+ JAck2
 

Pièces jointes

Re : VBA Liste

Bonjour,

Merci mais j ai changé ma façon de lister. Je vais créer une macro qui deplace les fichiers d'un dossier à un autre comme ça je pourrai savoir quel fichier ont été traités.
D'ailleurs si tu as des infos pour ça je suis preneur.

A+
 
Re : VBA Liste

Bonjour,

Ci-après un exemple de code pour copier ou déplacer des fichiers
Code:
Sub Copier_Deplacer()
Dim FSO As Object
Dim DossierSource As Object
Dim Fichier As Object, DossDestination As String
Dim Fich As String
'à adapter
Repertoire = "C:\Excel\"
DossDestination = "C:\Intel\"
Set FSO = CreateObject("Scripting.FileSystemObject")
Set DossierSource = FSO.GetFolder(Repertoire)

For Each Fichier In DossierSource.Files
    Fich = Fichier.Name
    'FSO.CopyFile Repertoire & Fich, DossDestination & Fich, True 'True écrase le fichier, pas False
    'pour déplacer ver un autre répertoire,  quasiment la même syntaxe avec move.
    FSO.MoveFile Repertoire & Fich, DossDestination & Fich
    ' Il faut gérer l'existence ou nom d'un fichier identique
    ' If FichExiste(DossDestination & Fich) Then FSO.MoveFile Repertoire & Fich, DossDestination & Fich
Next Fichier
Set DossierSource = Nothing
Set FSO = Nothing
End Sub
Pour les filtres "htm" cf. post précédent.
Si tu as besoin d'aide, tu peux m'envoyer un fichier, sinon bon courage. Lien intéressant sur la gestion des fichiers
Manipulation des fichiers en VBA
Au cas où, la fonction FichExiste
Code:
Function FichExiste(Path As String) As Boolean
    ' Path = chemin + fichier
    FichExiste = Dir(Path) <> ""
End Function
A+ Jack 2
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
3
Affichages
257
Réponses
8
Affichages
390
Réponses
2
Affichages
528
Réponses
5
Affichages
914
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…