Copier tableau en dessous d'un autre

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 !

Baptaber

XLDnaute Nouveau
Bonjur à tous ! Alors voilà je suis bloqué, 'ai un code vba permettant de prendre les présences d'élèves. Ces élèves sont classés dans 6 groupes différents (A à F), et lorsque la présence va être prise l'utilisateur doit sélectionner les groupes pour lesquels il veut prendre les présences. Les élèves seront donc copiés dans une feuille annexe appelée "Eleves". Mon problème est : si je sélectionne plus qu'un groupe, au lieu d'avoir des élèves qui se copient les uns en dessous des autres : ex
eleve1 A
eleve2 A
eleve3 A
eleve4 A
eleve5 A
eleve1 C
eleve2 C
eleve3 C

ils vont se copier par-dessus les autres :
eleve1 C
eleve2 C
eleve3 C
eleve4 A
eleve5 A

J'espère que vous me comprendrez... Merci !
Mon code :


If grpa.Value = True Then
Sheets("1Bi A").Activate
Range("GroupeA").Select
Selection.Copy
Sheets("Eleves").Select
Range("Tableau41[NOM]").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Selection.Copy
PrisePres.boxEt.Value = ActiveCell.Offset(0, 0) & " " & ActiveCell.Offset(0, 1)
End If

If grpb.Value = True Then
Sheets("1Bi B").Activate
Range("GroupeB").Select
Selection.Copy
Sheets("Eleves").Select
Range("Tableau41[NOM]").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Selection.Copy
PrisePres.boxEt.Value = ActiveCell.Offset(0, 0) & " " & ActiveCell.Offset(0, 1)
End If

If grpc.Value = True Then
Sheets("1Bi C").Activate
Range("GroupeC").Select
Selection.Copy
Sheets("Eleves").Select
Range("Tableau41[NOM]").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Selection.Copy
PrisePres.boxEt.Value = ActiveCell.Offset(0, 0) & " " & ActiveCell.Offset(0, 1)
End If

If grpd.Value = True Then
Sheets("1Bi D").Activate
Range("GroupeD").Select
Selection.Copy
Sheets("Eleves").Select
Range("Tableau41[NOM]").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Selection.Copy
PrisePres.boxEt.Value = ActiveCell.Offset(0, 0) & " " & ActiveCell.Offset(0, 1)
End If

If grpe.Value = True Then
Sheets("1Bi E").Activate
Range("GroupeE").Select
Selection.Copy
Sheets("Eleves").Select
Range("Tableau41[NOM]").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Selection.Copy
PrisePres.boxEt.Value = ActiveCell.Offset(0, 0) & " " & ActiveCell.Offset(0, 1)
End If

If grpf.Value = True Then
Sheets("1Bi F").Activate
Range("GroupeF").Select
Selection.Copy
Sheets("Eleves").Select
Range("Tableau41[NOM]").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Selection.Copy
PrisePres.boxEt.Value = ActiveCell.Offset(0, 0) & " " & ActiveCell.Offset(0, 1)
End If
 
Bonjour,

Que sont les objets 'grpa' 'grpb' etc... des checkbox ou optionbutton de userform ? ou autre chose ?
Idem pour 'PrisePres' koikess?

Avec un classeur exemple anonymisé se serait plus facile.

Cordialement
 
Re,

Sous toutes réserves, car si c'est fatiguant pour vous de joindre un classeur exemple, qu'en est-il pour vous répondre que de naviguer dans le vide.
Aussi si les lignes ci-dessous ne fonctionnent pas, je n'assurerai pas l'après-vente.
VB:
Sub truc()
    Dim destination As Range
    For Each lettre In Array("A", "B", "C", "D", "E", "F")
        If Me.Controls("grp" & lettre).Value = True Then
            With Sheets("Eleves")
                Set destination = .Cells(.Rows.Count, .Range("Tableau4[Nom]").Column).End(xlUp).Offset(1)
            End With
            Sheets("1Bi " & lettre).Range("Groupe" & lettre).Copy destination
        End If
    Next
End Sub
Bonne cogitation
 
Dernière édition:
Bonjour,

Ben ça va mieux comme ça, merci. Je ne pouvais pas deviner que vos plages étaient des tableaux excel (ListOjects).
Par contre je n'ai pas bien compris ce qu'il fallait mettre dans 'PrisePres.boxEt'. S'il s'agit de la liste des élèves qui vient d'être copiée, une listbox serait plus indiquée.

VB:
Private Sub CommandButton2_Click()
    Dim destination As Range
    For Each lettre In Array("A", "B", "C", "D", "E", "F")
        If Me.Controls("grp" & lettre).Value = True Then
            With Sheets("Eleves")
                Set destination = .Cells(1, 1).ListObject.ListRows.Add().Range
            End With
            Sheets("1Bi " & lettre).ListObjects("Groupe" & lettre).DataBodyRange.Copy destination
        End If
    Next
    
PrisePres.Show
Prises.Hide

End Sub

Bonne cogitation
 
Super, merci, ça fonctionne !!!!! Dans boxEt, les étudiants doivent apparaître (ceux qui auront été placés dans la feuille des élèves), leur nom et prénom et la on doit appuyer sur "Présent" ou "Absent" et son nom s'écrira dans la feuille du cours sélectionné avec 1 pour l'appui du bouton présent et 0 pour l'appui du bouton absent. J'espère que vous m'avez compris ! Merci 🙂
 
- 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
214
Réponses
10
Affichages
455
Réponses
18
Affichages
134
  • Question Question
Microsoft 365 Probléme VBA
Réponses
8
Affichages
213
Réponses
4
Affichages
332
Réponses
1
Affichages
465
Retour