Sub Transfert()
Dim Ws As Worksheet, Wd As Worksheet, NoLigne%, dernLig%, Dl%, i%, j%, Course$ 'Déclaration des variables
Application.ScreenUpdating = False
j = 11
Set Wd = Sheets("Feuil1")
Wd.Activate 'Active l'onglet
dernLig = Wd.Range("B" & Rows.Count).End(xlUp).Row + 1 'n° de la dernière ligne non vide de la colonne B
Wd.Range(Cells(j, 2), Cells(dernLig, 21)).Clear 'efface les anciennes données
Wd.Range("B8").Clear
Set Ws = Sheets("Course du jour")
Ws.Activate 'Active l'onglet
Range("B2").Select
'Attribue à la variable "Course" le nom de la course à chercher par rapport au combobox
Course = UCase(Left(Sheets("Course du jour").ComboBox1.Value, 7)) & "N°" & Right(Sheets("Course du jour").ComboBox1.Value, 1)
Cells.Find(What:=Course, After:=ActiveCell, LookIn:=xlValues, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=True, SearchFormat:=False).Activate
NoLigne = ActiveCell.Row + 4 'Attribue le N° de la ligne
Cells(NoLigne, 2).Select
Dl = Cells(NoLigne, 2).End(xlDown).Row 'n° de la dernière ligne non vide du bloc de la colonne B
For i = NoLigne To Dl 'boucle sur les lignes
If Cells(i, 2) <> "" Then 'si la cellue colonne "B" n’est pas vide
Ws.Range(Cells(i, 2), Cells(i, 8)).Copy Wd.Cells(j, 2) 'copie vers la feuille Feuil1
Ws.Range(Cells(i, 10), Cells(i, 10)).Copy Wd.Cells(j, 9) 'copie vers la feuille Feuil1
j = j + 1
End If
Next i
Wd.Cells(8, 2).Value = Course 'Affiche le nom de la course en B8
Sheets("Course du jour").Activate
Range("B2").Select
Application.ScreenUpdating = True
End Sub
Macro Feuille :
Private Sub ComboBox1_Change()
Module1.Transfert
End Sub
Private Sub ComboBox1_DropButtonClick()
ActiveSheet.ComboBox1.ListFillRange = "B3:C11"
ComboBox1.ColumnCount = 2
ComboBox1.ColumnHeads = False
ComboBox1.ColumnWidths = "60;220"
End Sub
Il faut rajouter un bouton pour remise à zéro afin d’effacer les anciennes données
Ensuite, il faut préciser le N° de la course en colonne A par exemple afin de les différentier