Traitement Extract

Salut X Cellus,

Salut Xorsankukai

Wouah! on s'améliore dans l'utilisation tableau. Même pas besoin de venir sur le sujet...

Merci pour tes encouragements, je suis loin de la maitriser mais je ne me décourage pas...

Amicalement,

Hello Xorsankukai, X Cellus,

Merci pour ton retour c'est exactement ce que je voulais.

Maintenant pour avancer dans mon projet , j’aimerai ajouter une petite macro et une autre plus importante macro qui s’exécutera sur les feuilles que j’aurai sélectionnées préalablement. (Ici Point de départ)

La première macro est de la mise en forme. J'aimerais copié-collé le contenu de la ligne 2 de la feuille sélectionné (Ici "Point de départ") sur toutes les feuilles à sa droite (les feuilles qui ont pour noms des pays)

J’aimerais que pour chaque ligne traité, la macro copie colle la ligne étudié dans la feuille correspondant aux pays présent dans la colonne B dans le même format. Et qu’elle s’ajoute à la première ligne où il n’y pas de contenu. (Je vais utiliser cette macro une fois par jour)

dfsqdf

Par exemple, ici ma macro devra copié-collé chaque ligne où « Allemagne » est présent dans la feuille « Allemagne », pareil pour l’Angleterre, l’Autriche et la Biélorussie etc jusqu'à la dernière ligne où il y a du contenu.

Une fois le copie-colle fait sur la bonne feuille (Allemagne, Angleterre etc.), j'aimerai trouver un moyen d'actualiser les filtres dans les différentes pages où la macro copie colle du contenu par ordre alphabétique. Mon but est de créer des suites d'équipes dont je peux analyser des séries. Par exemple le Bayern II a joué hier, mais ne jouera pas aujourd'hui. Entre temps d'autres équipes joueront et je suis obligé de réactualisé le filtre dans l'ordre alpabétique pour créer cette serie d'équipe. (Je ne sais pas si je suis claire ^^)

Je vous remercie par avance de votre retour et vous souhaite une bonne journée et un bon début de semaine !

Bien à vous.

Laplacea

Re,

Maintenant pour avancer dans mon projet , j’aimerai ajouter une petite macro et une autre plus importante macro qui s’exécutera sur les feuilles que j’aurai sélectionnées préalablement. (Ici Point de départ)

La première macro est de la mise en forme. J'aimerais copié-collé le contenu de la ligne 2 de la feuille sélectionné (Ici "Point de départ") sur toutes les feuilles à sa droite (les feuilles qui ont pour noms des pays)

Tu n'es donc jamais rassasié, quel gourmand !

Ton problème étant résolu, cette nouvelle demande aurait dû faire l'objet d'un nouveau post,

Voici une proposition à partir de la macro Ajout_Feuilles_Pays (module 2)

  1. Je supprime tous les onglets sauf "Liste des Pays" et "Point de départ"
  2. Je crée les onglets à partir de la liste mais uniquement si les Pays figurent sur la feuille "Point de départ"
  3. Je rapatrie les données correspondant aux onglets.

A vérifier.....

