Microsoft 365 Formatage base de données Football

Phytoman

XLDnaute Junior
Bonjour et merci pour toute l'aide déjà apportée jusqu'ici.

Dernière ligne droite, l'import des données de la fédération belge de Foot.
Les fichier Excel importés depuis la fédération de football belge ne sont pas exploitables en l’état.
Cette macro pourrait être dans un seul fichier, dans quel cas je devrais systématiquement faire un copier-coller des données reçues, soit propre à tous les classeurs, ce qui en faciliterait la tâche.
Il me faudrait les adapter comme suit :
  • Remplacer la colonne J (club visité) et K (club visiteur) par la concaténation suivante (ou ajouter deux colonnes) :
  • Nom de fichier= (voir liste plus bas) -->initiales
  • DIV = forcer à 5 caractères - Si <, ajouter des 0 avant (éviter risques de doublons)
  • Matricule = forcer à 5 caractères - Si <, ajouter des 0 avant
  • Liste des initiales des noms de fichier :
    • lieresdownP = lg
    • hairesdownP = ht
    • namresdownP = na
    • brwresdownP = bw
    • luxresdownP = lu
Ce qui donne : lg0003a08422

D’autres noms de fichier pourraient y être ajoutés ultérieurement
en annexe les résultats de la semaine pour la province de Liège.
Merci de votre aide
 

Pièces jointes

  • lieresdownP.xlsm
    861.3 KB · Affichages: 7

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Phytoman,
Un essai en PJ pour ce que j'ai compris.
Mais avec 19000 lignes il vous faut passer par des arrays car ça risque d'être très long. ( > 5s )
La macro est très simple, vous pouvez l'adapter si je n'ai pas bien compris le codage utilisé.
 

Pièces jointes

  • lieresdownP.xlsb
    417.5 KB · Affichages: 5

Phytoman

XLDnaute Junior
Un grand merci :)
Le résultat est exactement celui attendu, quoique ...
La feuille est censée me remonter tous les résultats de matchs, il me faudra donc un code visiteur et un code visité dans la feuille 1
Le code ne doit pas être lié à un matche mais bien à une équipe
Ainsi, sur 19000 matchs, il n'y a en réalité que 2843 équipes
La double feuille a toute sa raison d'être.
1) Les matchs récupère l'ID généré (lg0003a08422 ) pour chaque équipe et injecte les scores directement dans la base de données
2) la Feuille 2 devrait reprendre tous les codes, équipe par équipe et supprimer les doublons. Elle me servira à créer physiquement chaque équipe dans mon cms et l'assigner à un club (autre fichier ou formule à faire)
Je ne sais pas si je me fais bien comprendre ;-)
 

Phytoman

XLDnaute Junior
Ok, je vois bien le dédoublonnage et la génération du code; Mais comment faire pour que ce code se retrouve dans la feuille a coté de chaque équipe dans un match ?
Le tableau devrait être:
DIVDATEHOURHOMEAWAYRHRASTATUSMDREGNUMBERHOMEREGNUMBERAWAY
1​
17-08-19​
20:00​
Malmundaria AWanze Bas-Oha A
0​
4​
1​
lg0000100188
lg0000101654
1​
18-08-19​
15:00​
Aubel AFizoise A
0​
3​
1​
lg0000102816
lg0000106821
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Les specs arrivent au goutte à goutte.
Si vous aviez l'exemple à obtenir dès le départ, pourquoi ne pas avoir été plus clair.
Dans la feuille lieresdownP :
en L2 mettre :
VB:
=INDEX(Result!$B:$B;EQUIV(D2;Result!$A:$A;0))
en M2 mettre :
Code:
=INDEX(Result!$B:$B;EQUIV(E2;Result!$A:$A;0))

Et vous ne m'avez pas répondu : 2834 c'est bon ou faux ?
 

Phytoman

XLDnaute Junior
Dernière petite question.
Je souhaitais créer deux nouvelles colonnes dans lesquelles je concaténerait :
1) Visiteur
2) Espace
3) Equipe (le mot)
4) Espace
5) Division2 --> variante de division dans laquelle je n'ai pas forcé les Zéros devant
J'ai essayé ceci, mais je n'arrive pas à avoir d'espace

