Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2010 Copie lignes avec format VBA

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 !

herve62

XLDnaute Barbatruc
Supporter XLD
Bonjour
J'ai a modifier un grand nombre de fiches (comme Liste 1.xlsx) en prenant le texte de Copie test.xlsm pour remplacer
dans la feuille Mode DEMPLOI
J'ai toujours évité les Copy/paste , mais là il faut garder le format du modèle donc j'essaye avec ROWS
; j'ai pris le code enregistré macro et adapté Mais cela ne fonctionne pas !!
 

Pièces jointes

Bonjour herve62,

La solution classique est celle-ci :
VB:
Sub mod_emploi()
Dim t#, chemin$, fichier$, R As Range, n%
t = Timer
chemin = ThisWorkbook.Path & "\" 'à adapter
fichier = Dir(chemin & "*.xlsx")
Set R = Sheets("ME").UsedRange.EntireRow 'plage source à adapter
Application.ScreenUpdating = False
While fichier <> ""
    n = n + 1
    Workbooks.Open chemin & fichier
    Cells.Delete 'RAZ
    R.Copy Cells(1) 'copier-coller
    ActiveWorkbook.Close True 'enregistre et ferme le fichier
    fichier = Dir
Wend
MsgBox n & " fichier(s) .xlsx traité(s) en " & Format(Timer - t, "0.00 \sec")
End Sub
Avec ce code le fichier de la macro doit être dans le même dossier que les fichiers à traiter.

Edit : j'avais oublié Cells.Delete

A+
 
Dernière édition:
Si l'on veut choisir le dossier où se trouvent les fichiers à traiter :
VB:
Sub mod_emploi()
Dim dossier As FileDialog, t#, chemin$, fichier$, R As Range, n%
Set dossier = Application.FileDialog(msoFileDialogFolderPicker)
If dossier.Show = False Then Exit Sub 'Annuler
t = Timer
Set R = Sheets("ME").UsedRange.EntireRow
chemin = dossier.SelectedItems(1) & "\"
fichier = Dir(chemin & "*.xlsx")
Application.ScreenUpdating = False
While fichier <> ""
    n = n + 1
    Workbooks.Open chemin & fichier
    Cells.Delete 'RAZ
    R.Copy Cells(1)
    ActiveWorkbook.Close True 'enregistre et ferme le fichier
    fichier = Dir
Wend
MsgBox n & " fichier(s) .xlsx traité(s) en " & Format(Timer - t, "0.00 \sec")
End Sub
 
Bonsoir JOB
Merci du retour
Mais je pige pas tout !!! surtout ou se trouve ma plage ( les 12 lignes) à copier ?
et aussi le format ? ( hauteur de ligne , car dans les anciens fichiers celle ci n'est plus bonne )
Set R = Sheets("ME").UsedRange.EntireRow
??
R.Copy Cells(1)
??
Enfin je ne vois pas la selection de la feuille MODE DEMPLOI dans la destination , là j'ai supprimé dans l'exemple les autres feuilles sinon j'en ai 4
 
Si tu ne comprends pas teste les macros sur les fichiers de ton post #1.

Maintenant tu n'es quand même pas débutant, alors s'il y a toujours 12 lignes à copier :
VB:
Set R = Sheets("ME").Rows("1:12")
Et s'il faut préciser la feuille de destination :
Code:
Sheets("MODE DEMPLOI").Cells.Delete 'RAZ
R.Copy Sheets("MODE DEMPLOI").Cells(1)
 
Ok je testerai demain , mais comme déjà dit j'aime bien comprendre ce que je fais
Comme on disait à l'école : ne pas recopier bêtement !!!!
Là déjà cela va mieux avec le nouveau R , le 1er (usedRange) euh ??
 
Bonjour herve62,

Si l'on veut voir les fichiers .xlsx du dossier choisi il faut utiliser la boîte de dialogue qui ouvre les fichiers :
VB:
Sub mod_emploi()
Dim fd As FileDialog, t#, chemin$, fichier$, R As Range, n%
Set fd = Application.FileDialog(msoFileDialogFilePicker)
fd.Title = "CLIQUER SUR UN FICHIER QUELCONQUE DU DOSSIER CHOISI"
fd.Filters.Add "Classeurs Excel", "*.xlsx"
If fd.Show = False Then Exit Sub 'Annuler
t = Timer
chemin = Left(fd.SelectedItems(1), InStrRev(fd.SelectedItems(1), "\"))
fichier = Dir(chemin & "*.xlsx")
Set R = Sheets("ME").Rows("1:12")
Application.ScreenUpdating = False
While fichier <> ""
    n = n + 1
    Workbooks.Open chemin & fichier
    Sheets("MODE DEMPLOI").Cells.Delete 'RAZ
    R.Copy Sheets("MODE DEMPLOI").Cells(1)
    ActiveWorkbook.Close True 'enregistre et ferme le fichier
    fichier = Dir
Wend
MsgBox n & " fichier(s) .xlsx traité(s) en " & Format(Timer - t, "0.00 \sec")
End Sub
Le choix d'un des fichiers entraîne le traitement de tous les fichiers du dossier.

A+
 
Moi j'étais parti sur :
With Application.FileDialog(msoFileDialogFolderPicker)
.ButtonName = "Select"
.Filters.Add "Classeurs Excel", "*.xlsx"
...etc !!!
Mais le filters bloque ?? ( pourtant cela vient d'un vieux truc de PatrickToulon !!)

-------------------
Je modifie , je viens de piger certains points
Forcément que ça bug !!! il faut DialogOpen et pas FolderPicker
Il faut que je fasse l'amalgame au plus simple pour l'utilisateur ; Mais le choix d'affichage du rep & de ses fichiers n'est pas terrible car il faut selectionner un fichier !!! et on ne peut le préciser !!!!
 
Dernière édition:
Bonjour herve62, le forum,

Pour récupérer le chemin du dossier le plus simple est d'utiliser InitialFileName :
VB:
Sub mod_emploi()
Dim fd As FileDialog, t#, chemin$, fichier$, R As Range, n%
Set fd = Application.FileDialog(msoFileDialogFilePicker)
fd.Title = "CLIQUER SUR UN FICHIER QUELCONQUE DU DOSSIER CHOISI"
fd.Filters.Add "Classeurs Excel", "*.xlsx"
If fd.Show = False Then Exit Sub 'Annuler
t = Timer
chemin = fd.InitialFileName 'chemin du dossier
fichier = Dir(chemin & "*.xlsx")
Set R = Sheets("ME").Rows("1:12")
Application.ScreenUpdating = False
While fichier <> ""
    n = n + 1
    Workbooks.Open chemin & fichier
    Sheets("MODE DEMPLOI").Cells.Delete 'RAZ
    R.Copy Sheets("MODE DEMPLOI").Cells(1)
    ActiveWorkbook.Close True 'enregistre et ferme le fichier
    fichier = Dir
Wend
MsgBox n & " fichier(s) .xlsx traité(s) en " & Format(Timer - t, "0.00 \sec")
End Sub
A+
 
- 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
10
Affichages
655
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…