Sub Ajout_Feuilles_Pays()
    Dim Nom As String, c As Range, plage As Range, myrange As Range
    Dim tabcol(), tablo(), tabloR()
    Dim ws As Worksheet, num As Integer

    tabcol = Array("CHAMPIONNAT", "Team", "H goal", "A goal", "NB FT G", "1,5", "2,5", "3,5", "4,5", "-1,5", "-2,5", "-3,5", "-4,5", "H HT G", "A HT G", "NB HT G", "0,5", "1,5", "-0,5", "-1,5", "FT WDL")
    Set plage = Sheets("Point de départ").Range("B3:V" & Sheets("Point de départ").Range("B" & Rows.Count).End(xlUp).Row)
    Set myrange = Sheets("Point de départ").Range("B3:B" & Sheets("Point de départ").Range("B" & Rows.Count).End(xlUp).Row)
        tablo = plage

    Application.ScreenUpdating = False
    Application.DisplayAlerts = False

    For Each ws In ThisWorkbook.Worksheets
     If ws.Name <> "Liste des Pays" And ws.Name <> "Point de départ" Then ws.Delete
    Next ws

    For Each c In Sheets("Liste des Pays").Range("A2:A" & Sheets("Liste des Pays").Range("A" & Rows.Count).End(xlUp).Row)
        Nom = c.Value
        num = Application.WorksheetFunction.CountIf(myrange, Nom)
        If Nom <> "" And num > 0 Then
            Sheets.Add Count:=1, after:=Worksheets(Worksheets.Count)
             With ActiveSheet
               For i = 0 To UBound(tabcol, 1)
                .Cells(2, 2 + i) = tabcol(i)
               Next i
                .Name = Nom
                .Range("B2").Interior.ColorIndex = 6
                .Range("B2:V2").Font.Bold = True
              k = 0
               For i = 1 To UBound(tablo, 1)
                ReDim Preserve tabloR(1 To 21, 1 To k + 1)
                 If tablo(i, 1) = .Name Then
                    tabloR(1, k + 1) = tablo(i, 1)
                    tabloR(2, k + 1) = tablo(i, 2)
                    tabloR(3, k + 1) = tablo(i, 3)
                    tabloR(4, k + 1) = tablo(i, 4)
                    tabloR(5, k + 1) = tablo(i, 5)
                    tabloR(6, k + 1) = tablo(i, 6)
                    tabloR(7, k + 1) = tablo(i, 7)
                    tabloR(8, k + 1) = tablo(i, 8)
                    tabloR(9, k + 1) = tablo(i, 9)
                    tabloR(10, k + 1) = tablo(i, 10)
                    tabloR(11, k + 1) = tablo(i, 11)
                    tabloR(12, k + 1) = tablo(i, 12)
                    tabloR(13, k + 1) = tablo(i, 13)
                    tabloR(14, k + 1) = tablo(i, 14)
                    tabloR(15, k + 1) = tablo(i, 15)
                    tabloR(16, k + 1) = tablo(i, 16)
                    tabloR(17, k + 1) = tablo(i, 17)
                    tabloR(18, k + 1) = tablo(i, 18)
                    tabloR(19, k + 1) = tablo(i, 19)
                    tabloR(20, k + 1) = tablo(i, 20)
                    tabloR(21, k + 1) = tablo(i, 21)
             k = k + 1
               End If
             Next i
       On Error Resume Next
               .Range("B" & Rows.Count).End(xlUp).Offset(1, 0).Resize(UBound(tabloR, 2), 21) = Application.Transpose(tabloR)
               .Columns.AutoFit
               .Range("B3:V" & .Range("B" & Rows.Count).End(xlUp).Row).Sort .Range("C3"), xlAscending
                Erase tabloR
             End With
         End If
    Next c
    Application.DisplayAlerts = True
End Sub


Bonne soirée,

Re Xorsankukai,

Ah ça oui je ne suis jamais rassasié ahah. Je tiens vraiment à avancer dans mon projet et tu y contribues grandement. Je suis gourmand mais de ton côté, tu es vraiment super généreux et je t'en remercie.

J'hésitais à créer un nouveau post parce que je pensais que cela pouvait être intéressant d'avoir une continuité dans la discussion. Mais je comprends pleinement et à la suite de cette macro je créerai un nouveau post. Promis !

Alors pour le coup la macro ne correspond pas vraiment à ce que j'aimerais avoir. Pour t'expliquer le contexte, je vais tous les jours recevoir une extraction que je vais manipuler. L'idée d'avoir une feuille de chaque pays que j'étudie me permet de faire un bilan sur un an de toutes les rencontres que j'analyse au quotidien. Ainsi, je me dois de conserver toutes les feuilles des différents pays présent dans l'Excel de mon message précédent : excel-pratique-extract.xlsm

