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)
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)
- Je supprime tous les onglets sauf "Liste des Pays" et "Point de départ"
- Je crée les onglets à partir de la liste mais uniquement si les Pays figurent sur la feuille "Point de départ"
- 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 (
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:
- crées d'abord les onglets Pays (macroAjout_Feuilles_Pays() dans module 2)
- sélectionnes les onglets dont tu veux les résultats
- 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 :
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,
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.
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 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 :
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égation où ARMÉ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