copie lignes selon 1 cel de même colonne de +s feuilles

papapaul

XLDnaute Impliqué
Ca devrait être simple. (pas pour moi)
Je suis bloque apres ca, pouvez vous m'aider ?
Dans mes feuilles sont saisis ligne par ligne la date les noms et
la classe des participants.
Je voudrais extraire en fonction d'1 cours et d'1 ou plusieurs classes sélectionnés vers une feuille "voir"
Soyez indulgent, je rame grave.

J'ai creer mon usf avec les codes ci-dessous : tout va bien

Private Sub CommandButton2_Click()
Dim y As Integer, z As Integer
For y = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(y) = True Then
TextBox2 = ListBox1.List(y)
End If
Next y
For z = 0 To ListBox2.ListCount - 1
If ListBox2.Selected(z) = True Then
ListBox3.AddItem ListBox2.List(z)
End If
Next z
TextBox1.Value = ListBox3.ListCount
End Sub

Private Sub userform_initialize()
For Each cel In Range("Recap!a4:a10") (noms de mes classes)
ListBox1.AddItem cel.Value
Next
For x = 1 To Sheets.Count
If Not Sheets(x).Name = "Recap" Then
ListBox2.AddItem Worksheets(x).Name (noms de mes cours)
End If
Next
End Sub

Mais je coince quand je veux activer un bouton qui me dirais selon
la selection de la listbox1(selection unique = classe) qui va dans la combo
ET la selection de la listbox3 qui est les items de mes feuilles,
de copier les lignes correspondantes. dans une feuille "voir".
J'arrive pas à ecrire le truc ci-dessous comme il faut :
Ca copie bien les lignes mais de toutes les feuilles, pas seulement des
feuilles que je mets dans la listbox3.
Y a t'il un pro que pourrait rectifier toutes mes erreurs.
Je suis tout près de la solution mais je fatigue.
Au passage merci à tous ceux qui m'ont permis d'avancer, les codes
que j'utilise sont des bouts piochées un peu partout mais pour
les adapter je suis nul :mad:


Private Sub CommandButton1_Click()
Worksheets.Add before:=Worksheets(ActiveWorkbook.Worksheets.Count - 10)
ActiveSheet.Name = "voir"
Dim x As Byte, y As Integer 'deçlare les variable x et y
Dim cel As Range 'déclare la variable cel
Dim rech As Range 'décalre la variable rech
Application.ScreenUpdating = False 'masque les changements à l'écran

For x = 1 To Sheets.Count 'boucle 1 : sur tous les onglets du classeur (sauf le premier)

C'est cette ligne ci-dessous que je sais pas faire marcher ??
For y = 0 To UserForm1.ListBox3.ListCount - 1 'boucle 2 : sur tous les éléments de la listBox3

With Sheets(x) 'prend en compte l'onglet de la boucle 1
je recherche tjs dans cette colonne(d)
Set rech = .Range("d4:d200") 'définit la variable rech

For Each cel In rech 'boucle 3 : sur toutes les cellules de la plage rech

'condition : si la valeur de la cellule (convertie en texte) est égale à la valeur de l'élément de la boucle 2
If CStr(cel.Value) = UserForm1.TextBox2.Value Then
Set dest = Sheets("voir").Range("A65536").End(xlUp).Offset(1, 0) 'définit/redéfinit la variable dest
cel.EntireRow.Copy Destination:=dest 'copie et colle la ligne correpondant à l'élément
End If 'fin de la condition

Next cel 'prochaine cellule de la boucle 3
End With 'fin de la prise en compte de l'onglet de la boucle 1

Next y 'prochain élément de la boucle 2

Next x 'prochain onglet de la boucle 1
Unload UserForm1

Application.ScreenUpdating = True 'affiche les chamgements à l'écran

End Sub

Bravo le forum, je continue a chercher, :)
Vive XLD
 

Discussions similaires

Réponses
17
Affichages
760

Statistiques des forums

Discussions
311 733
Messages
2 082 015
Membres
101 868
dernier inscrit
pierreselo33