L'idée est vraiment de partir de la feuille sélectionnée (ici "Point de départ"), et d'essayer d'avoir une macro qui copié-colle chaque ligne au nom de la feuille associé afin que je puisse y réaliser des bilans sur plusieurs semaines.

Également chaque ligne doit être ajoutée de du pays associé à la première ligne où il n'y a pas de contenu. Par exemple si Avant-hier, il y a eu 6 matches en Allemagne, et que je commence à remplir la feuille "Allemagne" à la ligne 3, ma feuille se remplira entre des lignes 3 à 8. Si dans mon extraction du jour, j'ai de nouveaux des matchs allemands, j'aimerais que la macro les ajoute à partir de la première ligne vide, à savoir ici la ligne 9.

Pour finir, j'aimerai une macro toute simple qui copie-colle le contenu de la ligne 2 de la feuille "Point de départ" et vers toutes les feuilles des pays.

Est-ce que tu penses que ces actions sont réalisables ? Je sais que mon message est long ()mais si tu as des questions je suis à ta disposition ! ^^

Et promis pour la prochaine macro je créerai un nouveau topic !

Prends soin de toi Xorsankukai et je te remercie par avance.

Passes une bonne soirée !

Bonjour laplacea, le forum,

J'hésitais à créer un nouveau post parce que je pensais que cela pouvait être intéressant d'avoir une continuité dans la discussion. Mais je comprends pleinement et à la suite de cette macro je créerai un nouveau post. Promis !

OK, pas de souci, mais vu que ton sujet est marqué comme résolu, tu te prives de la participation d'autres membres qui pourraient t'apporter d'autres solutions plus pertinentes.

Alors pour le coup la macro ne correspond pas vraiment à ce que j'aimerais avoir. Pour t'expliquer le contexte, je vais tous les jours recevoir une extraction que je vais manipuler.

L'idée est vraiment de partir de la feuille sélectionnée (ici "Point de départ"), et d'essayer d'avoir une macro qui copié-colle chaque ligne au nom de la feuille associé afin que je puisse y réaliser des bilans sur plusieurs semaines.

Je n'avais pas vu les choses sous cette angle, je pensais que tu alimentais ta base de données (Point de départ) quotidiennement, or là, tu vas donc avoir une feuille chaque jour.

Tu vas donc te retrouver avec une multitude d'onglets, es-tu sur de t'y retrouver ?

Sauras-tu quels onglets avaient déjà été sélectionnés et donc d'éviter les doublons sur les feuilles des Pays ?

j'aimerai une macro toute simple qui copie-colle le contenu de la ligne 2 de la feuille "Point de départ" et vers toutes les feuilles des pays.

Il suffit de l'écrire à la création des onglets, comme je l'avais fait, tu préfères vraiment avoir la macro à part ?

Est-ce que tu penses que ces actions sont réalisables ?

Oui, du moment que tu t'y retrouves....

Un essai....

Pour tester:

  1. crées d'abord les onglets Pays (macroAjout_Feuilles_Pays() dans module 2)
  2. sélectionnes les onglets dont tu veux les résultats
  3. dispatch les résultats (macro dispatch_résultats() dans module 1)

A bientôt,

Hello Xorsankukai, le forum,

J'espère que tu vas bien !

OK, pas de souci, mais vu que ton sujet est marqué comme résolu, tu te prives de la participation d'autres membres qui pourraient t'apporter d'autres solutions plus pertinentes.

Effectivement je comprends. Après je voulais donner une suite logique aux différentes macros que l"on faisait. Cela pouvait paraître plus intéressant lire sur un même sujet. Mais je comprends le problème que pose d'avoir mis le problème fut résolu.

Tu vas donc te retrouver avec une multitude d'onglets, es-tu sur de t'y retrouver ?

Sauras-tu quels onglets avaient déjà été sélectionnés et donc d'éviter les doublons sur les feuilles des Pays ?

