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

bof

XLDnaute Occasionnel
Bonjour,
une solution...
VB:
Private Sub CommandButton2_Click()
  Dim wkb As Workbook, sh As Worksheet, Arr
  nf = Application.GetOpenFilename("Fichiers Csv,*.csv")
  If Not nf = False Then
    Set sh = ThisWorkbook.Sheets("base_inscriptions_helloasso")
    Set wkb = Workbooks.Open(Filename:=nf, Origin:=xlWindows, Local:=True)
    Sheets(1).UsedRange.Copy sh.Range("A1")
    sh.Cells(14).Delete
   wkb.Close SaveChanges:=False
  End If
  trier_base_inscroptions_helloasso
  Arr = sh.Range("A1").CurrentRegion.Value
 Sheets("crtl_inscriptions").Range("A1").Resize(UBound(Arr), UBound(Arr, 2)) = Arr
  Unload Me
End Sub
A+
 

moupa

XLDnaute Junior
Hello Bof, le forum,

Je viens de voir qu'il y avait une petite erreur surement de incompréhension par apport à ma demande ou sur la phase finale de la macro je demandais :
« Ce que je recherche c'est quand même temps cela fasse une copie de chaque nouvelle inscription dans l'onglet 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 »

Actuellement cela recopie la totalité des colonnes de A à M de l’onglet base_inscriptions_helloasso dans l’onglet ctrl_inscriptions alors que je voudrais que rajoute SEULEMENT les lignes d’inscriptions supplémentaires sans écraser celles qui ont déjà été importées avant.

Tout simplement parce que des petits malins ne se sont pas inscrits correctement et que si j’ai fait des modifications dans l’onglet ctrl_inscriptions, c’est que la nouvelle importation n’écrase pas mon travail.

Par avance merci de votre aide

pascal
 

bof

XLDnaute Occasionnel
Bonjour,
Essaie comme ça :
VB:
Private Sub CommandButton2_Click()
  Dim wkb As Workbook, sh As Worksheet, Arr, ArrC
  nf = Application.GetOpenFilename("Fichiers Csv,*.csv")
  If Not nf = False Then
    Set sh = ThisWorkbook.Sheets("base_inscriptions_helloasso")
    ArrC = Feuil2.Range("A1").CurrentRegion.Value
    Set wkb = Workbooks.Open(Filename:=nf, Origin:=xlWindows, Local:=True)
    Sheets(1).UsedRange.Copy sh.Range("A1")
    sh.Cells(14).Delete
   wkb.Close SaveChanges:=False
  End If
  trier_base_inscroptions_helloasso
  Arr = sh.Range("A1").CurrentRegion.Value
  Feuil2.Range("A1").Resize(UBound(Arr), UBound(Arr, 2)) = Arr
  Feuil2.Range("A1").Resize(UBound(ArrC), UBound(ArrC, 2)) = ArrC
  Unload Me
End Sub

Tu espères avoir combien d'inscriptions ? (environ... plusieurs centaines, Plus d'un millier ?)
A+
 

moupa

XLDnaute Junior
bonjour BOF,

j'ai donc collé ton code dans mon userform et j'ai fais un test en suppriment mes 5 dernières lignes de l'onglet ctrl_inscription et voici se que je trouve:
  1. l'import se fait bien dans l'onglet-> base_inscriptions_helloasso
  2. le tri se fait bien dans l'onglet ->base_inscriptions_helloasso
  3. Mais ensuite cela ne copie pas les 5 dernières lignes dans l'onglet ->ctrl_inscription

en allant plus loin dans le test et en supprimant toutes les lignes de l'onglet ctrl_inscriptions, en réalité rien ne se copie dans cet l'onglet!

je te met les deux derniers fichiers pour que tu puisse voir (transformation du fichier cvs en txt pour pouvoir déposer le fichier sur le forum)
 

Pièces jointes

  • 2023_fichier_inscriptions_megalo_v4-test.xlsm
    557.4 KB · Affichages: 2
  • 2023_11_16_megalo-night_test.txt
    9.1 KB · Affichages: 4

bof

XLDnaute Occasionnel
Non mais ce que tu m'envoies n'a aucun rapport avec le classeur du début !
L'onglet ctrl_inscription est vide et les colonnes ont changé
La macro est prévue pour ajouter des lignes à l'onglet ctrl_inscription, tout ce que tu supprimes ne sera pas remis à jour.
Comprend bien :
Tout se qui existe dans cet onglet est préservé et mémorisé.
Tout se qui se trouve dans base_inscriptions_helloasso est alors versé dans ctrl_inscription et écrase l'existant.
Ensuite le programme restitue ce qui a été préservé et mémorisé. Donc ce qui a été effacé est effacé à nouveau...
Tu ne peux tester le programme qu'avec de nouvelles données dans base_inscriptions_helloasso pas en supprimant des données de ctrl_inscription.
A+
 

moupa

XLDnaute Junior
re, désolé pour mes incompréhensions, mais j'espère avoir compris!

pour répondre à tes questions, effectivement tu n'avais pas la totalité du fichier, ensuite pour les colonnes elles ont changés car lors de nos tests le site hello n'était pas actif avec le paiement et quand nous avons activé cela il a rajouter des colonnes!

Bon le seul hic, c'est que je ne souhaitais pas l'écrasement de l'existant dans l'onglet ctrl_inscriptions, car dans se qu'il y a dedans j'aurais des modifications a faire, par exemple des petits malins qui ont décidés de faire une équipe au lieu de deux, ou alors que je me retrouve avec deux noms d'équipes identiques, du coup quand je modifie cela et bien à la prochaine importation se que j'ai fait est à refaire!!

crois tu que cela soit possible?
 

bof

XLDnaute Occasionnel
Mais NON ! Tu lis ce que je t'écris ?
Auparavant ce que tu avais fait dans ctrl_inscription a été mémorisé.
Tout se qui se trouve dans base_inscriptions_helloasso est alors versé dans ctrl_inscription et écrase l'existant.
Puis ce qui a été mémorisé de ton travail précédent est alors restitué. et écrase à nouveau les premières lignes.
Donc tu as bien les nouvelles lignes plus les lignes modifiées et mémorisées qui reprennent leur place.

Sauf bien sur si tu as supprimés des lignes dans ctrl_inscription auquel cas ce qui est mémorisé ce sont des lignes vides... qui vont ensuite écraser le nouveau chargement. Donc dans ce cas ça ne peut pas marcher.

Tu ne peux tester le programme qu'avec de nouvelles données dans base_inscriptions_helloasso pas en supprimant des données de ctrl_inscription.
 

patricktoulon

XLDnaute Barbatruc
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)
 

Pièces jointes

  • 2023_fichier_inscriptions_megalo_hello asso.xlsm
    26.2 KB · Affichages: 8

Discussions similaires

Statistiques des forums

Discussions
312 207
Messages
2 086 233
Membres
103 161
dernier inscrit
Rogombe bryan