XL 2013 importer des données d'une feuille vers un autre classeur

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 !

ATHE RIOVELI

XLDnaute Occasionnel
Bonsoir à tous.
Avant, j'aimerais souhaiter à tous une bonne fin d'année 2022.
J'ai un soucis avec mon classeur qui contient des codes vba.
Ce classeur doit contenir à à partir de de la colonne B13 jusqu'à une colonne B... des noms et prénoms.
Généralement, ces noms sont déjà envoyé dans un autre fichier.
Alors mon soucis, lorsque je fais un copier coller de ces noms, cela affecte des propriétés de mon classeur.
J'aimerais donc avoir un code vba qui me permette d'importer ces noms et prénoms d'un fichier dans un autre.
J'ai donc crée un bouton "Importer une liste de classe" j'ai mis un code vba qui ne fonctionne pas comme je le veux.
Voici ci joint les deux fichier.
 

Pièces jointes

Bonjour,

en changeant juste un ou 2 truc dans ta macro, on copie B2 sans soucis.

VB:
Sub ImporterDonees()

' Déclaration des variables
Dim ListeFichier As Variant
Dim MonClasseur As Workbook

 With ActiveWorkbook

    ' On récupère le fichier de données à copier
        ListeFichier = Application.GetOpenFilename(Title:="Selctionnez votre classeur", _
                        FileFilter:="Fichier Excel (*.xls*),*xls*", ButtonText:="Cliquez")
    ' Prévoir le cas du bouton annuler
    If ListeFichier <> False Then
        'On affecte le fichier selectionné
        Set MonClasseur = Application.Workbooks.Open(ListeFichier)
        ' On copie les données de la feuille du fichier selectionné
        MonClasseur.Sheets(1).Range("B2").Copy
        ' On colle les données dans la feuille active
   
    .Sheets(3).Range("B13").PasteSpecial xlPasteValues
    ' On ferme le classeur source
    MonClasseur.Close
    End If
End With

End Sub
 
Bonsoir ATHE RIOVELI, Deadpool_CC,

Une macro un peu plus élaborée :
VB:
Sub ImporterDonees()
Dim ListeFichier As Variant
ListeFichier = Application.GetOpenFilename(Title:="Selectionnez votre classeur", _
    FileFilter:="Fichier Excel (*.xls*),*xls*", ButtonText:="Cliquez")
If ListeFichier = False Then Exit Sub
Application.ScreenUpdating = False
With Workbooks.Open(ListeFichier)
    With .Sheets(1).[B2].CurrentRegion
        .RemoveDuplicates 1, Header:=xlNo 'supprime les doublons
        .Sort .Columns(1), xlAscending, Header:=xlNo 'tri
        .CurrentRegion.EntireRow.Copy 'copie les lignes entières
        ThisWorkbook.ActiveSheet.[A13].Insert xlDown 'insère les cellules copiées
    End With
    Application.CutCopyMode = 0
    .Close False
End With
End Sub
A+
 

Pièces jointes

Bonsoir ATHE RIOVELI, Deadpool_CC,

Une macro un peu plus élaborée :
VB:
Sub ImporterDonees()
Dim ListeFichier As Variant
ListeFichier = Application.GetOpenFilename(Title:="Selectionnez votre classeur", _
    FileFilter:="Fichier Excel (*.xls*),*xls*", ButtonText:="Cliquez")
If ListeFichier = False Then Exit Sub
Application.ScreenUpdating = False
With Workbooks.Open(ListeFichier)
    With .Sheets(1).[B2].CurrentRegion
        .RemoveDuplicates 1, Header:=xlNo 'supprime les doublons
        .Sort .Columns(1), xlAscending, Header:=xlNo 'tri
        .CurrentRegion.EntireRow.Copy 'copie les lignes entières
        ThisWorkbook.ActiveSheet.[A13].Insert xlDown 'insère les cellules copiées
    End With
    Application.CutCopyMode = 0
    .Close False
