Pouvez vous m'aider à modifier mon code Macro

Pickis

XLDnaute Nouveau
Je viens de faire ma première macro tout seul comme un grand :) .
J'y connais pas grand-chose.
Je vous ai mis en pièce jointe le fichier car je voudrais modifier dessus quelques trucs.
Mes tableaux de liste de classes seront variables je n'aurai jamais le même nombre d'élèves.
Que faut-il mettre dans le code pour qu'Excel puisse sélectionner automatiquement du 1er eleve au dernier, et qu'il applique à cette sélection une formule.
En gros comment passer de ça ;
Capture d’écran 2020-01-14 à 18.33.16.png

à ca
Capture d’écran 2020-01-14 à 18.34.32.png

de façon automatique.
 

Pièces jointes

  • Liste Eleves Step1.xlsm
    15.2 KB · Affichages: 30

Pickis

XLDnaute Nouveau
On est pas mal du tout.
Effectivement la colonne div du coup plus besoin, car il faudrai que la feuille se nomme du nom de la classe (en gros que le nom de la feuille soit le nom de la colonne C).
Comme ça je peux passer à l'étape 3 qui sera la derniére pour se module.
Je voudrai extraire les classes en fichier .txt
En gros me retrouver avec ca :
Capture d’écran 2020-01-17 à 11.12.30.png
 

Pickis

XLDnaute Nouveau
On vraiment pas mal du tout.
Peut on faire sauté la Case Nom Prénom pour que l'élève 1 soit en case A1?
Et ensuite peut on arriver faire enregistrer les fichiers de façon automatique en mode txt ?

Ok pour les étapes j ai compris désolé :) , perso comme j y connais rien ça me permet d y voir un peu plus clair par étapes.
En tout cas j 'apprécie énormément le fait que tu me files la main.
 

job75

XLDnaute Barbatruc
Si le but est de créer un fichier Texte (.txt) pour chaque classe pas besoin d'étapes intermédiaires.

Utilisez directement le fichier .xlsm joint et cette macro du bouton :
VB:
Private Sub CommandButton1_Click()
Dim tablo, ub&, d As Object, i&, a, j%, resu$(), classe, n&
tablo = [A1].CurrentRegion.Resize(, 3) 'matrice, plus rapide
ub = UBound(tablo)
'---liste des classes---
Set d = CreateObject("Scripting.Dictionary")
For i = 2 To ub
    If tablo(i, 1) <> "" Then d(tablo(i, 3)) = ""
Next i
If d.Count = 0 Then Exit Sub 'tableau vide, sécurité
'---création des fichiers txt---
a = d.keys
Application.ScreenUpdating = False
Application.DisplayAlerts = False
With Workbooks.Add(xlWBATWorksheet) 'nouveau document
    For j = 0 To UBound(a)
        ReDim resu(1 To ub, 1 To 1)
        classe = a(j)
        n = 0
        .Sheets(1).Cells.Clear 'RAZ
        For i = 2 To ub
            If tablo(i, 3) = classe Then
                n = n + 1
                resu(n, 1) = tablo(i, 1) & " " & tablo(i, 2)
            End If
        Next i
        .Sheets(1).Cells(1).Resize(n) = resu 'restitution
        .SaveAs ThisWorkbook.Path & "\" & classe, xlText
    Next j
    .Close False
End With
End Sub
Les fichiers Texte sont les listes des noms et prénoms concaténés.

Edit : les fichiers atterrissent où se trouve le fichier de la macro (le bureau par exemple).
 

Pièces jointes

  • Liste Eleves(1).xlsm
    24.1 KB · Affichages: 5
Dernière édition:

Pickis

XLDnaute Nouveau
Bonjour.
vous m'aviez aidé à créer cette macro et je vous en remercie.
Cependant j'ai une petite modification à y ajouter...le cahier des charges a évolué...o_O
Serait-t-il possible avant de compiler le fichier en .TXT, d'avoir le choix de choisir de séparer le nom et le prénom soit par un "." ou un " " ( soit par un point ou un espace).
Je vous joins les élément pour voir si c'est possible.
- Le dossier avec la macro : Générer liste élèves.
- le dossier a compilé : liste élèves
 

Pièces jointes

  • Générer Liste Élèves.xlsm
    29.5 KB · Affichages: 3
  • Liste Eleves.xlsx
    9.1 KB · Affichages: 4

Discussions similaires

Statistiques des forums

Discussions
312 271
Messages
2 086 687
Membres
103 371
dernier inscrit
jade.gerbe14