Macro qui copie les lignes des fichiers ds nouveau fichier
louisesydney
Messages postés
8
Date d'inscription
Statut
Membre
Dernière intervention
-
Frenchie83 Messages postés 2240 Date d'inscription Statut Membre Dernière intervention -
Frenchie83 Messages postés 2240 Date d'inscription Statut Membre Dernière intervention -
Bonjour
Je ne pense pas avoir vu la question deja posee mais je voulais savoir s'il etait possible qu une macro puisse
1) ouvrir plusieurs fichiers a la fois ranges dans un dossier
ce sont des fichiers xlsx sans macro
2) copier les lignes non vides de ces fichiers et les mettre les unes a la suite des autres (sachant que le nom des fichiers n est pas connu) dans un nouveau fichier (qui dans l'ideal contiendrait la macro)
quelqu un aurait-il une petite idee de comment programmer ca en VBA?
Merci beaucoup par avance
Je ne pense pas avoir vu la question deja posee mais je voulais savoir s'il etait possible qu une macro puisse
1) ouvrir plusieurs fichiers a la fois ranges dans un dossier
ce sont des fichiers xlsx sans macro
2) copier les lignes non vides de ces fichiers et les mettre les unes a la suite des autres (sachant que le nom des fichiers n est pas connu) dans un nouveau fichier (qui dans l'ideal contiendrait la macro)
quelqu un aurait-il une petite idee de comment programmer ca en VBA?
Merci beaucoup par avance
A voir également:
- Macro qui copie les lignes des fichiers ds nouveau fichier
- Fichier bin - Guide
- Fichier epub - Guide
- Fichier rar - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier .dat - Guide
3 réponses
Bonjour
Voici une proposition
dans la feuille "Liste" remplissez
en A2 le lecteur ou se trouve les fichiers
en B2 le chemin complet
en C2: Cx les noms des fichiers à ouvrir
Sur la feuille "RecupDesDonnees" cliquez sur "Importer les données"
https://www.cjoint.com/c/EGwhFquraPw
J'ai considérer qu'une ligne était vide si la cellule de la colonne A de la ligne en question était vide.
Sans autres précisions de votre part, difficile de faire plus
Cdlt
Voici une proposition
dans la feuille "Liste" remplissez
en A2 le lecteur ou se trouve les fichiers
en B2 le chemin complet
en C2: Cx les noms des fichiers à ouvrir
Sur la feuille "RecupDesDonnees" cliquez sur "Importer les données"
https://www.cjoint.com/c/EGwhFquraPw
J'ai considérer qu'une ligne était vide si la cellule de la colonne A de la ligne en question était vide.
Sans autres précisions de votre part, difficile de faire plus
Cdlt
RE
D'après mes premières constations, les fichiers ayant été déplacés le chemin indiqué en col B dans la feuille "Liste" n'est plus le bon, ce doit être le nouveau chemin.
Si ce n'est pas ça, indiquez-moi sur quelle ligne s'arrête le programme
Cdlt
D'après mes premières constations, les fichiers ayant été déplacés le chemin indiqué en col B dans la feuille "Liste" n'est plus le bon, ce doit être le nouveau chemin.
Si ce n'est pas ça, indiquez-moi sur quelle ligne s'arrête le programme
Cdlt
pourtant les fichiers se trouve bien dans le nouveau repertoire oui mais, avez-vous changer le chemin dans la feuille "liste"?
Je vous renvoie le fichier, tel qu'il doit être
https://www.cjoint.com/c/EGyiHawguZw
Je vous renvoie le fichier, tel qu'il doit être
https://www.cjoint.com/c/EGyiHawguZw
est-ce qu il est possible de couper coller des fichiers d un dossier a un autre sans les copier? pour qu ils disparaissent bien au moment ou ils ont ete colle
merci
est-ce qu il est possible de couper coller des fichiers d un dossier a un autre sans les copier? pour qu ils disparaissent bien au moment ou ils ont ete colle Voulez-vous dire "déplacer les fichiers"? OUI on peut
Y a t-il un rapport avec la question initiale?
Donnez plus de précisions
Cdlt
voila ce que jai fait grace a votre aide:
Et maintenant jaimerai changer la premiere etape du copier coller supprimer par deplacer les fichiers du dossier vers un autre. au cas ou un fichier arrive dans le dossier quand la macro est en train de tourner
Sub Copy_Folder()
'cette macro copie les fichiers d'un repertoire dans un autre dossier
Dim Fso As Object
Dim FromPath As String
Dim ToPath As String
FromPath = "C:\Users\Louise\Documents\MACCCRRRROOOO\dossier test 1"
ToPath = "C:\Users\Louise\Documents\MACCCRRRROOOO\dossier test 2"
If Right(FromPath, 1) = "\" Then
FromPath = Left(FromPath, Len(FromPath) - 1)
End If
If Right(ToPath, 1) = "\" Then
ToPath = Left(ToPath, Len(ToPath) - 1)
End If
Set Fso = CreateObject("scripting.filesystemobject")
If Fso.FolderExists(FromPath) = False Then
Exit Sub
End If
Fso.CopyFolder Source:=FromPath, Destination:=ToPath
'supprimer les fichiers dans le premier fichier
On Error Resume Next
Kill "C:\Users\Louise\Documents\MACCCRRRROOOO\dossier test 1\*.*"
On Error GoTo 0
'trouve le nom des fichiers
Dim Rep As String, Fichier As String
Dim j As Integer
Rep = "C:\Users\Louise\Documents\MACCCRRRROOOO\dossier test 2\"
Fichier = Dir(Rep)
Do While Fichier <> ""
j = j + 1
Sheets("Liste").Range("C" & j + 1) = Fichier
Fichier = Dir
Loop
'ouvre dossier et recopie les lignes non vides
Dim FichierAOuvrir
Dim i As Integer
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set F1 = Sheets("Liste")
Set F2 = Sheets("RecupDesDonnees")
F1.Select
ChDrive Cells(2, 1)
Chemin = Cells(2, 2) & "\"
ReDim FichierAOuvrir([C1000].End(xlUp).Row - 1) As String
NbFichiers = [C1000].End(xlUp).Row - 1
For i = 1 To NbFichiers
If Cells(i + 1, 3) = "" Then GoTo Recup
FichierAOuvrir(i) = Cells(i + 1, 3)
Next i
Recup:
F2.Select
For i = 1 To NbFichiers
Workbooks.Open Chemin & FichierAOuvrir(i), corruptload:=xlRepairFile
Range(Cells(2, 1), Cells([B65535].End(xlUp).Row, [IV1].End(xlToLeft).Column)).Select
Selection.Copy
ActiveWorkbook.Close
PremLigne = [C65535].End(xlUp).Row + 1
Range("A" & PremLigne).Select
ActiveSheet.Paste
Next i
'suppression des lignes vides
DerLig = [A100000].End(xlUp).Row
For i = 2 To DerLig
If Cells(i, 1) <> "" Then GoTo Suivant
Cells(i, 1).EntireRow.Delete
i = i - 1
DerLig = DerLig - 1
If DerLig < i Then Exit Sub
Suivant:
Next i
'supprime les doublons
MaCellule = ("B1")
Range(MaCellule).Select
ActiveCell.CurrentRegion.Sort Key1:=Range(MaCellule), Order1:=xlAscending, Header:=xlYes
donnee1 = ActiveCell
ActiveCell.Offset(1, 0).Select
While ActiveCell <> ""
If ActiveCell = donnee1 Then
ActiveCell.EntireRow.Delete
ActiveCell.Offset(-1, 0).Select
donnee1 = ActiveCell
ActiveCell.Offset(1, 0).Select
Else
donnee1 = ActiveCell
ActiveCell.Offset(1, 0).Select
End If
Wend
End Sub
essayez ceci
A adapter à votre code
dlt
jai remplace tout le copier coller supprimer par ce que vous m avez envoyee et garder la suite identique
merci encore