End With
End Sub
A+
 
Bonsoir Job75, Deadpool_CC,
Je tiens à vous dire un grand merci.
Le code de Job75, il copie effectivement les données en déplaçant les ligne des moyennes;
cependant, j'ai l'impression que les mises en forme; les formules du classeur ne fonctionne plus.
Je souhaite si possible un copier coller qui n'affecte pas les propriétés du classeur.
 

Pièces jointes

Effectivement vous avez créé un tableau structuré alors utilisez cette macro :
VB:
Sub ImporterDonees()
Dim ListeFichier As Variant, n&
ListeFichier = Application.GetOpenFilename(Title:="Selectionnez votre classeur", _
    FileFilter:="Fichier Excel (*.xls*),*xls*", ButtonText:="Cliquez")
If ListeFichier = False Then Exit Sub
Application.ScreenUpdating = False
With Workbooks.Open(ListeFichier)
    With .Sheets(1).[B2].CurrentRegion
        .RemoveDuplicates 1, Header:=xlNo 'supprime les doublons
        .Sort .Columns(1), xlAscending, Header:=xlNo 'tri
        n = .CurrentRegion.Rows.Count
        ThisWorkbook.ActiveSheet.Rows(13).Resize(n).Insert 'insère n lignes
        ThisWorkbook.ActiveSheet.[B13].Resize(n, .Columns.Count) = .Resize(n).Value 'copie les valeurs
    End With
    .Close False
End With
End Sub
 

Pièces jointes

Effectivement vous avez créé un tableau structuré alors utilisez cette macro :
VB:
Sub ImporterDonees()
Dim ListeFichier As Variant, n&
ListeFichier = Application.GetOpenFilename(Title:="Selectionnez votre classeur", _
    FileFilter:="Fichier Excel (*.xls*),*xls*", ButtonText:="Cliquez")
If ListeFichier = False Then Exit Sub
Application.ScreenUpdating = False
With Workbooks.Open(ListeFichier)
    With .Sheets(1).[B2].CurrentRegion
        .RemoveDuplicates 1, Header:=xlNo 'supprime les doublons
        .Sort .Columns(1), xlAscending, Header:=xlNo 'tri
        n = .CurrentRegion.Rows.Count
        ThisWorkbook.ActiveSheet.Rows(13).Resize(n).Insert 'insère n lignes
        ThisWorkbook.ActiveSheet.[B13].Resize(n, .Columns.Count) = .Resize(n).Value 'copie les valeurs
    End With
    .Close False
End With
End Sub
Bonsoir Job75,
C'est vraiment parfait. Rien à dire.
C'est exactement ce que je voulais.
Cependant, il reste encore un soucis au niveau de la macros du bouton "importer liste de classe "
Le soucis est le suivant :
- Avec ce classeur, l'utilisateur a la possibilité de créer de nouvelle classe.
- Je viens de créer une deuxième classe. le bouton "importer liste de classe " ne me permet pas d'importer la liste pour cette deuxième classe.

MON SOUHAIT :
Je souhaiterai qu'à chaque création de classe, le bouton "importer liste de classe " puisse fonctionner
comme dans le cas précédent.

J'espère avoir bien expliqué ma préoccupation.
Je vous remercie énormément, et je compte sur vous pour l'amélioration de ce classeur.
Merci
 

Pièces jointes

Vous pouvez mettre le même bouton sur chaque feuille de classe et lui affecter la même macro.

En effet la macro que j'ai donnée colle les données sur la feuille active.

Evidemment le fichier source doit être différent à chaque fois.
Bonsoir Job75.
Encore une fois, merci pour ton aide.
Je suis allé au niveau de la feuille "Modèle" et j'ai mis la macro à ce niveau.
cela fonctionne bien.
Encore une fois, MERCI A TOI.
 

Pièces jointes

- 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
2
Affichages
112
Retour