Evolution document VBA

Bonsoir,

J'aurai quelques questions à vous soumettre sur un document créé à l'aide de forumeurs assidus Yvouille et Dan. Le 1er a beaucoup oeuvré sur ce document et malheureusement il s'est fâché sur la fin ... Mais je suis très très satisfait de cet outil qui me sert au quotidien à mon travail.

Bref je vous sollicite pour voir si quelqu'un peut me dépanner sur le sujet car je n'ai aucunes compétences en la matière. C'est un document de suivi statistiques d'équipes sportives en fonction du calendrier, journée par journée.

--> voici le document de départ qui permet de créer pour chaque saison un nouveau classeur avec chacune des équipes

https://drive.google.com/file/d/1aAeI9uNHYzGABEa9zgoCD32W_2GctEUZ/view?usp=sharing

La feuille LAN sert de support à la création des autres feuilles équipes. Je remplis le calendrier et je vais clicker sur le bouton nouvelle saison de la fiche information et le document est créé. Je rentre pour chaque journée A1, A2, A3, etc ... les stats de chaque rencontre et ça me permet d'effectuer toute sorte de classement. Je les renomme en J1, J2 etc ... pour qu'elles soient prise en compte sur chaque feuille équipe une fois la journée jouée.

1) j'ai ajouté une colonne statistique sur la feuille LAN en AH et AT (OPP= qui recense ce que je nomme les opportunités). Je l'ai intégré aussi en colonne F de ma feuille ranking. je voudrai être certain que par rapport au VBA appliqué cela ne posera pas de souci ? Est ce que quelqu'un peut me le confirmer ?

--> voici le document déjà créé de cette saison avec des données remplies de J1 à J5 car 5 journées se sont déjà jouées (rmq : il n'y a pas les OPP car pas effectif au moment de la création)

https://drive.google.com/file/d/1r5g4sRZI1OkMmw7tljqSUlLGHvjPvVEZ/view?usp=sharing

Sauf que sur la J3 et la J4 Chartres n'a pas pu jouer ces matchs et ils sont reportés à une date ultérieure ...

Sur la feuille équipe CHA et BOU en J3 les chiffres sont à 0 ce qui fausse toutes les moyennes ...

En J4 le 1er match noté sur la feuille étant celui de CHA qui a été reporté, cette J4 n'apparaît dans aucune des feuilles équipe ...

2) Est-il possible de faire en sorte que des matchs non joués sur les feuilles J... etc ne soient pas comptabilisés dans les feuilles des équipes respectives ?

3) Cela met le bazar aussi dans ma feuille ranking du coup avec des #DIV/0 et des calculs faussés (le fait de répondre à la question 2 peut déjà aider à rétablir la feuille ranking). Comment faire en sorte que dans la feuille ranking tous les items soient remplis correctement même si le nombre de matchs n'est pas le même pour les équipes pour le moment. Juste en tenant compte des matchs joués et des données associées (ne pas avoir de #DIV/0 partout) ? Est ce réalisable à votre avis ?

Le dernier point est que si vous trouvez une solution j'aimerai qu'elle soit appliquée sur le document de départ directement et non celui déjà créé (qui sert d'exemple ici, car je souhaite en refaire 1 intégrant en les colonnes OPP comme décrit dans le point 1 --> ce qui n'est pas le cas du doc déjà créé).

Bon voilà mes questions et une fois de plus je vous serai hyper reconnaissant pour un éventuel coup de pouce ... j'imagine que ça peut paraître un peu flou et n'hésitez pas à me demander des éclaircissements si besoin.

Cordialement

Olivier

Bonjour,

Toujours sur excel MAC je suppose ?

vous avez deux documents téléchargeables. C'est dans le deuxième ou dans le premier document que vous avez ajouté des colonnes ?
Un nommé V12-Original et l'autre nommé 2026-2027 LFB


1) j'ai ajouté une colonne statistique sur la feuille LAN en AH et AT (OPP= qui recense ce que je nomme les opportunités). Je l'ai intégré aussi en colonne F de ma feuille ranking. je voudrai être certain que par rapport au VBA appliqué cela ne posera pas de souci ? Est ce que quelqu'un peut me le confirmer ?

Si vous avez ajouté deux colonnes, la dernière colonne de votre tableau est la colonne BL.
Dans ce cas, allez dans le code Private Sub Workbook_SheetActivate(ByVal Sh As Object) dans Thisworkbook, et dans cette ligne -->

.Range("C" & j & ":BI" & j).Copy

il fautremplacer BI par BL


Sauf que sur la J3 et la J4 Chartres n'a pas pu jouer ces matchs et ils sont reportés à une date ultérieure ...
Sur la feuille équipe CHA et BOU en J3 les chiffres sont à 0 ce qui fausse toutes les moyennes ...
En J4 le 1er match noté sur la feuille étant celui de CHA qui a été reporté, cette J4 n'apparaît dans aucune des feuilles équipe ...
2) Est-il possible de faire en sorte que des matchs non joués sur les feuilles J... etc ne soient pas comptabilisés dans les feuilles des équipes respectives ?