Mon idée, comme tu l'as écrit est que chaque jour je réalise une extraction des résultats des matchs de la veille, et que j'analyse grâce aux différentes que tu as conconté aux petits soins sur ce sujet avec l'aide du forum.

Mon idée est de compléter petit à petit les feuilles des pays dans le but de créer un historique. Je na vais pas utiliser tous les jours la macro d'"ajouts feuille pays".

Pour la multitude d'onglets, je ne sais pas si on peut faire un filtre ou un tri des feuilles de calculs sur Excel ? Je pense que ça peut être intéressant de mettre de la gauche vers la droite soit les feuilles les récemment utilisés vers les plus anciennes, ou alors les mettre les feuilles les plus lourdes vers la gauche, et donc les plus légères vers la droite. Est-ce que c'est possible de trier de la sorte ?

Il suffit de l'écrire à la création des onglets, comme je l'avais fait, tu préfères vraiment avoir la macro à part ?

Oui je préfère l'avoir à part car je ne vais l'utiliser qu'une seule fois. Tu as bien fait de la créer séparément des autres.

Oui, du moment que tu t'y retrouves....

Bah écoutes pour le moment je pense que je vais m'en sortir.

Une idée m'est venue pour compléter la macro, (Promis la prochaine fois je créerai un nouveau sujet pour une nouvelle macro ^^).

J'aimerais qu'une fois que la macro a saisi les lignes de la feuille sélectionné (ici : "Point de départ"), et qu'elle les copie-colle dans la feuille du pays approprié, j'aimerais qu'elle fasse un calcul de série pour une même équipe (présente en colonne B) pour chacune de statistiques. Je t'ai mis dans l'Excel joint un modèle avec la feuille Allemagne :

serie

Je ne sais pas si tu en besoin mais je peux t'envoyer des codes qu'on avait travaillés ensemble sur d'autres macro qui répliquait un peu le même modèle sur ce sujet : https://forum.excel-pratique.com/excel/nbftg-nbhtg-142351. Si tu en as besoin je te les enverrai.

Je suis conscient qu'au vu de nos derniers messages que ce que je te demande parait beaucoup, mais je tiens à finaliser la macro sur ce sujet. Et promis après cette manipulation je créerai un nouveau sujet ^^

En tout cas je profite de l'occasion pour te remercier Xorsankukai tout particulièrement, ainsi que tous les membres du forum. Mon projet est loin d'être fini mais vous me permettez de continuer à y croire et d'avancer dans ce projet. Votre générosité fait vraiment plaisir à voir et c'est inspirant !

Je te souhaite une bonne soirée mon ami et je suis comme toujours disponible !

Adrien

Bonsoir Adrien le forum,

Aucun problème de poursuivre sur le même sujet, c'est seulement que ce n'est pas dans ton intérêt puisque tu te limite à ma seule intervention en te privant d'autres membres qui sont plus expérimentés, , il y a des pros dans la gestion des bases de données....

J'aimerais qu'une fois que la macro a saisi les lignes de la feuille sélectionné (ici : "Point de départ"), et qu'elle les copie-colle dans la feuille du pays approprié, j'aimerais qu'elle fasse un calcul de série pour une même équipe (présente en colonne B) pour chacune de statistiques. Je t'ai mis dans l'Excel joint un modèle avec la feuille Allemagne

Un essai.....je n'ai fait qu'appliquer tes formules....je te laisse le soin de vérifier, je me perds un peu....

Cordialement,

Bruno

Hello Xorsankukai, le forum,

Je te remercie pour ton retour. J'ai réalisé un test et cela a bien fonctionné.

Je regarderai plus en détails lorsque j'aurai un peu plus de temps. Mais d'après ce que je vois tout est nickel comme souvent .

Je te souhaite un bon dimanche et merci encore !

Prends sin de toi

Adrien

Hello Xorsankukai, le forum,

