Ranger donner avec une macro

Bonjour, après avoir effectué plusieurs recherches sur net, et suite à de nombreux essais, je m’adresse à vous pour savoir si une personne, voire plusieurs pourraient m’aider suivant mon fichier.

J’ai essayé avec =FITRE, mais j’ai Microsoft office Famille et Petite Entreprise 2016 (donc impossible).

Je vous explique comment je fais actuellement et cela manuellement

J’intègre par copier/coller une feuille provenant d’une extraction externe (feuil1).

Feuil2 :

J’ai supprimé la colonne A, E et toutes les colonnes après I qui se trouvaient dans la feuil1.

Puis j’intègre un filtre. En 1er je filtre par années, puis par équipes.

Puis, je choisi la première équipe du filtre, qui est Alavès, je copie et je colle en feuil3

Puis je passe à la suivante (Albacete) et je répète la même opération.

Sur ce fichier, nous avons plus de 70 équipes.

J’aimerais si cela est possible que ces opérations se fassent automatique (j’ai essayé avec une macro, mais n’étant pas doué ça ne fonctionne pas).

L’idéale serait : lorsque je colle mes données sur la feuil1.

Je lance une macro qui effectue toutes les manipulations pour arriver à un résultat identique à la feuil3 pour Alavés, pour l’ensemble des équipes présentes en feuil1, via un bouton.

la feuil1, n'est pas complète, j'ai supprimer des équipes car le fichier était trop gros (je ne pense pas que cela puisse être gênant), c'est aussi pour cette raison que j'ai fait 3 fichiers.

En remerciant par avance les personnes qui pourront.

J’en profite pour vous souhaiter à tous un bon réveillon et une bonne année 2021.

10feuil1.zip (870.85 Ko)
11feuil2.zip (733.07 Ko)
9feuil3.xlsx (157.67 Ko)

Salut Laurent,

quelques questions :
- as-tu plusieurs championnats à "encoder" ainsi ?
- la structure de ces BDD est-elle toujours identique ? (mêmes colonnes à éliminer, à trier,...)
- faut-il pouvoir créer de nouvelles feuilles ?
- j'imagine qu'avec le temps, Alavès et les autres ayant une année de plus dans les jambes, il faudra pouvoir "compléter" ou refaire le tout ?

Peux-tu faire le tour de la question, histoire de ne pas faire et défaire ?


Bonne année, le forum !

A+

Bonjour Curulis,

Tout d’abord merci de t’intéresser à mon sujet.

Donc pour répondre à tes questions :

Oui j’ai plusieurs championnats à encoder.

La structure des BDD est toujours identique.

Il n’est pas nécessaire de créer plusieurs feuilles.

En ce qui concerne le fait de pouvoir compléter ou refaire le tout, il n’est pas nécessaire qu’il se complète.

J’espère avoir répondu à tes questions.

A+..

Salut Laurent,

Ton fichier, fonctionnant selon tes indications :
- l'extraction est réalisée sur la dernière feuille ce qui veut dire que tu peux, si besoin, créer quand même une nouvelle feuille ;
- à part 'EXTRACT', le nom de "tes" onglets foot peut être changé à volonté : je ne me sers pas de leur nom ;
- en cas de nouvelle extraction, celle-ci sera ajoutée à la BDD existante de la dernière feuille : à toi, éventuellement, de jouer avec la position de tes onglets ;
- une fois l'extraction réalisée, les données de base, en feuille 'EXTRACT', sont effacées, histoire d'éviter les bêtises ;
- j'ai changé tes matricielles par ceci, plus simple :

= SI(G7="U"; H6 + 1 ; 0)