Division2 = Right("" & Sheets(SheetName).Range("A:A").Cells(Ligne, 1), 5)
Matricule = Right("00000" & Sheets(SheetName).Range("A:L").Cells(Ligne, 10), 5)
Matricule2 = Right("00000" & Sheets(SheetName).Range("A:L").Cells(Ligne, 11), 5)
Sheets("result").Range("A:A").Cells(Ligne, 1) = Visité
Sheets("result").Range("B:B").Cells(Ligne, 1) = Initiale & Division & Matricule
Sheets(SheetName).Range("L" & Ligne) = Initiale & Division & Matricule
Sheets(SheetName).Range("M" & Ligne) = Initiale & Division & Matricule2
Sheets(SheetName).Range("N" & Ligne) = Visité & "" & équipe & Division
Sheets(SheetName).Range("N" & Ligne) = Visiteur & "" & "Equipe" & "" & Division2

Le résultat devrait donner : Liège équipe U19
Idem pour les visiteurs
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Phytoman,
Si vous voulez des espaces ... il faut insérer des espaces. :)
VB:
Sheets("result").Range("B:B").Cells(Ligne, 1) = Initiale & " " & Division & " " & Matricule
Sheets(SheetName).Range("L" & Ligne) = Initiale & " " & Division & " " & Matricule
Sheets(SheetName).Range("M" & Ligne) = Initiale & " " & Division & " " & Matricule2
Sheets(SheetName).Range("N" & Ligne) = Visité & " " & équipe & " " & Division
Sheets(SheetName).Range("O" & Ligne) = Visiteur & " " & "Equipe" & " " & Division2
Le dernier est il ligne N ou ligne O ? J'ai mis O cela semble plus logique, sinon vous écrivez deux fois dans la même cellule.
 

Phytoman

XLDnaute Junior
Merci Sylvain
Je vais essayer d'être précis :)
Je place deux fichiers en annexe.
1) Générateur de matchs
2) Correspondance ID Admin et Belgian Foot
Dans le fichier 1 --> serait-il possible de faire en sorte qu'il n'y ait pas de deuxième page ? Car lors de l'import CSV vers une base de données Mysql tout doit être dans une seule page
J'ai ajouté dans la requête les autres fichiers potentiels (néerlandophones) afin de ne pas avoir à le refaire si le client évolue vers le côté flamand.
J'aurais souhaité également créer deux autres colonnes comme dans le fichier correspondance.
En effet, chaque compétition possède son propre Id par saison dans notre outil et s'il est intégré dans la feuille Excel (feuille unique), nous pourrions définir que lors de l'import on utiliserait uniquement les colonnes suivantes :
  1. La date : exemple --> 17-08-2019
  2. L'heure du match : exemple --> 20:00:00
  3. L'ID admin (correspondance) : exemple --> 88
  4. Le club visité : exemple --> lg0000100188
  5. Le club visiteur : exemple --> lg0000101654
  6. Goals inscrits visité (RH) : exemple --> 0
  7. Goals inscrits visiteur (RA) : exemple --> 4
Les autres colonnes me servent pour créer physiquement chaque équipe dans l'admin.
Étant donné que chaque année l'ID Admin change, je pourrais modifier les correspondance et régénérer tous les fichiers
Merci encore pour votre aide
 

Pièces jointes

  • generateur-matchs.xlsb
    623.1 KB · Affichages: 3
  • Correspondance ID Admin et Belgian Foot.xlsx
    13.7 KB · Affichages: 3

sylvanu

XLDnaute Barbatruc
Supporter XLD
En PJ pour le point 1.
Par contre il n'y a plus de bouton pour lancer. Donc il faut faire ALT + F8 et double cliquez sur AjouterData.
En fait je crée la feuille Result, je fait comme avant, et je supprime la feuille Result. Comme ça ça ne fait pas de modifs.
A tester.
 

Pièces jointes

  • generateur-matchs(V2).xlsb
    544.4 KB · Affichages: 10

Discussions similaires

Réponses
0
Affichages
896

Statistiques des forums

Discussions
312 196
Messages
2 086 097
Membres
103 116
dernier inscrit
kutobi87