Se servir de la boucle for pour chercher et coller dans une autre feuille

Bonjour,

je viens vers vous car suis un peu perdu, en effet : j ai deux feuilles "data" avec en premiere colonne des noms. sur la deuxieme feuille en "a1" j'ai fait une liste deroulante des noms de la feuille "data".

sur la deuxieme feuille je souhaite grace à la liste deroulante (condition), recuperer toutes les lignes de la feuille "data" qui correspondent au nom de la liste deroulante sur la feuille "recap"

Mon souci, j y arrive mais: sur la feuille recap excel s'arrete à la premiere occurence trouvée.

pourriez vous m'aider ? ça dépasse largement mes competences de tout petit débutant rire.

voila ce que j'ai ecrit, je joins aussi mon dossier

bonne journée et merci encore de votre aide

Sub recherche()

Dim data As Worksheet

Dim recap As Worksheet

Dim nom As String

Dim i As Integer

Set data = Worksheets(1)

Set recap = Worksheets(2)

nom = Sheets("recap").Cells(1, 1).Value

'd abord on efface les donnees

recap.Range("a2:m7").ClearContents

data.Select

dl = Cells(Rows.Count, 1).End(xlUp).Row

For i = 2 To dl

If Cells(i, 1) = nom Then

Range(Cells(i, 1), Cells(i, 13)).Copy

recap.Select

ligne = Range("a1000").End(xlUp).Row

Cells(ligne, 1).Offset(1, 0).Select

ActiveSheet.Paste

End If

Next i

Application.CutCopyMode = False

End Sub

11triparnom.xlsm (27.23 Ko)

Bonjour,

la recherche de la dernière ligne dl s'effectue sur la feuille courante puisque la feuille n'est pas précisée. Donc dl=1 et la boucle s'arrête après une itération.

déclarer des variables pour représenter les feuilles c'est bien, mais il faut les utiliser partout où c'est nécessaire, ça évite de sélectionner les feuilles.

Une proposition de correction:

Sub recherche()
 Dim data As Worksheet
 Dim recap As Worksheet
 Dim nom As String
 Dim i As Integer

 Set data = Worksheets(1)
 Set recap = Worksheets(2)
 nom = recap.Cells(1, 1).Value
'd abord on efface les donnees
 recap.Range("a2:m7").ClearContents

'data.Select => inutile désormais
 dl = data.Cells(Rows.Count, 1).End(xlUp).Row
 ligne = recap.Range("A" & Rows.Count).End(xlUp).Row
 For i = 2 To dl
    If data.Cells(i, 1) = nom Then
        ligne = ligne + 1 ' évite de redéfinir la dernière ligne à chaque itération
        data.Range("A" & i).Resize(1, 13).Copy recap.Cells(ligne, 1)
    End If
 Next i

 Application.CutCopyMode = False
End Sub

A+

Bonjour,

à tester,

Sub recherche()
Dim data As Worksheet
Dim recap As Worksheet
Dim nom As String
Dim i As Integer

Set data = Worksheets(1)
Set recap = Worksheets(2)
nom = recap.Cells(1, 1).Value
'd abord on efface les donnees
recap.Range("a2:m7").ClearContents

dl = data.Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To dl
    If data.Cells(i, 1) = nom Then
        rw = recap.Cells(Rows.Count, 1).End(xlUp).Row + 1
        data.Range(Cells(i, 1).Address, Cells(i, 13).Address).Copy recap.Range("A" & rw)
    End If
Next i
End Sub

bonsoir,

tout d'abord merci beaucoup pour vos deux reponses hyper rapides, vous avez tout à fait résolu mon souci

de plus je viens d'apprendre grace à vous deux choses en vba telles que "resize" et "adress" (ça vous donne idée de mon niveau !!!)

je vous souhaite une bonne soirée et vous dis encore merci

Merci pour ce retour, au plaisir!

si le problème est résolu, s.v.p. clôture le fil, par un clic sur le bouton (indiquer par la flèche verte)

resolu

Merci!

Rechercher des sujets similaires à "servir boucle chercher coller feuille"