Partie du code créant les formules :

            'UNDER/OVER
            .Range(fctCol(iCol) & 1).Offset(0, 6).Resize(1, 4).Value = Array("U/O", "UNDER", "OVER", ".")
            iRowT = 6 + (iRow - x + 1)
            For y = 1 To 2
                .Range(fctCol(iCol + (2 * y)) & 1).Resize(6, 2).Interior.Color = Choose(y, RGB(0, 155, 225), RGB(255, 230, 155))
                .Range(fctCol(iCol + (2 * y)) & 3).Resize(2, 2).BorderAround LineStyle:=xlContinuous, Weight:=xlMedium
                If y = 1 Then .Range(fctCol(iCol + (2 * y)) & 1).Resize(6, 2).BorderAround LineStyle:=xlContinuous, Weight:=xlMedium
                For Z = 1 To 6
                    .Range(fctCol(iCol + 2 + y) & Z).Value = Choose(Z, "Record égalé", "Record " & IIf(y = 1, "UNDER", "OVER"), "Record égalé/battu", _
                        "Record -1 " & IIf(y = 1, "UNDER", "OVER"), "Record égalé/battu", "Record -2 " & IIf(y = 1, "UNDER", "OVER"))
                    .Range(fctCol(iCol + (2 * y)) & Z).Font.Size = IIf(Z Mod 2 = 1, 10, 12)
                    .Range(fctCol(iCol + (2 * y)) & Z).Font.Italic = IIf(Z Mod 2 = 1, True, False)
                    .Range(fctCol(iCol + 2) & Z).FormulaLocal = IIf(Z Mod 2 = 1, _
                        "=NB.SI(" & fctCol(iCol + 7) & "7:" & fctCol(iCol + 7) & iRowT & ";" & fctCol(iCol + 2) & Z + 1 & ")", _
                        "=MAX(" & fctCol(iCol + 7) & "7:" & fctCol(iCol + 7) & iRowT & ")" & IIf(Z > 2, "-" & IIf(Z = 4, 1, 2), ""))
                    .Range(fctCol(iCol + 5) & Z).FormulaLocal = IIf(Z Mod 2 = 1, _
                        "=NB.SI(" & fctCol(iCol + 8) & "7:" & fctCol(iCol + 8) & iRowT & ";" & fctCol(iCol + 5) & Z + 1 & ")", _
                        "=MAX(" & fctCol(iCol + 8) & "7:" & fctCol(iCol + 8) & iRowT & ")" & IIf(Z > 2, "-" & IIf(Z = 4, 1, 2), ""))
                Next
            Next
            .Range(fctCol(iCol + 7) & 7).FormulaLocal = "=SI(" & fctCol(iCol + 6) & "7=""U"";" & fctCol(iCol + 7) & "6 + 1 ;0)"
            .Range(fctCol(iCol + 7) & 7).AutoFill Destination:=.Range(fctCol(iCol + 7) & "7:" & fctCol(iCol + 7) & iRowT), Type:=xlFillDefault
            .Range(fctCol(iCol + 8) & 7).FormulaLocal = "=SI(" & fctCol(iCol + 6) & "7=""O"";" & fctCol(iCol + 8) & "6 + 1 ;0)"
            .Range(fctCol(iCol + 8) & 7).AutoFill Destination:=.Range(fctCol(iCol + 8) & "7:" & fctCol(iCol + 8) & iRowT), Type:=xlFillDefault

Un double-clic sur la feuille 'EXTRACT' démarre la macro.

16laurentfoot.zip (888.74 Ko)


Bonne année !

A+

Salut Curulis,

Vraiment merci beaucoup pour le travaille que tu as fait, c'est le top.

par contre, est-il possible de remettre les formules matricielles? je t'explique pourquoi, c'est très simple. dans le fichier joint (j'ai effectué l'extraction, si tu vas dans l'onglet Espagne en ligne 156, tu pourras voir en cellule I156 que nous avons (0), ce qui est normal car le match a été remis. le match suivant ligne 157, nous avons en cellule (I157) la valeur 1, alors que nous devrions avoir la valeur 5, étant donné qu'en cellule I155 nous avions 4. Lorsque qu'un match est remis (postened), nous ne devons pas repartir à 0 le match suivant, mais continuer la sérié en cours.

Chose bizarre, je viens de télécharger de nouveau le fichier que tu m'as envoyé et le double clique sur sur 'EXTRAC" n'active plus la macro.

Même avec le fichier sauvegardé sur mon PC. je regarde ce petit soucis et je te tiens au courant si je découvre pourquoi ça ne s'active plus.

Dans tous les cas un grand merci pour ce que tu as fait, c'est vraiment bluffant.

je te souhaite également tous mes vœux pour cette nouvelle année.

Re bonsoir Curulis,
ta macro fonctionne bien j'avais fait une mauvaise manip.
je voudrais simplement savoir si il était possible de remettre la fonction matricielle, comme expliqué dans le poste ci-dessus.
encore merci.

Salut Laurent,

je fais ça tout à l'heure...

A+

Salut Laurent,

pas trouvé malgré Google pour créer des formules matricielles via VBA...
Je l'ai donc fait en VBA :
- moins de ralentissement dû à ces innombrables matricielles ;
- opérationnel pour les futurs changements des colonnes "U/O" ;
- en bonus, tu as une liste de validation lors de la sélection de ces colonnes :"U, O, -" avec recalcul des valeurs.

Même fonctionnement : double-clic en 'Extract' pour démarrer l'extraction.

Public Sub UnderOver(ByVal sSheet$, iCol%)
'
Dim tTab, iRow%, iU%, iO%
'
With Worksheets(sSheet)
    iRow = .Range(fctCol(iCol) & Rows.Count).End(xlUp).Row
    tTab = .Range(fctCol(iCol) & 7).Resize(iRow - 6, 3).Value
    For x = 1 To UBound(tTab, 1)
        tTab(x, 2) = IIf(tTab(x, 1) = "U", iU + 1, 0)
        tTab(x, 3) = IIf(tTab(x, 1) = "O", iO + 1, 0)
        iU = IIf(tTab(x, 1) = "U", iU + 1, IIf(tTab(x, 1) = "O", 0, iU))
        iO = IIf(tTab(x, 1) = "O", iO + 1, IIf(tTab(x, 1) = "U", 0, iO))
    Next
    .Range(fctCol(iCol) & 7).Resize(iRow - 6, 3).Value = tTab
End With
'
End Sub
6laurentfoot.zip (890.94 Ko)


A+

Bonjour Curulis.

je te remercie beaucoup le travail que tu as fais. C'est parfait, je vais maintenant regarder avec les autres championnats.

Vraiment, mais vraiment je te remercie beaucoup, sans toi je continuerais à faire cela manuellement, quel gain de temps tu m'offres.

c'est vraiment sympas de nous accorder du temps pour nous aider.

Très cordialement

Laurent

Rechercher des sujets similaires à "ranger donner macro"