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

XL 2019 EXECEL

  • Initiateur de la discussion Initiateur de la discussion chac10
  • 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 !

chac10

XLDnaute Junior
Bonjou,

Je souhaiterai créer une macro qui me permette de copier une base de donnée du fichier ou se trouve la macro pour ensuite copier cette base de donnée dans plusieurs classeurs de destinations dans un premier onglet Nommé data . J'aimerais repeter cette manipulation plusieurs fois, il faudrait donc que la fois suivante, la base de donnée remplace la précédente.

Merci pour votre aide.
 
Bonjour chac10,

En supposant que tous les classeurs sont dans un même dossier :
VB:
Sub Copier()
Dim chemin$, fichier$, plage As Range
chemin = ThisWorkbook.Path & "\"
fichier = Dir(chemin & "*.xls*")
Set plage = ThisWorkbook.Worksheets(1).Cells '1ère feuille de calcul
Application.ScreenUpdating = False
While fichier <> ""
    If fichier <> ThisWorkbook.Name Then
        With Workbooks.Open(chemin & fichier)
            plage.Copy .Worksheets(1).Cells(1) 'copier-coller
            .Close True 'enregistre et ferme le fichier
        End With
    End If
    fichier = Dir
Wend
With plage(1).MergeArea: .Copy plage(1): .Merge: End With 'allège la mémoire
End Sub
A+
 
Bonjour JOB75,

Est ce que tu peux ajouter deux boite de dialogue me permettant de choisir le fichier a copier et le dossier.
Ca me permettra de le faire avec plusieurs base de donnees.
Merci mon ami,

chac10
 
Bonjour chac10,

Le fichier source est celui de la macro.

Le choix du fichier de destination suffit :
VB:
Sub Copier()
Dim fichier As Variant, plage As Range
fichier = Application.GetOpenFilename("Fichiers Excel(*.xls*),*.xls*")
If fichier = False Then Exit Sub
Set plage = ThisWorkbook.Worksheets(1).Cells '1ère feuille de calcul
Application.ScreenUpdating = False
With Workbooks.Open(fichier)
    plage.Copy .Worksheets(1).Cells(1) 'copier-coller
    .Close True 'enregistre et ferme le fichier
End With
With plage(1).MergeArea: .Copy plage(1): .Merge: End With 'allège la mémoire
End Sub
A+
 
il faudrait que l'ensemble des fichiers sélectionner dans un dossier soient les destinataires en même temps
VB:
Sub Copier()
Dim plage As Range, i%
Set plage = ThisWorkbook.Worksheets(1).Cells '1ère feuille de calcul
With Application.FileDialog(msoFileDialogFilePicker)
    .AllowMultiSelect = True
    .Filters.Add "Classeurs Excel", "*.xls*"
    MsgBox "Sélectionnez les classeurs de destination"
    If Not .Show Then Exit Sub
    Application.ScreenUpdating = False
    For i = 1 To .SelectedItems.Count
        If .SelectedItems(i) <> ThisWorkbook.FullName Then
        With Workbooks.Open(.SelectedItems(i))
            plage.Copy .Worksheets(1).Cells(1) 'copier-coller
            .Close True 'enregistre et ferme le fichier
        End With
        End If
    Next
End With
With plage(1).MergeArea: .Copy plage(1): .Merge: End With 'allège la mémoire
End Sub
Bonne nuit.
 
Bonjour Job75, effectivement au départ c'était pour une seule base de donnees finalement j'aimerai le faire à partir de plusieurs fichiers Excel avec des base de donnes différentes. Ce qui signifie que jimporterai plusieurs base de donne dans un fichier Excel. Nomme le premier onglet data n'a plus d'intérêt. Il faudrait ajouter l'onglet copie a chaque fois que je répéterai l'opération.
 
Il faudrait ajouter l'onglet copie a chaque fois que je répéterai l'opération.
VB:
Sub Copier()
Dim plage As Range, i%
Set plage = ThisWorkbook.Worksheets(1).Cells '1ère feuille de calcul
With Application.FileDialog(msoFileDialogFilePicker)
    .AllowMultiSelect = True
    .Filters.Add "Classeurs Excel", "*.xls*"
    MsgBox "Sélectionnez les classeurs de destination"
    If Not .Show Then Exit Sub
    Application.ScreenUpdating = False
    For i = 1 To .SelectedItems.Count
        If .SelectedItems(i) <> ThisWorkbook.FullName Then
        With Workbooks.Open(.SelectedItems(i))
            .Worksheets.Add Before:=.Worksheets(1) 'ajoute une nouvelle feuille
            plage.Copy .Worksheets(1).Cells(1) 'copier-coller
            .Close True 'enregistre et ferme le fichier
        End With
        End If
    Next
End With
With plage(1).MergeArea: .Copy plage(1): .Merge: End With 'allège la mémoire
End Sub
 
- 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

  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
245
  • Question Question
Microsoft 365 recherche idée
Réponses
6
Affichages
791
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…