J'ai remarqué que la formule utilisé dans l'excel utilisé n'etait pas la bonne dans la "macro7_Dispatch"

 On Error Resume Next
                 ws.Range("B" & Rows.Count).End(xlUp).Offset(1, 0).Resize(UBound(tabloR, 2), 21) = Application.Transpose(tabloR)
                  Erase tabloR
                 ws.Range("B3:V" & ws.Range("B" & Rows.Count).End(xlUp).Row).Sort ws.Range("C3"), xlAscending

                 num = Application.WorksheetFunction.CountIf(myrange, ws.Name)
                 If ws.Range("B3") <> "" And num > 0 Then
                    ws.Range("W2:AK2").Interior.Color = RGB(0, 127, 255)            'couleur bleu foncé
                    dl = ws.Range("B" & Rows.Count).End(xlUp).Row
                  ws.Range("W3").Formula = "=IF(C3=W,IF(G3=G2,W2+1,1),1)"       'série 1,5*
                   ws.Range("W3").AutoFill Destination:=ws.Range("W3:W" & dl)
                  ws.Range("X3").Formula = "=IF(C3=C2,IF(H3=H2,X2+1,1),1)"       'série 2,5*
                   ws.Range("X3").AutoFill Destination:=ws.Range("X3:X" & dl)
                  ws.Range("Y3").Formula = "=IF(C3=C2,IF(I3=I2,Y2+1,1),1)"       'série 3,5*
                   ws.Range("Y3").AutoFill Destination:=ws.Range("Y3:Y" & dl)
                  ws.Range("Z3").Formula = "=IF(C3=C2,IF(J3=J2,Z2+1,1),1)"       'série 4,5*
                   ws.Range("Z3").AutoFill Destination:=ws.Range("Z3:Z" & dl)
                  ws.Range("AA3").Formula = "=IF(C3=C2,IF(K3=K2,AA2+1,1),1)"     'série -1,5*
                   ws.Range("AA3").AutoFill Destination:=ws.Range("AA3:AA" & dl)
                  ws.Range("AB3").Formula = "=IF(C3=C2,IF(L3=L2,AB2+1,1),1)"     'série -2,5*
                   ws.Range("AB3").AutoFill Destination:=ws.Range("AB3:AB" & dl)
                  ws.Range("AC3").Formula = "=IF(C3=C2,IF(M3=M2,AC2+1,1),1)"     'série -3,5*
                   ws.Range("AC3").AutoFill Destination:=ws.Range("AC3:AC" & dl)
                  ws.Range("AD3").Formula = "=IF(C3=C2,IF(N3=N2,AD2+1,1),1)"     'série -4,5*
                   ws.Range("AD3").AutoFill Destination:=ws.Range("AD3:AD" & dl)
                  ws.Range("AE3").Formula = "=IF(C3=C2,IF(O3=O2,AE2+1,1),1)"     'série 0,5 HT*
                   ws.Range("AE3").AutoFill Destination:=ws.Range("AE3:AE" & dl)
                  ws.Range("AF3").Formula = "=IF(C3=C2,IF(P3=P2,AF2+1,1),1)"     'série 1,5 HT*
                   ws.Range("AF3").AutoFill Destination:=ws.Range("AF3:AF" & dl)
                  ws.Range("AG3").Formula = "=IF(L3=L2,IF(C3=C2,AG2+1,1),1)"     'série -0,5 HT*
                   ws.Range("AG3").AutoFill Destination:=ws.Range("AG3:AG" & dl)
                  ws.Range("AH3").Formula = "=IF(C3=C2,IF(R3=R2,AH2+1,1),1)"     'série -1,5 HT*
                   ws.Range("AH3").AutoFill Destination:=ws.Range("AH3:AH" & dl)
                  ws.Range("AI3").Formula = "=IF(N3=N2,IF(C3=C2,AI2+1,1),1)"     'série W*
                   ws.Range("AI3").AutoFill Destination:=ws.Range("AI3:AI" & dl)
                  ws.Range("AJ3").Formula = "=IF(O3=O2,IF(C3=C2,AJ2+1,1),1)"     'série D*
                   ws.Range("AJ3").AutoFill Destination:=ws.Range("AJ3:AJ" & dl)
                  ws.Range("AK3").Formula = "=IF(P3=P2,IF(C3=C2,AK2+1,1),1)"     'série L*
                   ws.Range("AK3").AutoFill Destination:=ws.Range("AK3:AK" & dl)
                  ws.Range("W3:AK" & dl).Interior.Color = RGB(169, 234, 254)     'couleur bleu clair
                 End If

