Comment distribuer élèves dans la feuil examen selon ordre spécifique

23no-examen.xlsx (17.00 Ko)

Bonsoir Forum ,

SVP

comment distribuer les élèves dans la feuille examen :( formule ou code vba) et les donner des numeros examen selon la façon de prendre un élève de la classe 1, un autre de la classe 2, un troisième de classe 3 et un 4 eme de la classe 1, un 5 eme de la classe 2, un 6 eme de la classe 3 et le 7 eme de la classe 4, Et donc, dans cet ordre, jusqu'au dernier élève.

Merci infiniment

Bonjour

Si tu peux installer l'add on PowerQuery (intégré à Excel à partir de 2016, en add on sur 2013) une solution PowerQuery

35no-examen-pq.xlsx (31.73 Ko)

Bonsoir 78chris, Bonsoir Forum

Merci 78chris

svp comment tu a fait ce classement en powerQuery

Malheureusement, je n'en ai aucune idée PowerQuery

RE

Il n'est jamais trop tard pour s'y mettre (il existe depuis 12 ans, depuis la version 2010 d'Excel)

https://www.microsoft.com/fr-FR/download/details.aspx?id=39379

Tu n'as pas dit si le résultat correspond à ta demande...

Oui le résultat correspond à ma demande.

Et je travaille sur office 2019

Bonsoir à tous,

Une autre approche Power Query (si j'ai bien compris le besoin....) :

let
    Source = Excel.CurrentWorkbook(),
    Filtre = Table.SelectRows(Source, each Text.StartsWith([Name], "Classe")),
    Expand = Table.ExpandTableColumn(Filtre, "Content", {"NO", "Nom élèves"}, {"NO", "Nom élèves"}),
    Type = Table.TransformColumnTypes(Expand,{{"NO", Int64.Type}}),
    Tri_Num_Classe = Table.Sort(Type,{{"NO", Order.Ascending}, {"Name", Order.Ascending}}),
    Idx_Examen = Table.AddIndexColumn(Tri_Num_Classe, "Num Examen", 1, 1, Int64.Type),
    ColPermut = Table.ReorderColumns(Idx_Examen,{"Num Examen", "NO", "Nom élèves", "Name"}),
    ColSupp = Table.RemoveColumns(ColPermut,{"NO"})
in
    ColSupp

RE

Une autre approche Power Query (si j'ai bien compris le besoin....) :

Non il faut une classe 4 une fois sur 2...

@hicham2610 : dans ce cas tu as déjà PowerQuery

Pour visualiser la requête : Données, Obtenir des données, Lancer POwerQuery

Bonsoir à tous !

RE

Une autre approche Power Query (si j'ai bien compris le besoin....) :

Non il faut une classe 4 une fois sur 2...

Arf !

Bonjour à tous,

Pour le "fun", et en croisant les doigts, version amendée :

let
    Source = Excel.CurrentWorkbook(),
    Filtre = Table.SelectRows(Source, each Text.StartsWith([Name], "Classe")),
    Expand = Table.ExpandTableColumn(Filtre, "Content", {"NO", "Nom élèves"}, {"NO", "Nom élèves"}),
    ValRempl = Table.ReplaceValue(Expand, each [NO], each if [Name]="Classe4" then [NO]*2 else [NO],Replacer.ReplaceValue,{"NO"}),
    Tri = Table.Sort(ValRempl,{{"NO", Order.Ascending}, {"Name", Order.Ascending}}),
    Ajt_NumExamen = Table.AddIndexColumn(Tri, "Num Examen", 1, 1, Int64.Type),
    ColSuppAutres = Table.SelectColumns(Ajt_NumExamen,{"Nom élèves", "Name", "Num Examen"}),
    Majuscules = Table.TransformColumns(ColSuppAutres,{{"Nom élèves", Text.Upper, type text}}),
    ColPermut = Table.ReorderColumns(Majuscules,{"Num Examen", "Nom élèves", "Name"})
in
    ColPermut

Bonjour

Bonjour à tous,

Pour le "fun", et en croisant les doigts, version amendée...

Nickel chrome ! Et bien plus simple

J'ai d'ailleurs vu que j'avais fait une petite erreur sur un index en comparant nos résultats...

Mais hicham 2610 (qui n'a toujours pas mis son profil à jour) semble scotché au VBA https://forum.excel-pratique.com/excel/generateur-numero-d-examen-et-salle-examen-176694#p1096760

Bonjour à tous de nouveau !

Mais hicham 2610 (qui n'a toujours pas mis son profil à jour) semble scotché au VBA

Certes.... mais nous partageons une autre vision. C'est une réelle valeur ajoutée.

Je vous remercie de ce retour.

Bonjour

j'ai répondu par malheureusement je n'ai aucune idée PowerQuery

Mieux formules ou vba excel

Merci infinment

RE

j'ai répondu par malheureusement je n'ai aucune idée PowerQuery

Il y a peu, nombre d'entre nous ne connaissaient pas non plus et nous avons appris en nous entraidant

Nous sommes de plus en plus nombreux... Pourquoi ne pas essayer ?

RE

Et maintenant tu cross postes...

Tu te focalises sur VBA disant que tu ne connais pas PowerQuery mais à l'évidence pas VBA non plus.

Bien dommage...

Bonjour 78chris, Bonjour Forum

Merci 78chris pour ton aide

J'ai réussi à créer des codes

Sub import()
Dim ws As Worksheet
Dim lr As Integer
Application.ScreenUpdating = False
Sheets("Examen").Range("a2:E100000").ClearContents
 For Each ws In ThisWorkbook.Worksheets
  If ws.Name <> "Examen" Then
    With ws
     .Activate
      lr = .Cells(Rows.Count, 1).End(xlUp).Row
       .Range("a2:c" & lr).Copy
    With Sheets("Examen")
     .Range("a" & .Cells(Rows.Count, 1).End(xlUp).Row + 1).PasteSpecial xlPasteValues

     End With
       End With
        End If
         Next

 Sheets("Examen").Activate: Range("a1").Select
  Application.CutCopyMode = False
   Application.ScreenUpdating = True
End Sub

Sub dest()
'
' dest Macro
'

'
    Range("A1:E1").Select
    Selection.AutoFilter
    ActiveWorkbook.Worksheets("Examen").AutoFilter.Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Examen").AutoFilter.Sort.SortFields.Add2 Key:= _
        Range("A1"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    With ActiveWorkbook.Worksheets("Examen").AutoFilter.Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    Worksheets("Examen").AutoFilterMode = False
End Sub

Sub no_examen()

' no_examen Macro

Dim DL As Long

DL = Range("B" & Rows.Count).End(xlUp).Row

    Range("D2").Select
    ActiveCell.FormulaR1C1 = "1"
    Range("D3").Select
    ActiveCell.FormulaR1C1 = "2"
    Range("D2:D3").Select
    Selection.AutoFill Destination:=Range("D2:D" & DL)

    Range("G1").Select
End Sub

Sub numérosalleexamen()
'
' numérosalleexamen Macro
DL = Range("B" & Rows.Count).End(xlUp).Row

    Range("O2").Select
    ActiveCell.FormulaR1C1 = "=IF(RC[-11]="""","""",RC[-11]/R2C9)"
    Range("O2").Select
    Selection.AutoFill Destination:=Range("O2:O" & DL), Type:=xlFillDefault
    Range("O2:O" & DL).Select
    Application.Goto Reference:="R2C15"
    Range("E2").Select
    ActiveCell.FormulaR1C1 = "=IF(RC[10]="""","""",ROUNDUP(RC[10],0))"
    Range("E2").Select
    Selection.AutoFill Destination:=Range("E2:E" & DL), Type:=xlFillDefault
    'Range("E2:E" & DL).Select
    Range("I2").Select
End Sub
Rechercher des sujets similaires à "comment distribuer eleves feuil examen ordre specifique"