Copier tableau en dessous d'un autre

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
 

Hasco

XLDnaute Barbatruc
Repose en paix
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
 

Hasco

XLDnaute Barbatruc
Repose en paix
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:

Hasco

XLDnaute Barbatruc
Repose en paix
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
 

Baptaber

XLDnaute Nouveau
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 :)
 

Discussions similaires

Réponses
12
Affichages
478

Statistiques des forums

Discussions
314 732
Messages
2 112 285
Membres
111 498
dernier inscrit
romain36