C'est dans la partie où l'on crée les series sur les differentes feuilles des pays.

Entre les colonnes W à AH, la formule en W3 n''est pas :

IF(C3=W,IF(G3=G2,W2+1,1),1)

Mais plutôt :

IF(G3="Oui",IF(G3=G2,IF(C3=C2,W2+1,1),1),0)

Pour les colones AI ; AJ ; AK, qui concernent les séries de W, D et L respectivement, cela serait par exemple en AI3

=IF(V3="W",IF(V3=V2),IF(C3=C2,AI2+1,1),1),0) 

En AJ3 :

=IF(V3="D",IF(V3=V2),IF(C3=C2,AJ2+1,1),1),0) 

En AK3 :

=IF(V3="L",IF(V3=V2),IF(C3=C2,AK2+1,1),1),0) 

J'ai essaié de rentrer ces formules mais je n'ai pas réussis car VBA m'indiquait une erreur quand je mettais (V2="W") et je n'ai pas compris ^^'.

Je te remerice par avance pour ton aide.

Je te souhaite une bonne soirée.

Laplcea

Bonjour laplacea, le forum,

J'ai essaié de rentrer ces formules mais je n'ai pas réussis car VBA m'indiquait une erreur quand je mettais (V2="W") et je n'ai pas compris ^^'.

Essaie de doubler les guillemets à "Oui" :

