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: 16
  • test-import-megalo-night-2023.txt
    1 012 bytes · Affichages: 12

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
 

moupa

XLDnaute Junior
bonjour le forum,

Je reviens vers vous car prochainement le site Hello asso va arrêter l'export du format csv actuel ( merci por nous) et il va donc y avoir un nouveau format csv ou xlsx !

Comme @patricktoulon m'avait super bien fait mon besoin, j'ai essayer de modifier sa macro pour l'adapter au nouveau format et changer les colonne puisqu’il y en a plus maintenant (ou prochainement)!
Mais voilà comme je ne maitrise pas comme vous le code j'ai un bug!
Maintenant sur hello asso il y a aussi la possibilité avoir un fichier xlsx qui éviterd'avoir des soucis avec le format des lettres par apport au csv,

Est il possible d'avoir un p'tit coup de main ou plutôt une aide pour résoudre mon fichier, donc soit dans la continuité de faire l'import d'un csv que l'on choisi ou l'import du xlsx?

par avance merci de votre aide
cdlt Pascal

Ps: j'ai changer l'extention du fichier csv en txt car sinon je ne pouvais pas vous joindre de csv!
 

Pièces jointes

  • 2024_fichier_inscriptions_megalo_TEST-V1.xlsm
    31.8 KB · Affichages: 4
  • export-megalo-night-2024-course-orientation-tours-sud-11_10_2024-24_10_2024.xlsx
    10.1 KB · Affichages: 4
  • export-megalo-night-2024-course-orientation-tours-sud-11_10_2024-24_10_2024.txt
    3.6 KB · Affichages: 4

patricktoulon

XLDnaute Barbatruc
Bonjour
qui peut le plus peut le moins dans 95% des cas ;)
à partir de maintenant, tu pourra ouvrir aussi bien les .csv que les .txt ou les .xlsx
le travail de rapatriement des données sera le même
voila ;)
 

Pièces jointes

  • 2024_fichier_inscriptions_megalo_TEST-V1.xlsm
    32.1 KB · Affichages: 5

patricktoulon

XLDnaute Barbatruc
et au cas ou !!! ; tu changerais encore l'ordre des colonnes ou a"jouterais des colonnes avec date
on remplace une ligne par une autre
celle ci
VB:
 'If C = 1 Or C = 16 Then t2(I - 1, C) = CDate(Trim(q(C))) Else t2(I - 1, C) = q(C)
par celle là
VB:
 If IsDate(Left(Trim(q(C)), 10)) Then t2(I - 1, C) = CDate(Trim(q(C))) Else t2(I - 1, C) = q(C)
et tu n'aura plus de soucis ;)
 

Discussions similaires

Statistiques des forums

Discussions
315 098
Messages
2 116 191
Membres
112 679
dernier inscrit
Yupanki