Logique votre problème car le code Private Sub Workbook_SheetActivate(ByVal Sh As Object) dans Thisworkbook n'est pas correct ou tout au moins une ligne
Dans le fichier 2026-2027 LFB, essayez ceci :

Remplacez cette ligne :

 If .Range("B" & j) = Equipe_traitee And WorksheetFunction.Sum(.Range("E4:F5")) > 0 Then ' La variable j est la ligne sur laquelle se trouve le nom de l'equipe traitee 

par celle-ci

If .Range("B" & j) = Equipe_traitee And WorksheetFunction.Sum(.Range("E" & j & ":F" & j + 1)) > 0 Then ' La variable j est la ligne sur laquelle se trouve le nom de l'equipe traitee

Cela solutionne le souci je pense

NB: votre feuille Ranking mériterait d'être modifiée. Pourquoi fusionner la colonne B et C ??

Bonsoir Dan,

En effet, toujours sur Mac avec excel car je n'ai rien changé de ma config ... Peut être plus tard si j'ai un peu de sous !

C'est dans le 1er document que j'ai ajouté les colonnes (le V12 original)

1) ok c'est fait j'ai remplacé BI par BL

2) en effet en utilisant ce code le souci est résolu sur les feuilles des équipes

If .Range("B" & j) = Equipe_traitee And WorksheetFunction.Sum(.Range("E" & j & ":F" & j + 1)) > 0 Then ' La variable j est la ligne sur laquelle se trouve le nom de l'equipe traitee

--> Bon ba force est de constater que c'est une nouvelle fois rapide et efficace ! Merci beaucoup car les correctifs apportés fonctionnent parfaitement.

3) oui je crois aussi que la feuille ranking peut être retravaillée. Je vais profiter de ce post pour m'y pencher. Pourquoi avoir fusionné les colonnes B et C ? tout simplement parce qu'à l'origine je n'avais pas trop idée de la direction de ce travail et que comme beaucoup de débutants j'ai fait quelque chose qui n'a pas de sens.

Quels conseils vois tu pour l'organisation de cette feuille ?

PS : pour que le point 2 soit tout de suite opérationnel sur mes futurs documents faut il que je copie ce code sur le document original V12 ?

Merci Dan

Bonjour,

En effet, toujours sur Mac avec excel car je n'ai rien changé de ma config ... Peut être plus tard si j'ai un peu de sous !

Bah il y a de nouveautés intéressantes mais il est aussi vrai que tout a augmenté à cause de la mémoire et de l'IA.
Quelle est votre config MAC ?

2) en effet en utilisant ce code le souci est résolu sur les feuilles des équipes

Cette erreur existe depuis pas mal de temps à moins que vous avez modifié depuis la dernière fois que je me suis occupé du fichier. Je ne me souviens plus trop à vrais dire... En fait il ne fallait pas laisser E4:F5 mais tenir compte de la ligne via la variable j

3) oui je crois aussi que la feuille ranking peut être retravaillée. Je vais profiter de ce post pour m'y pencher. Pourquoi avoir fusionné les colonnes B et C ? tout simplement parce qu'à l'origine je n'avais pas trop idée de la direction de ce travail et que comme beaucoup de débutants j'ai fait quelque chose qui n'a pas de sens.
Quels conseils vois tu pour l'organisation de cette feuille ?

Peut être déjà défusionner les deux colonnes mais vous devrez refaire les liens hypertextes. Mais bon cela ne gêne pas trop.
Modifier les formules dans la zone 2 points
- En D6 --> =INDIRECT(INDIRECT("B" & LIGNE()) & "!H29")
- En E6 --> =INDIRECT(INDIRECT("B" & LIGNE()) & "!I29")
- En F6 --> =INDIRECT(INDIRECT("B" & LIGNE()) & "!J29")
Recopiez D6, E6 et F6 vers le bas jusque la ligne 17

Puis refaire la même chose pour les lignes 23 à 34, 40 à 51 et 57 à 68

Après refaire la même chose sur les colonnes suivantes où vous faites référence à la colonne B

Ce n'est pas obligé mais cela vous permet de garder les bonnes infos si par hasard vous changez la référence en colonne B - "Adresses" d'autant que je vois que vous ajoutez les liens hypertexte dans la colonne B via un code

PS : pour que le point 2 soit tout de suite opérationnel sur mes futurs documents faut il que je copie ce code sur le document original V12 ?

Oui mais votre fichier doit comporter les feuilles nommées "j1, j2, .... et avoir les feuilles LAN, VIL.... et Les feuilles sont nommées A1, A2..... et il n'y a pas de feuille nommée J1, J2,

