Traitement de données

Bonjour à tous,

Je travaille sur les statistiques dans le domaine sportif avec ce fichier :

traitement de donnees

Dans ce sens, j'aimerai créer une macro VBA qui me permettrait de dire :

- Si le nom de l'équipe sur la ligne traitée est le même que celui de la ligne du dessus

- Et pour chaque ligne, s’il y a eu+ de 1,5 buts dans le match, si c'est le cas, tu inscris oui sur cette ligne dans la colonne G,

sinon tu écris non".

- Et dans la colonne H, j'ai besoin de faire une colonne "Série" qui : Combien de rencontres D'affilés à partir de la ligne traité,

il y a t'il eu + de 1,5 buts ? la macro ferait :

"s’il y a eu plus de 1,5 buts dans la ligne traitée et si sur la ligne précédente, il y a également eu plus de 1,5 buts, dans la

colonne H de la ligne traitée, faire +1 par rapport à la ligne du dessus, sinon écrire 1"

Je vous envoie le fichier en pièce-jointe.

Je vous remercie par avance pour votre aide. Vous m'aideriez beaucoup !

Prenez soin de vous !

Adrien LAPLACE

Bonjour,

ai-je bien compris que tu veux une macro qui donne les mêmes résultats que tes formules ?

Merci pour ton retour

Pour te répondre c'est exactement ça !

bonjour,

voici, même si je n'ai pas vraiment compris l'intérêt.

Merci pour ton retour.

Peux-tu s'il te plait écrire la macro VBA dans la conversation s'il te plait. Elle ne s'affiche pas quand j'ouvre le fichier

re-bonjour,

tu n'as sans doute pas regardé au bon endroit. (faire alt-F11, puis sélectionner module1)

Voici

Sub Macro1()
    '
    ' Macro1 Macro
    With Sheets("test")
        dl = .Cells(Rows.Count, 2).End(xlUp).Row
        For i = 3 To dl
            ng = .Cells(i, 4) + .Cells(i, 5)
            .Cells(i, 6) = ng
            If .Cells(i - 1, 3) = .Cells(i, 3) And ng > 1.5 Then .Cells(i, 8) = .Cells(i - 1, 8) + 1: .Cells(i, 7) = "Oui" Else .Cells(i, 8) = 0: .Cells(i, 7) = "Non"
            If .Cells(i - 1, 3) = .Cells(i, 3) And ng > 2.5 Then .Cells(i, 10) = .Cells(i - 1, 10) + 1: .Cells(i, 9) = "Oui" Else .Cells(i, 10) = 0: .Cells(i, 9) = "Non"
        Next i
    End With

    '
End Sub

Super !

Merci d'avoir pris le temps d'avoir traité ma demande !

C'est quasi-parfait car pour le 1er match de Belenenses à la ligne 37, il y a plus de 1,5 buts et en appliquant le code, il indique qu'il n'y a pas eu plus de 1,5 buts alors qu'il y en a eu 4.

Est-ce normal ?

Je te remercie d'avance pour ton retour !

re-bonjour,

dans le fichier que tu as mis, en ligne 37, le score est de 0 1, donc tu travailles sur un autre fichier, sans ce fichier je ne peux pas t'aider.

Merci pour ton retour et pour ta grande aide !

Effectivement l'erreur viens de mon coté, je m'excuse pour cela !

Toutefois, j'aimerai la macro sur d'autres feuilles de calcul, est-il possible dans le code d'enlever le nom de la feuille que l'on traite ? Je sélectionnerai toutes les feuilles de calculs a traitées avant d'activer la macro.