IF(G3=""Oui"",IF(G3=G2,IF(C3=C2,W2+1,1),1),0)
ws.Range("W3").Formula =IF(G3=""Oui"",IF(G3=G2,IF(C3=C2,W2+1,1),1),0

Fais en de même pour W,D et L.

ws.Range("AI3").Formula = "=IF(V3=""W"",IF(V3=V2,IF(C3=C2,AI2+1,1),1),0)"     'série W*
 ws.Range("AI3").AutoFill Destination:=ws.Range("AI3:AI" & dl)
ws.Range("AJ3").Formula = "=IF(V3=""D"",IF(V3=V2,IF(C3=C2,AJ2+1,1),1),0)"     'série D*
 ws.Range("AJ3").AutoFill Destination:=ws.Range("AJ3:AJ" & dl)
ws.Range("AK3").Formula = "=IF(V3=""L"",IF(V3=V2,IF(C3=C2,AK2+1,1),1),0)"     'série L*
 ws.Range("AK3").AutoFill Destination:=ws.Range("AK3:AK" & dl)

Cordialement,

Bonsir Xorsankukai, le forum

Effectivement j'ai testé le double guillemet et ça fonctionne !

Tous fonctionne ça donne un super résultat.

Permets-moi de te remercier une nouvelle fois . Je vais pouvoir avancer dans les prochains jours !

Je te souhaite une bonne journée en avance.

Laplacea

Salut Xorsankukai, le forum,

J'espère que tu vas bien.

J'aimerai modifier une macro que l'on a vu dans cette discussion :

Sub Macro_1_Traitement_Extract_Pays()

   Application.ScreenUpdating = False

   If ActiveSheet.Name <> "Liste des Pays" Then
     dernligne = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row

    For i = 2 To dernligne - 1
    If ActiveSheet.Range("G" & i + 1) = "" Then ActiveSheet.Range("G" & i + 1) = ActiveSheet.Range("G" & i)    'remplissage des vides
   Next i

    tabloA = Sheets("Liste des Pays").Range("A2:A" & Sheets("Liste des Pays").Range("A" & Rows.Count).End(xlUp).Row)
    tabloC = ActiveSheet.Range("G2:G" & dernligne)
    ReDim tabloD(UBound(tabloC, 1), 1)

    For i = 1 To UBound(tabloC, 1)
        For ln = 1 To UBound(tabloA, 1)
            If Left(tabloC(i, 1), 4) Like Left(tabloA(ln, 1), 4) Then
                tabloD(i - 1, 0) = tabloA(ln, 1)      'correspondance sur feuille Liste des Pays
            End If
        Next ln
    Next i
    ActiveSheet.Range("I2").Resize(UBound(tabloD, 1)) = tabloD
    Erase tabloD

   With ActiveSheet
     Set plage = .Range("A2:I" & dernligne)
         tablo = plage
     k = 0
      For i = 1 To UBound(tablo, 1)
         ReDim Preserve tabloR(1 To 6, 1 To k + 1)
          If tablo(i, 9) <> "" And tablo(i, 3) <> "" And tablo(i, 4) <> "" And tablo(i, 5) <> "" And tablo(i, 6) <> "" Then
            tabloR(1, k + 1) = tablo(i, 9)
            tabloR(2, k + 1) = tablo(i, 2)
            tabloR(3, k + 1) = tablo(i, 5)
            tabloR(4, k + 1) = tablo(i, 3)
            tabloR(5, k + 1) = tablo(i, 4)
            tabloR(6, k + 1) = tablo(i, 6)
            k = k + 1
          End If
      Next i
       On Error Resume Next
       .Cells.Delete
       .Range("B2") = "CHAMPIONNAT": .Range("B2").Font.Bold = True: .Range("B2").Interior.ColorIndex = 6
       .Range("C2") = "H team": .Range("C2").Font.Bold = True
       .Range("D2") = "A team": .Range("D2").Font.Bold = True
       .Range("E2") = "H goal": .Range("E2").Font.Bold = True
       .Range("F2") = "A goal": .Range("F2").Font.Bold = True
       .Range("G2") = "HT goal": .Range("G2").Font.Bold = True
       .Range("B" & Rows.Count).End(xlUp).Offset(1, 0).Resize(UBound(tabloR, 2), 6) = Application.Transpose(tabloR)
       Erase tabloR
       .Columns.AutoFit
       .Name = Format(Date, "dd-mm")

       For i = 3 To dernligne                              'boucle de la ligne 3 à la dernière
          .Range("G" & i) = Replace(Range("G" & i), " ", "")        'supprime les espaces inutiles
         If Len(.Range("G" & i)) > 7 Then                  'si nombre de caractère de la cellule G > 7
          .Range("E" & i) = Mid(.Range("G" & i), 2, 1)     'deuxième caractère de la cellule G en E
          .Range("F" & i) = Mid(.Range("G" & i), 4, 1)     'quatrième caractère de la cellule G en F
          .Range("G" & i) = Split(Range("G" & i), ";")(1)  'caractères de la cellule G situé après le ;
         End If
        Next i
   End With
   End If

Dans cette macro, on réalise une action dans la colonne G, où si dans une cellule, le nom du pays et du championnat apparait, la macro déroule jusqu'à la dernière cellule non vide, et y indique uniquement le nom du pays en colonne B, comme tu peux le voir dans les images ci-dessous :

pays pays 2

En fait j'ai un problème avec cette méthode, c'est que je souhaite retenir uniquement les championnats nationaux que j'étudie. Et non regroupés tous les championnats au nom du pays ou il y a lieu, comme nous l'avons fait.

Ainsi, j'ai créé dans l'Excel joint une feuille "Liste Championnats" où figure tous les championnats, avec les pays associés que j'étudie, et dont j'aimerai conserver les données.

Ainsi, j'aimerais que la macro analyse la colonne G de chaque ligne. Si le nom figurant dans cette colonne G figure dans la liste de la feuille "Liste championnat", alors on exécute les actions de la macro comme précédemment en conservant le nom du pays.

Par exemple, dans la première image ci-dessus, à la ligne 2 de la colonne G, on voit "ESPAGNELaLiga". Comme ce nom figure dans liste de la feuille "Liste Championnats", alors on continue la macro avec les mêmes actions que précédemment.

Si c'était inscrit "ESPAGNECopadelrey", on ne le retiendrais pas cette donnée et la macro supprimera ces lignes.

Je te remercie par avance pour ton aide et je te souhaite un bon après-midi !

Laplacea

Bonjour laplacea, le forum,

J'ai quelques difficultés à me replonger dans ton fichier........

Essaies sur l'onglet "TEST" et vois si c'est le résultat escompté.

Petit souci: dans la feuille "Liste championnats" en colonne G, le nom ne correspond pas forcément à celui de la colonne G de la feuille "TEST"

Par exemple tu as ALLEMAGNEBundesliga et ALLEMAGNEBundesliga - Femmes, la macro ne retiendra donc pas les femmes.....; de même pour ARMENIEPremier League et ARMÉNIEPremier League - Groupe RelégationARMÉNIEPremier League - Groupe Championnat, etc...

Cordialement,

Hello Xorsankukai, le forum,

Je te remercie pour ton retour.

Ta remarque est vraiment pertinente ! Ainsi est ce qu'il serait possible de dire à la macro "Si les premiers caractères de la cellule, en colonne G, sont les mêmes que celles présentes sur la feuille "Liste championnat", alors on applique les actions de la macro. Sinon on supprime la ligne" ?

Je te remercie d'avance pour ton retour et je te souhaite un bon après-midi

Prends soin de toi !

Laplacea

Salut laplacea,

Bonjour le forum,

Ainsi est ce qu'il serait possible de dire à la macro "Si les premiers caractères de la cellule, en colonne G, sont les mêmes que celles présentes sur la feuille "Liste championnat", alors on applique les actions de la macro. Sinon on supprime la ligne" ?

As-tu tester le deuxième fichier (V2) que je t'ai posté ?

J'ai rajouté un astérisque

If tabloC(i, 1) Like tabloA(ln, 4) & "*" Then

Tu remarqueras que tu as plus de données affichées que dans la V1 puisqu'on tient compte du texte en plus dans la colonne G.

Cordialement,

Hello Xorsankukai, le forum,

J'espère que tu vas bien

Je te remercie pour ton retour

Effectivement, je me suis un peu précipité et je n'ai pas regardé le 2ᵉ fichier.

Que fait précisément la macro ? Je l'ai testé, cela me semble bon.

Je te remercie pour ton temps et de ton aide.

Prends soin de toi !

Laplacea

Bonjour Adrien, le forum,

Que fait précisément la macro ?

Je ne suis pas très doué avec les explications mais je vais essayer de t'expliquer ....

Je procède par étapes:

1) Je comble les vides dans la colonne G de la feuille active (TEST par exemple)

2) Je compare les valeurs de la colonne G avec les valeurs de la colonne E de la feuille Liste des championnats.

Si la valeur de G contient la valeur de E alors j'écris le nom du pays correspondant en colonne A de la feuille Liste des championnats dans la colonne I de la feuille active.

3) A partir de cette colonne I, je récupère les données correspondantes.

En espérant que cela t'aide....

Cordialement,

Bonjour Xorsankukai, le forum,

Je te remercie pour ton retour.

Je ne suis pas très doué avec les explications mais je vais essayer de t'expliquer ....

Tu l'as super bien fait et ça marche parfaitement.

Je te remercie une nouvelle fois de ton aide.

Je te souhaite un bon week-end.

Bien à toi.

Laplacea

Rechercher des sujets similaires à "traitement extract"