Aide sur VBA créer une boucle pour recherche données

Bonjour à tous,

Je suis novice en VBA et j'essaye de faire un petit truc mais je bloque...

Mon objectif est de créer une requête. Je renseigne une box et excel me recherche l'information dans une colonne. Quand il trouve l'info il colle la ligne entière sur une autre feuille. Et si il y en a plusieurs, il colle toutes les lignes les unes à la suite des autres dans une autre feuille.

Une fonction recherche en gros qui créé des statistiques.

J'ai réalisé ce code déjà qui me permet de rechercher une valeur, excel la trouve dans une colonne et la colle dans une cellule d'une autre feuille excel.

Or il me reste le plus gros...

1. Une fois qu'il a trouvé la cellule, il faut non pas copier la cellule mais la ligne.

2. Il faut que toutes les lignes contenant cette valeur soient collées les unes à la suite des autres.

HELLP !! Si quelqu'un peut me donner un coup de main ce serait super sympa !

Voila le code que j'ai fait pour l'instant :

Sub nouveau()

    Dim rngTrouve As Range
    Dim strChaine As String

    strChaine = InputBox("Question")

    Set rngTrouve = Sheets("Option").Columns(1).Cells.Find(strChaine, , xlValues, xlWhole)

    If rngTrouve Is Nothing Then

        MsgBox "Pas trouvé"

    Else

        MsgBox "Trouvé dans la cellule " & rngTrouve.Address(0, 0) & " !"

       rngTrouve.Copy Sheets("feuil3").Range("A1")

    End If

End Sub

Merci d'avance !

Bonjour,

Sub nouveau()
Dim rngTrouve As Range
Dim strChaine As String, firstAddress As String
Dim n As Long
    n = 1
    strChaine = InputBox("Question")
    Set rngTrouve = Sheets("Option").Columns(1).Cells.Find(strChaine, , xlValues, xlWhole)
    If Not rngTrouve Is Nothing Then
        firstAddress = rngTrouve.Address
        Do
            MsgBox "Trouvé dans la cellule " & rngTrouve.Address(0, 0) & " !"
            rngTrouve.EntireRow.Copy Sheets("feuil3").Range("A" & n)
            n = n + 1
            Set rngTrouve = Sheets("Option").Columns(1).FindNext(rngTrouve)
        Loop While Not rngTrouve Is Nothing And rngTrouve.Address <> firstAddress
    Else
        MsgBox "Pas trouvé"
    End If
End Sub

A+

Merci beaucoup pour l'efficacité !!!!!!!!!

Je sens que ça va m'être utile aussi

Bonjour,

En effet très utile!

Pour pousser un peu plus loin, disons que je veuille rechercher dans plusieurs colonnes?

Set rngTrouve = Sheets("Option").Columns(1).Cells.Find(strChaine, , xlValues, xlWhole)

Quelle serait la syntaxe?

1 & 2 ?

De même pour la recherche?

Si nous avions plusieurs arguments?

strChaine = Range("B2,C2").Value???

Bien à vous,

Kwld

Bonjour,

En effet très utile!

Pour pousser un peu plus loin, disons que je veuille rechercher dans plusieurs colonnes?

Set rngTrouve = Sheets("Option").Columns(1).Cells.Find(strChaine, , xlValues, xlWhole)

Quelle serait la syntaxe?

1 & 2 ?

Bien à vous,

Kwld

Bonjour,

Insérer cette instruction au sein d'une boucle, par exemple :

For i = 1 To 2 Then
    Set rngTrouve = Sheets("Option").Columns(i).Cells.Find(strChaine, , xlValues, xlWhole)
Next i

En effet, logic!

Ca marche très bien

Tks!

En effet, logic!

Ca marche très bien

Tks!

Sinon tu dois aussi pouvoir écrire Columns("A:B")

Bonjour,

Désolé j'avais décroché du sujet quelques jours pour d'autres impératifs.

Je reviens sur ma question donc:

J'ai simplement indiqué qu'au lieu de faire la recherche dans une colonne, la recherche sera faite dans un range.

Jusqu'ici tout va bien

Quid: il me crée maintenant des doublons:

Exemple: si le mot "Carte" apparait en B2, D2, X2 et AZ2, j'aurai comme résultat qu'il me recopie 4x la ligne.

Quelle solution pourrait être apportée?

Merci de votre aide

Sub nouveau()

Dim rngTrouve As Range

Dim strChaine As String, firstAddress As String

Dim n As Long

n = 2

strChaine = Range("Critere").Value

Set rngTrouve = Sheets("Data").Range("Table1").Cells.Find(strChaine, , xlValues, xlWhole)

If Not rngTrouve Is Nothing Then

firstAddress = rngTrouve.Address

Do

rngTrouve.EntireRow.Copy Sheets("Resultat").Range("A" & n)

n = n + 1

Set rngTrouve = Sheets("Data").Range("Table1").FindNext(rngTrouve)

Loop While Not rngTrouve Is Nothing And rngTrouve.Address <> firstAddress

Else

End If

End Sub

Rechercher des sujets similaires à "aide vba creer boucle recherche donnees"