Tableau Appel pour une version Papier

Bonjour,

Je suis sur la création d'un tableau pour une version papier, je vous remercie de votre aide que vous m'apporterai.

Je voudrai savoir comment créer une nouvelle feuille "Classe" à l'aide de ces données dans cette feuille nommée "Liste élèves".suite à une extraction à partir d'un logiciel .

Ma manipulation est la suivante

1) je sélectionne les élèves d'une classe,

exemple : ligne A14 à I36 (toujours sur la feuille "Liste élèves")

2) je copie puis colle dans la feuille "Accueil", sauf que je ne voudrai pas que le n° de la classe s'affiche,dans la colonne E, au mieux elle est supprimer automatiquement, ça m'arrangerait beaucoup

3) Est-ce possible que dans cette feuille accueil, après collage, je puisse avoir un tri alphabétique automatique

Ensuite

Dans les colonnes F, G, H, je voudrai qu'une macro puisse convertir ou abréger les mots suivants:, dès que le collage est fait (si cela est possible)

Colonne F le mot "ANGLAIS LV1" soit remplacer par "AGL1"

Colonne G les mots

  • "ESPAGNOL LV2" remplacés par "ESP"
  • "ALLEMAND LV2 remplacés par "ALL3

Colonne G et H, les mots :

  • "ACT. LIEES PROJ.ETAB" remplacés ATPROJ
  • "LATIN" par LAT

Colonne H et I les mots:

  • "ANGLAIS LV SECTION" par"EURO"
  • "DECOUV .PROFESS. 3H" par "DECP3"
  • " ATELIER MATHEMAT." par "ATMAT"

4) Je souhaiterai, après avoir sélectionné mes données de la colonne A à I35 , cliquer sur le bouton "Créer une nouvelle feuille à partir de la liste d'élèves présente ci-contre" , qui crée une nouvelle feuille classe en s'appuyant de la feuille "Modèle", mon curseur devrait revenir sur la colonne L6 (nom de la feuille classe créede) dans la feuille "Accueil".

Je vous remercie de l'aide que vous pourrez m'apporter , je vous avoue que je sature et j'ai encore du mal avec le VBA, mais j'essaye au maximum, de pouvoir le faire moi-même merci infiniment

Sincèrement Merci

bonsoir,

une proposition de macro, selectionner les élèves avec leurs options et lancer la macro "creeclasse" via alt-F8

Sub creaclasse()
    Selection.Copy Worksheets("accueil").Range("A2")
    classe = Selection.Range("E2")
    ne = Selection.Rows.Count
    With Worksheets("accueil")
        .Columns("e").ClearContents
        .Columns("f").Replace "ANGLAIS LV1", "AGL1"
        .Columns("g").Replace "ESPAGNOL LV2", "ESP"
        .Columns("g").Replace "ALLEMAND LV2", "ALL3"
        .Columns("G:H").Replace "ACT. LIEES PROJ.ETAB", "ATPROJ"
        .Columns("G:H").Replace "LATIN", "LAT"
        .Columns("H:I").Replace "ANGLAIS LV SECTION", "EURO"
        .Columns("H:I").Replace "DECOUV .PROFESS. 3H", "DECP3"
        .Columns("H:I").Replace " ATELIER MATHEMAT.", "ATMAT"
        Worksheets("modèle").Copy after:=Worksheets(Worksheets.Count)
        Set wsc = Worksheets(Worksheets.Count)
        wsc.Name = classe
        wsc.Unprotect
        .Range("A2:I" & ne + 1).Copy wsc.Range("A2")
    End With
End Sub

Bonsoir

Bonsoir h2so4

Toujours dans la simplicité ( ) ma version

Je pars de la feuille "Liste élèves" pour faire la page des élèves sans passer par la feuille "Accueil"

Bonjour, j'ai pas trop compris pourquoi déplacer les informations sur la feuille accueil puis les redéplacer après. Du coup j'ai shunté (a tord?) cette étape. Dans votre feuille liste elève, en A2 vous choisissez votre classe et vous cliquez sur importer.

Sub Macro1()
    Application.ScreenUpdating = False
    Dim c As Range, i%
    With Feuil5
        .Unprotect
        .Copy after:=Sheets(Sheets.Count)
    End With
    Feuil5.Protect
    Sheets(Sheets.Count).Name = Feuil2.[a2]
    Feuil2.Activate
    Feuil2.Range("A4:I" & Feuil2.Range("a" & Rows.Count).End(xlUp).Row).AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Feuil2.Range("A1:a2"), CopyToRange:=Sheets(Sheets.Count).Range("a2"), Unique:=False
    Sheets(Sheets.Count).Activate
    With Sheets(Sheets.Count)
        .Rows(2).Delete shift:=xlUp
        .Columns(5).Delete shift:=xlToLeft
        For Each c In .Range("e2:m" & .Range("a" & Rows.Count).End(xlUp).Row)
            For i = 2 To Feuil1.[a1].CurrentRegion.Rows.Count
                If c = Feuil1.Range("a" & i) Then c = Feuil1.Range("b" & i)
            Next
        Next
    End With
End Sub

Bonsoir,

Après avoir testé les deux versions de Banzai64 et celle de Force Rouge, toutes les deux sont trop trop géniales, franchement je suis abasourdie , je ne sais que vous remercier sincèrement

Merci aussi à h2so4, qui m'a inspiré avec ses codes d'instructions

Je clôture ce sujet et remercie encore et encore ce forum.

Vous êtes trop forts et géniaux

Bah...du coup je poste quand même le même fichier mais avec un code un peu moins "indigeste" . Pour toi Jtek cela ne change rien le fichier fait la même chose.

Option Base 1
Sub classe()
    Dim a, aa, b(), n, nn, col%, i%, c As Range
    col = Feuil2.[a1].CurrentRegion.Columns.Count

    a = Feuil2.[a1].CurrentRegion
    aa = Feuil2.[k1]
    ReDim b(UBound(a), col)
    For i = 1 To UBound(a)
        If a(i, 5) = aa Then
            n = n + 1
            For nn = 1 To col
                b(n, nn) = a(i, nn)
            Next
        End If
    Next

    Sheets.Add after:=Sheets(Sheets.Count)
    Feuil5.Cells.Copy Sheets(Sheets.Count).Cells
    Sheets(Sheets.Count).[a2].Resize(UBound(b), col) = b

    With Sheets(Sheets.Count)
        .Rows(2).Delete shift:=xlUp
        .Columns(5).Delete shift:=xlToLeft
        For Each c In .Range("e2:m" & .Range("a" & Rows.Count).End(xlUp).Row)
            For i = 2 To Feuil1.[a1].CurrentRegion.Rows.Count
                If c = Feuil1.Range("a" & i) Then c = Feuil1.Range("b" & i)
            Next
        Next
    End With
End Sub

you're welcome jtek. et merci à banzaï et h2so4 car je continue d'apprendre en les imitants

Rechercher des sujets similaires à "tableau appel version papier"