Sinon j'ai refait le code Sub Transfert_Base_Calendrier() si vous voulez
Par contre, je ne comprends pas le pourquoi d'une colonne vide dans la feuille calendrier

OK pour la réponse, il y a pas mal de correctifs à faire.

Je vais m'y coller mais peut être que d'ici quelques jours car je suis à l'étranger la semaine prochaine. J'avance et je vois ce que ça donne pour faire un retour sur le forum.

Merci pour la réponse !

Bonsoir Dan,

Alors j'ai pris le temps de faire les modifications soit avoir qu'une colonne en B avec les noms équipes sur la feuille ranking (au lieu de B+C). Et j'ai regardé ce que ça donne :

1) concernant ce point en D6 --> =INDIRECT(INDIRECT("B" & LIGNE()) & "!H29") ... j'ai effectué la manip partout et ça donne le document suivant :

https://drive.google.com/file/d/15RaVJl9Rtorf76TL1cZFg5OsCok51Umo/view?usp=sharing

indirect

Des #ref se mettent un peu partout car il n'y a pas les feuilles équipes au départ.

2) j'ai testé en créant un doc test et en remplissant 2 journées

https://drive.google.com/file/d/1KMVsl9QspNb31v8cJlulZsNEyhoWW0Wu/view?usp=sharing

Le résultat n'est pas fameux ...

results

Les colonnes en D, K etc ... reprennent l'ancien "code" visiblement sans appliquer la formule avec INDIRECT sauf pour la ligne concernant LAN

Idem en E (%) et RANK ...

Que me conseilles tu ?

3) j'ai également rajouté une colonne opportunité OPP sur la feuille LAN en AH (pour l'équipe) qui correspond au chiffre obtenu en AG4 (ou AG32 ... selon le match) sur les stats matchs des feuilles A1, A2 ...

Idem en AT pour les adversaires qui correspond alors au chiffre obtenu en AG5 sur un match

Pourtant les données ne semblent pas correspondre ...

As tu une idée du problème ?

Cordialement et encore désolé pour le délai de réponse.

Bonjour,

Point 1 --> Des #ref se mettent un peu partout car il n'y a pas les feuilles équipes au départ.

Logique si vous n'avez pas de données en colonne B. Vous pouvez contourner le souci des erreurs en modifiant la formule comme ceci :

1. En C6 --> =SIERREUR(@INDIRECT(@INDIRECT("B" & LIGNE()) & "!H29");"")
2. Formule à recopier vers le bas.

3. Ensuite faites de même pour D6, E6, G6 à H6, K6 à M6 etc..
4. Pour F6 vous pouvez mettre cette formule --> =SIERREUR(RANG(E5;$E$5:$E$16);"")
5. Faire de même pour J6, N6 etc... puis recopier vers le bas

Point 2 :
Les colonnes en D, K etc ... reprennent l'ancien "code" visiblement sans appliquer la formule avec INDIRECT sauf pour la ligne concernant LAN.....
Idem en E (%) et RANK ..

Si vous appliquez ce que je écris au point 1, cela résout le problème

Nb : en F6 vous avez la formule RANG tandis qu'en F7, vous ne utilisez pas la même formule..... Donc à corriger

image

Voyez déjà pour résoudre ces deux soucis là

Point 3 : j'ai également rajouté une colonne opportunité OPP sur la feuille LAN en AH (pour l'équipe) qui correspond au chiffre obtenu en AG4 (ou AG32 ... selon le match) sur les stats matchs des feuilles A1, A2 ...

Vous en avez déjà parlé dans votre premier post si je ne me trompe.



Questions
:
1. on a un souci car d'un coté vous postez un fichier avec des feuilles A1, ... (fichier original) et de l'autre des J1...Les codes ne fonctionnent qu'avec les fichiers avec feuilles J1... Donc comment passez-vous de A à J ?

2. Après je vous ai écrit que j'avais revu les codes à vous donnez mais reste le souci de cette colonne vide (mon message précédent) auquel vous ne répondez pas

Bonjour Dan,

En effet pas facile de prendre le document "en route" et d'y voir clair. Je vais essayer de mieux expliquer le process.

Point 1 : déjà en appliquant =SIERREUR(@INDIRECT(@INDIRECT("B" & LIGNE()) & "!H29");"") il n'y a plus les mentions #ref. Merci

Point 2 : c'est là que ça se complexifie un peu probablement.

J'ai un document que je nomme lfb-base-v12 ORIGINAL avec 1 seule feuille équipe LAN. Chaque année je me sers de ce dernier pour créer un autre document qui va me permettre de suivre les équipes sur la saison à venir. Dans le doc original je remplis le calendrier de la feuille table4 puis je vais dans la feuille information cliquer sur le bouton démarrer une nouvelle saison.

