Recherche ligne grace à une boucle

Bonjour,

j'ai un projet à réaliser et j'ai une question dans la quelle je dois réaliser une petite boucle pour trouver la ligne qui correspond au code client que je dois renseigner.

Je m'explique plus précisément:

j'ai deux feuilles, la premiere est nommée "fichier des clients" la seconde est nommée "devis"

je dois réaliser une boucle simple à base de: do while/loop, qui va me permettre de retrouver le numero de la ligne qui correspond au code client que je renseigne dans un InputBox

pour le moment j'ai fais ca mais c'est incomplet et je ne sais pas comment faire

Sub Devis()

Dim i As Integer

Dim valeur As String

i = 3

valeur = InputBox("Entrez le code client:", "saisie", 0)

Do While valeur <> ""

i = i + 1

Loop

Worksheets("DEVIS").Cells(4, 1).Value = Worksheets("FICHIER DES CLIENTS").Cells(i, 1).Value

End Sub

merci pour votre aide

Bonjour Guigui5577

Si je puis me permettre :

1) pourquoi utiliser du code VBA alors qu'on peut le faire avec une formule

2) pourquoi faire une boucle alors qu'on peut utiliser Find

Bon sinon voici un code à tester

Sub Devis()
  ' Pour les lignes la variable doit être déclarée en Long
  Dim dLig As Long, Lig As Long
  Dim sValeur As String

  sValeur = InputBox("Entrez le code client:", "saisie", 0)
  ' Avec la feuille de recherche
  With Sheets("FICHIER DES CLIENTS")
    ' Si la colonne A contient des données
    dLig = .Range("A" & Rows.Count).End(xlUp).Row
    ' Boucler sur les lignes
    For Lig = 3 To dLig
      If .Range("LettreColonneDuNuméro" & Lig) = sValeur Then Exit For
    Next Lig
    Sheets("DEVIS").Cells(4, 1).Value = .Cells(Lig, 1).Value
  End With
End Sub

A+

Merci pour votre réponse

C'est la consigne, je dois réaliser une boucle afin de retrouver le numéro de ligne correspondant au code entré

J'ai essayé votre programme mais il me surligne en jaune la ligne:

If .Range("LettreColonneDuNuméro" & Lig) = sValeur Then Exit For

Re,

Tu ne nous indiques pas dans quelle colonne se trouve le numéro de client

J'ai donc mis "LettreColonneDuNuméro" à remplacer par la lettre de la colonne concernée mon dieu et tu veux développer

ahah oui je viens de m'en rendre compte

jai donc remplacé par

dLig = .Range("A" & Rows.Count).End(xlUp).Row

mais maintenant c'est la ligne ci dessous qui est surlignée

Worksheets("DEVIS").Cells(4, 1).Value = .Cells(Lig, 1).Value

Bonjour à toutes et tous,

Une petite contribution !?

Cdlt.

Public Sub Devis()
Dim sValeur As String
Dim dLig As Long
Dim rng As Range
Dim lig
    sValeur = InputBox("Entrez le code client:", "saisie", 0)
    With Worksheets("FICHIER DES CLIENTS")
        dLig = .Cells(.Rows.Count, 1).End(xlUp).Row
        Set rng = .Cells(1).Resize(dlign)
        'numero de ligne
        lig = Application.Match(sValeur, rng, 0)
        If Not IsError(lig) Then
            Worksheets("DEVIS").Cells(4, 1).Value = lig
        End If
    End With
End Sub

Jean-Eric bonjour et merci

Mais il faut lire les post des demandeur

C'est la consigne, je dois réaliser une boucle afin de retrouver le numéro de ligne correspondant au code entré

Sinon, tu penses bien

Re,

ahah oui je viens de m'en rendre compte

jai donc remplacé par

dLig = .Range("A" & Rows.Count).End(xlUp).Row

mais maintenant c'est la ligne ci dessous qui est surlignée

Worksheets("DEVIS").Cells(4, 1).Value = .Cells(Lig, 1).Value

Je l'ai laissé passer celle là

Mets ce code et ça devrait aller

    Sheets("DEVIS").Cells(4, 1).Value = .Cells(Lig, 1).Value

@+

Re,

Ma proposition (à tester) avec une boucle Do While/Loop comme demandé par guigui5577.

je dois réaliser une boucle simple à base de: do while/loop...

Public Sub Devis()
Dim sValue As String
Dim lastRow As Long, lRow As Long, rw As Long
Dim Found As Boolean

    sValue = InputBox("Entrez le code client:", "saisie", 0)

    With Worksheets("FICHIER DES CLIENTS")
        lastRow = .Cells(.Rows.Count, 1).End(xlUp).Row
        lRow = 3
        Do While lRow <= lastRow And Found = True
            If .Cells(lRow, 1).Value = sValue Then
                rw = lRow
                Found = True
            End If
            lRow = lRow + 1
        Loop
    End With

    Worksheets("DEVIS").Cells(4, 1).Value = rw

End Sub

Merci pour vos réponses

Jean-Eric que voyez vous par rw ?

j'ai un probleme avec la formule de la fin, elle est toujours surlignée:

que ce soit celle la: Sheets("DEVIS").Cells(4, 1).Value = .Cells(Lig, 1).Value

celle la: worksheets("devis"). Cells(4,1). Value = worksheets("client").cells(i,1).value

ou encore celle la: Worksheets("DEVIS").Cells(4, 1).Value = rw

Re,

lRow ou rw correspondent au numéro de ligne de la valeur cherchée.

Si difficulté majeure, joindre un petit fichier pour illustrer ta demande.

On a perdu BrunoM45 ?

Cdlt.

Merci beaucoup

Une petite question, comment écrit-on

Tant que la valeur est différente de la cellule (i,1)

j'ai essayer par

Do While Valeur <> .Cells(i, 1).Value

Mais ce n'est pas correcte

Rechercher des sujets similaires à "recherche ligne boucle"