Quand j'utilise la macro sur d'autres feuilles de calcul (en ayant changé le nom de la feuille à chaque fois, la macro ne s'arrête pas à la dernière ligne et continuer de dérouler, est-ce normal et peut-on l'en empêcher ?

J'aimerai inclure dans le code l'idée d'écrire le nom des colonnes en "1,5", "Suite", "2,5", "Suite" à la suite des précédentes colonnes

J'aimerai ajouter un dernier élément qui serait de créer une macro qui réalise un reporting des séries maximales atteint par

chaque équipe sur une feuille quelques lignes plus bas suivants les matchs.

`

capture d ecran 2020 03 20 a 13 17 14

Je t'ai mis un exemple de ce que j'aimerai avoir dans l'onglet 20 équipes.Est-il possible de construire ce genre de tableau via VBA en créant une boucle qui partirai du tableau précedant en disant "si le nom de l'équipe est differente de celle du dessus, then construits une ligne avec le nom de la nouvelle équipe avec les 1,5, 2,5 et indiquer sur la ligne en dessous la serie maximal de 1,5 pour cette équipe ?

Si besoin je peux recréer un poste pour traiter cet élément. Je t'envois ci-joints le fichier.

Je te remercie par avance pour ton aide car tu me débloques énormément !

Je te souhaite un bon après-midi !

Adrien

3test-macro.xlsx (294.95 Ko)

bonjour,

Toutefois, j'aimerai la macro sur d'autres feuilles de calcul, est-il possible dans le code d'enlever le nom de la feuille que l'on traite ? Je sélectionnerai toutes les feuilles de calculs a traitées avant d'activer la macro.

pour cela remplace cette instruction

With Sheets("test")

par

With ActiveSheet

Quand j'utilise la macro sur d'autres feuilles de calcul (en ayant changé le nom de la feuille à chaque fois, la macro ne s'arrête pas à la dernière ligne et continuer de dérouler, est-ce normal et peut-on l'en empêcher ?

la dernière est ligne est déterminée sur base de la dernière cellule contenant une valeur en colonne B.

pour le reste ouvre un nouveau message, peut-être d'autres personnes sur le Forum voudront bien t'aider.

Re-bonjour,

Merci pour ton retour !

Je vais créer un nouveau post pour la deuxième partie de mon message

Néanmoins, pour ces 2 questions, as-tu une solution ?

"Quand j'utilise la macro sur d'autres feuilles de calcul (en ayant changé le nom de la feuille à chaque fois, la macro ne s'arrête pas à la dernière ligne et continuer de dérouler, est-ce normal et peut-on l'en empêcher ?

J'aimerai inclure dans le code l'idée d'écrire le nom des colonnes en "1,5", "Suite", "2,5", "Suite" à la suite des précédentes colonnes"

Je te remercie d'avance !

Adrien

re-bonjour,

"Quand j'utilise la macro sur d'autres feuilles de calcul (en ayant changé le nom de la feuille à chaque fois, la macro ne s'arrête pas à la dernière ligne et continuer de dérouler, est-ce normal et peut-on l'en empêcher ?

je t'ai donné une piste de recherche. n'ayant pas ton fichier, je ne peux pas en dire plus.

Re-bonjour,

Voici le fichier

4test-macro.xlsx (294.95 Ko)

Bonjour,

je te confirme ce que j'ai dit. le nombre de ligne est déterminé par le numéro de ligne de la dernière cellule utilisée en colonne B. si cette cellule ne contient pas des données sur lesquelles il faut faire exécuter la macro, il faut mettre ces données ailleurs.

Rebonjour,

Je te remercie et je viens de comprendre ton message !

Il n'est pas possible d'ajouter une ligne de code pour spécifier à la macro quand s'arreter ? Du type :"Si la la ligne traité, la cellule B est vide then arrêter la boucle ?

Merci encore pour ton aide !

Il n'est pas possible d'ajouter une ligne de code pour spécifier à la macro quand s'arreter ? Du type :"Si la la ligne traité, la cellule B est vide then arrêter la boucle ?

c'est bien sûr possible, mais je t'ai fourni une macro sur base du fichier que tu as mis.

Je n'ai pas bien compris, Que faudrait-il faire dans ce cas pour y arriver ?

J'ai également un autre souci :

capture d ecran 2020 03 20 a 16 05 59 capture d ecran 2020 03 20 a 16 06 09

Sur ces 2 images, les 2 équipes ont connu leur 1er premiers matchs avec plus de 1,5 buts, pourtant la macro m'indique que non, et c'est le cas pour tout équipe qui débute son premier match alors qu'il y a eu + de 1,5 buts.

"Sub Macro1()

End Sub"

L'idée est de dire : dans la colonne 1,5, sur la ligne traitée, si FT HG + FT AG > 1,5, alors tu ecris Oui, sinon Non. Puis dans la colonne Série(ou celle de droite) si sur la ligne traitée, l'équipe est la même que celle de la ligne du dessus et que sur la ligne du dessus, alors tu sélectionnes dans la colonne série 1,5 la ligne du dessus et tu ajoutes +1, sinon tu inscris 0 comme il n'y a pas eu plus de 1,5 buts.

Merci mille fois pour toute ton aide !

Avec le fichier

2test-macro.xlsx (436.46 Ko)

Bonsoir,

effectivement, il y avait un cas que la macro ne traitait pas. Voici

4test-macro.xlsm (464.60 Ko)

Merci beaucoup ça à l'air de super bien fonctionné !

Je te remercie vraiment pour ton assistance et pour ces échanges.

Prends soin de toi.

Laplacea

Rechercher des sujets similaires à "traitement donnees"