Un nouveau document se créé avec cette fois une feuille équipe pour chaque équipe LAN, CNY, CHA et un numéro de match attribué pour chaque équipe sur la feuille calendrier. Cela se répercute sur les feuilles A1, A2, etc ...

C'est alors que je remplis les stats de chaque journée de championnat sur ces feuilles A1, A2 ... Une fois une journée terminée (avec toutes les stats indiquées) je renomme manuellement la feuille A1 en J1 et c'est alors que le code se met en place pour répertorier (prendre en compte) les stats correspondantes spécifiquement à l'équipe sur sa propre feuille. Les données du match joué par LAN en J1 et J2, etc ... vont alors apparaître sur la feuille LAN

--> La difficulté du point 2 c'est que sur le document original, quand je garde 1 seule colonne B pour les noms puis je fais les modifications proposées tout est ok. Par contre une fois que je créé un nouveau document via le click "nouvelle saison" de la feuille table 4, toutes les feuilles équipes se créent. Et quand je test avec 2 journées jouées les modifications ne fonctionnent que sur la colonne C (TR). Cela fonctionne aussi en D6 et E6 ... pour l'équipe LAN.

Par contre en D7, D8, D9 etc .... il semble que la formule =SIERREUR(INDIRECT(INDIRECT("B" & LIGNE()) & "!I29");"") ne soit pas transmise tel quelle ? C'est OK en D6 (TT) mais cela remet la formule =CHM!H29 en D7 et suivantes ???

capture d e cran 2026 11 02 a 16 41 39

Questions annexes : pourquoi la colonne vide en D sur la feuille calendrier ? c'est une bonne question ... je ne sais pas du tout car c'est la personne qui a fabriqué le document qui l'a mise. Mais je n'en vois pas l'utilité à ce jour.

Pour la gestion des OPP je verrai une fois que le document est construit de manière un peu plus "propre" dans les colonnes etc ...

Merci beaucoup et j'imagine bien que tout ceci manque un peu de clarté pour des initiés. Mais ça avance dans le bon sens.

Olivier

Bonjour

Ok j'avais compris comment cela fonctionne.
1. Vous extrayez la table 4
2. Vous complétez le calendrier avec le bouton Nouvelle Saison (code Transfert_Base_Calendrier)
3. Vous créez les feuilles à partir de la feuille LAN (Modèle si je comprends) avec le code Preparer_une_nouvelle_saison.
NB : vous auriez dû créer une feuille Modèle plutot que de partir sur la feuille LAN
4. Vous modifiez les feuilles A1 et mettant les données et une fois terminé, vous renommez manuellement A1 et J1. Idem pour les autres feuilles A...


--> La difficulté du point 2 c'est que sur le document original, quand je garde 1 seule colonne B pour les noms puis je fais les modifications proposées tout est ok. Par contre une fois que je créé un nouveau document via le click "nouvelle saison" de la feuille table 4, toutes les feuilles équipes se créent. Et quand je test avec 2 journées jouées les modifications ne fonctionnent que sur la colonne C (TR). Cela fonctionne aussi en D6 et E6 ... pour l'équipe L

Vous parlez de La feuille Ranking je suppose ?
Il n'y a rien qui modifie les formules Indirect dans votre C et suivantes. Mais vous devez préparer d'abord manuellement cette feuille.
Seule la colonne B sera adaptée en fonction des équipes trouvées en feuille Calendrier. J'ai fais un code à ce sujet
Là j'ai d'abord besoin de voir votre feuille Ranking avec les formules mises en place pour vérifier le code que je vous ai fait

Questions annexes : pourquoi la colonne vide en D sur la feuille calendrier ? c'est une bonne question ... je ne sais pas du tout car c'est la personne qui a fabriqué le document qui l'a mise. Mais je n'en vois pas l'utilité à ce jour.

Ok. On va la supprimer.
Il faudra juste adapter les formules en feuille A pour la ligne 5, 33, 61 etc qui feront référence à la colonne D de la feuille Calendrier plutot que la E

Par contre en D7, D8, D9 etc .... il semble que la formule =SIERREUR(INDIRECT(INDIRECT("B" & LIGNE()) & "!I29");"") ne soit pas transmise tel quelle ? C'est OK en D6 (TT) mais cela remet la formule =CHM!H29 en D7 et suivantes ???

Si cela vous renvoie CHM!H29 c'est que vous n'avez pas suivi ce que j'ai écrit --> https://forum.excel-pratique.com/s/goto/1270525
Vous devez étirer la formule D6 vers le bas jusque D17 comme vous avez fait pour la colonne C. Idem pour les autres colonnes
Supprimez aussi toutes les fusions de cellules et lignes parce que si vous ne suivez pas pas à pas ce que je vous écrit cela ne va pas fonctionner

Rechercher des sujets similaires à "evolution document vba"