Microsoft 365 aide sur macro pour une asso

moupa

XLDnaute Junior
Bonjour le forum,

Je suis en train de travaillé pour mon club sur notre prochaine compétitions ou nous avons des inscriptions qui vont font êtes faite à partir du site helloasso, qui malheureusement pour l'instant n'a pas trop d'option sur le contrôle des licences sportives, du coup allons faire cette verification et validation a partir d'un fichier excel!
J'ai commencé à faire se fichier mais je ne suis pas assez calé pour la dernière macro et c'est pour cela que j'aurais besoin d'une petite aide :)

je vous explique donc se que j'ai déjà commencé à faire, j'ai donc deux fichiers, fichier excel pour le controle et un fichier csv qui sera extrait environ tous les deux jours suivant les inscriptions!
dans mon fichier excel il y a quatre onglet, procedure, modif (pour annotation en fin d'inscription), ctrl_inscriptions, base_inscriptions_helloasso
dans l'onglet procedure, il y a un bouton avec un userform qui permet d'importer un csv dans l'onglet base_inscriptions_helloasso et qui le tris par date croissant de la colonneA

se que je recherche c'est quand même temps cela fasse une copie de chaque nouvelle inscription dans l'ongle ctrl_inscriptions, que cela n'écrase pas les crtl qui ont été fait avant puisqu'il y aura déjà une validation faite dans la colonne N

j'espère que je me suis bien exprimer et que vous pourrez m'aide?

par avance merci

ps: j'ai transformé le fichier csv en txt (puisque impossible de telecharger sur le site un fichier csv!)
 

Pièces jointes

  • 2023_fichier_inscriptions_megalo_hello asso.xlsm
    42.2 KB · Affichages: 14
  • test-import-megalo-night-2023.txt
    1 012 bytes · Affichages: 11

moupa

XLDnaute Junior
Bonjour(juste en passant)
sinon on fait simple
je vire la feuille procedure
je vire la feuille de transfert
je vire ton userform
je met un bouton dans la feuille cl inscription
j'appuie sur le bouton et il fait tout
  1. dialogue choix de fichier
  2. selection du fichier
  3. récupération de la table
  4. ajout dans le tableau
  5. suppression des doublons
  6. tri alpha (nom et prenom)
Dis moi patricktoulon est ce que se serait possible d'avoir le tri par date en croissant?

j’avoue que je n'ai pas entièrement tout testé!

Autre question j'ai vu que dans la macro il y a une modification avec les caractères, si j'en ai d'autres à rajouter (par exemple j'ai une Anaïs qui vient de s'inscrire) je peux continuer à la suite?
 

moupa

XLDnaute Junior
Bonjour, après quelque test j'ai un soucis avec le format date qui jusqu’à la moitie du mois est en mm/jj/aaaa et ensuite en jj/mm/aaaa et si possible avec les classement par date de la plus ancienne à la plus récente!
@patricktoulon tu pourrais me rajouter cela a la place du tri nom prénom?
par avance merci
 

patricktoulon

XLDnaute Barbatruc
re
Bonjour
change la tri pour celle ci
VB:
Sub tri()
    Dim derlig
     derlig = Feuil2.Cells(Rows.Count, "A").End(xlUp).Row
   With Feuil2.Sort
        .SortFields.Clear
        .SortFields.Add Key:=Range("A2:A" & derlig), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        .SetRange Range("A1:N" & derlig)
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub
 

patricktoulon

XLDnaute Barbatruc
pour les date il faut les standardiser
pour les caractères speciaux ajoute dans rp1 et rp2
VB:
Sub Msg()
    Dim t, t2(), fichier, lines$, col&, x&, I&, C&, rp1, rp2
    
    rp1 = Array("é")
    rp2 = Array("é")
    
    fichier = Application.GetOpenFilename("Fichiers Csv,*.csv")
    
    If fichier = False Then Exit Sub
    
    x = FreeFile: Open fichier For Input As #x: lines = Input$(LOF(x), #x): Close #x
    
    For p = 0 To UBound(rp1): lines = Replace(lines, rp1(p), rp2(p)): Next
    
    t = Split(Left(lines, Len(lines) - 2), vbCrLf)
    ReDim t2(0 To UBound(t), 0 To 100)

    For I = 1 To UBound(t)
        q = Split(t(I), ";")
        For C = 0 To UBound(q)
            If C = 8 Or C = 0 Then t2(I - 1, C) = CDate(Trim(q(C))) Else t2(I - 1, C) = q(C)
            If C > col Then col = C
        Next
    Next
    Feuil2.Cells(Rows.Count, 1).End(xlUp).Offset(1).Resize(UBound(t2), col + 1) = t2
    Feuil2.Range("A:N").RemoveDuplicates Columns:=Array(3, 4), Header:=xlYes
    tri
End Sub

Sub tri()
    Dim derlig
     derlig = Feuil2.Cells(Rows.Count, "A").End(xlUp).Row
   With Feuil2.Sort
        .SortFields.Clear
        .SortFields.Add Key:=Range("A2:A" & derlig), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        .SetRange Range("A1:N" & derlig)
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub
 

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 215
Messages
2 086 329
Membres
103 183
dernier inscrit
karelhu35