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
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 SubBonsoir
Bonsoir h2so4
Toujours dans la simplicité (
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 SubBonsoir,
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
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 Subyou're welcome jtek. et merci à banzaï et h2so4 car je continue d'apprendre en les imitants