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

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

  • GestNoteAthe(Demo1).xlsm
    166.7 KB · Affichages: 4
  • LISTE DE CLASSE A IMPORTER.xlsx
    8.2 KB · Affichages: 3

Deadpool_CC

XLDnaute Accro
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
 

job75

XLDnaute Barbatruc
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

  • GestNoteAthe(Demo1).xlsm
    185.4 KB · Affichages: 8
  • LISTE DE CLASSE A IMPORTER.xlsx
    8.5 KB · Affichages: 2

ATHE RIOVELI

XLDnaute Occasionnel
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+
 

ATHE RIOVELI

XLDnaute Occasionnel
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

  • GestNoteAthe(Demo1).xlsm
    165.4 KB · Affichages: 1
  • LISTE DE CLASSE A IMPORTER.xlsx
    8.2 KB · Affichages: 1

job75

XLDnaute Barbatruc
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

  • GestNoteAthe(Demo1).xlsm
    185.5 KB · Affichages: 3
  • LISTE DE CLASSE A IMPORTER.xlsx
    8.5 KB · Affichages: 1

ATHE RIOVELI

XLDnaute Occasionnel
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

  • GestNoteAthe(Demo1) (1).xlsm
    200.1 KB · Affichages: 4
  • LISTE DE CLASSE A IMPORTER.xlsx
    8.2 KB · Affichages: 3

ATHE RIOVELI

XLDnaute Occasionnel
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

  • GestNoteAthe(Demo1) (1) (1).xlsm
    205.6 KB · Affichages: 10

Discussions similaires

Réponses
29
Affichages
1 K

Statistiques des forums

Discussions
315 091
Messages
2 116 109
Membres
112 662
dernier inscrit
lou75