Recuperer le numéro de la ligne

Bonjour ,

Voila je doit crée un programme pour un projet à la fac et mon programme consiste à crée automatiquement un devis ,

mais voila j'ai fait InputBox("Entrer le code client: ", "SAISIE", 0) donc la l'utilisateur va rentrer le code client et c'est la que je cherche une formule pour que le programme retrouve ce code client dans une page appeler "CLIENTS" et une fois que le programme à trouver le code client j'ai besoin qu'il récupère le numéro de la ligne ou il se trouver et qu'il affecte ce numéro de ligne à la variable i .

Merci pour votre aide!

Bonsoir Allostarz, bonsoir le forum,

Essaie comme ça :

Sub Macro1()
Dim C As Variant 'déclare la variable C (Code)
Dim R As Range 'déclare la variable R (Recherche)
Dim LI As Integer 'déclare la variable LI (LIgne)

deb: 'étiquette
C = Application.InputBox("Entrer le code client: ", "SAISIE", Type:=2) 'définit le code C
If C = False Then Exit Sub 'si bouton "Annuler", sort de la procédure
'définit la recherche R (recherche la valeur entière de C dans la première colonne de l'onglet "CLIENTS") [colonne à adapter]
Set R = Sheets("CLIENTS").Columns(1).Find(C, , xlValues, xlWhole)
If Not R Is Nothing Then 'condition : si il existe au moins une occurrence trouvée
    LI = R.Row 'définit la ligne LI de la première occurrence trouvée
    MsgBox "Ligne : " & LI 'message affichant la ligne LI (ligne de code à supprimer par la suite...)
Else 'sinon
    'si "Oui" au message, relance la boîte d'entrée C via l'étiquette "deb"
    If MsgBox("Code erroné ! Voulez-vous recommencer ?", vbYesNo, "ATTENTION") = vbYes Then GoTo deb
End If 'fin de la condition
End Sub

Merci pour ton aide je pense que ton programme doit fonctionner mais, la prof

nous à pas appris à utiliser les : deb: 'étiquette les Then GoTo deb

End If 'fin de la condition et je ne voudrais pas quel me demande ou est ce que j'ai trouver tous ça bref j'ai essayez de mettre en place ta formule dans mon code mais j'ai une erreur avec les R.

Et encore un grand merci pour ton aide!

Sub devis()
    Dim ndv As Integer
    Dim ccl As String
    Dim cdc As Variant
    Dim LI As Integer
    Dim R As Range
        nvd = MsgBox("Voulez vous crée un nouveau devis: ", 36, "Nouveau Devis")
        Do While nvd = vbYes
        cdc = InputBox("Entrez le numéro du client: ", "SAISIE", 0)
        R = Sheets("CLIENTS").Columns(1).Find(cdc, , xlValues, xlWhole)     <=== Ici  le debeugeur me souligne cette phrase en  jaune.
        If Not R Is Nothing Then
        LI = R.Row
        End If
        nvd = MsgBox("Voulez vous crée un nouveau devis: ", 36, "Nouveau Devis")
        Loop
End Sub

Bonjour,

Sub devis()
    Dim cdc, R As Range, nvd%, LI%
    nvd = MsgBox("Voulez vous crée un nouveau devis: ", vbYesNo + vbQuestion, "Nouveau Devis")
    Do While nvd = vbYes
        cdc = InputBox("Entrez le numéro du client: ", "SAISIE", 0)
        If cdc <> "" Then
            Set R = Sheets("CLIENTS").Columns(1).Find(cdc, , xlValues, xlWhole)
        Else
            Exit Sub
        End If
        If Not R Is Nothing Then LI = R.Row
        nvd = MsgBox("Voulez vous crée un nouveau devis: ", vbYesNo + vbQuestion, "Nouveau Devis")
    Loop
End Sub

Cordialement.


Toutefois, une fois la ligne recueillie, il faudrait créer le devis... !

Bonjour ,

Merci pour ton aide mais ton If cdc <> "" Then ne laisse pas la possiblié de faire un erreur et du coup si il se tromper on peux pas recommencer .

Re,

Si cdc = "", c'est qu'il a cliqué sur Annuler. Si donc il annule, il y a lieu de sortir.

L'"erreur" se produira si R = Nothing. Et là la boucle continuera.

Par contre sur ce test, d'une part , si LI est définie, il y a lieu de créer ton fameux devis... et sinon, signaler à l'utilisateur que sa saisie était erronée avant de lui demander s'il veut en créer un autre.

Cordialement.

Bonjour le fil, bonjour le forum,

Ha il fallait t'aider mais sans que ta prof s'en rende compte !... Tu aurais dû mettre tes cours en pièce jointe...

ThauThème

ThauThème pas forcement puisque si je viens vous demander votre aide c'est qu'elle nous à pas appris enfin elle nous à jamais rien appris elle nous à donnez son cours sur papier et c'est tous on doit se démerder.

Donc je vais bien lui dire que je suis aller chercher la formule sur internet mais aprés si je lui sort des truck abuser et que je ne comprend pas forcement voila ça sera trop.

Mais sinon pour le programme j'ai repris à nouveau ton code et j'ai fait cela :

Tous fonctionne Sauf que si la personne répond non à (If MsgBox("Code erroné ! Voulez-vous recommencer ?", 36, "ATTENTION") = vbYes Then GoTo deb) , mon worksheets est souligner en jaune et j'ai une erreur 1004

Sub Macro1()
    Dim C As Variant
    Dim R As Range
    Dim LI As Integer

    nvd = MsgBox("Voulez vous crée un nouveau devis: ", 36, "Nouveau Devis")
    Do While nvd = vbYes
deb:
        C = InputBox("Entrer le code client: ", "SAISIE", 0)
        Set R = Sheets("CLIENTS").Columns(1).Find(C, , xlValues, xlWhole)
        If Not R Is Nothing Then
        LI = R.Row
        Else
        If MsgBox("Code erroné ! Voulez-vous recommencer ?", 36, "ATTENTION") = vbYes Then GoTo deb

        End If
        Worksheets("DEVIS").Cells(4, 3).Value = Worksheets("CLIENTS").Cells(LI, 2).Value
        nvd = MsgBox("Voulez vous crée un nouveau devis: ", 36, "Nouveau Devis")
    Loop
End Sub

Normal,

Il faut que tu fasses passer les 2 lignes avant Loop directement après LI = R.Row.

Bonjour le fil, bonjour le forum,

Arf ! ne prend pas la mouche c'était juste pour la foune... Heu ! pardon, pour le fun voulais-je dire...

InputBox a deux utilisations. La Fonction est la Méthode. Je lui préfère la Méthode car elle permet de sortir plus facilement quand on clique sur le bouton Annuler qu'affichent l'une et l'autre des possibilités. Regarde l'aide VBA...

Sinon ça plante car dans ce cas la variable LI n'est pas définie. Elle vaut 0 et Cells(0, 2) génère une erreur.

Ton code modifié (à ma sauce, j'espère qu'elle plaira à ta prof...)

Sub Macro1()
Dim nvd As Integer
Dim C As Variant
Dim R As Range
Dim LI As Integer

dev:
nvd = MsgBox("Voulez vous créer un nouveau devis: ", 36, "Nouveau Devis")
If nvd = vbNo Then Exit Sub
deb:
C = Application.InputBox("Entrer le code client: ", "SAISIE", Type:=2)
If C = False Then Exit Sub
Set R = Sheets("CLIENTS").Columns(1).Find(C, , xlValues, xlWhole)
If Not R Is Nothing Then
    LI = R.Row
Else
    If MsgBox("Code erroné ! Voulez-vous recommencer ?", 36, "ATTENTION") = vbYes Then GoTo deb 'Else Exit Sub
End If
Worksheets("DEVIS").Cells(4, 3).Value = Worksheets("CLIENTS").Cells(LI, 2).Value
GoTo dev
End Sub

C'est vrai que j'aurai due voir ça mais bon j'ai tellement de work sheets a faire que je voulais tous mettre à la fin.

Merci beaucoup pour votre aide .

bonjour

Comme ca le prof ne se rende pas compte que vous l avez dépasse

Sub Macro1()
        Dim C As Variant
        Dim R As Range
        Dim LI As Integer, i As Integer
LI = 0
        C = InputBox("Entrer le code client: ", "SAISIE", "EnrTer le code !")
' Range("CLIENTS") plage nomme =CLIENTS
    For Each R In Range("CLIENTS")
        If R.Value = C Then
        LI = R.Row
         End If
    Next

 If Not LI = 0 Then
    MsgBox "la valeur de variable est :" & LI
    'ou bien
    i = LI 'ou bien .......!?

ElseIf LI = 0 Then
   If MsgBox("Code erroné ou ce code n existe pas ! Voulez-vous recommencer ?", 36, "ATTENTION") = vbYes Then
  '................................
   Else
   Exit Sub
   End If
End If

    End Sub

BONJOUR

Cela n est tros complique :

Sub Macro1()
        Dim C As Variant
        Dim R As Range
        Dim LI As Integer, i As Integer
        Dim rep

Do

LI = 0
C = InputBox("Entrer le code client: ", "SAISIE", "EnrTer le code !")
If C = "" Then Exit Do 'si bouton "Annuler", sort de la procédure
    For Each R In Range("CLIENTS")
        If R.Value = C Then
       LI = R.Row
         End If
    Next

 If Not LI = 0 Then
    MsgBox "la valeur de variable est :" & LI
    'ou bien
    i = LI 'ou bien .......!?

ElseIf LI = 0 Then
  rep = MsgBox("Code erroné ou ce code n existe pas ! Voulez-vous recommencer ?", vbYesNo + vbCritical + vbDefaultButton2, "ATTENTION")
End If
Loop While rep = vbYes
    End Sub

Merci ,

Je vais présenter une première version à la prof demain pour voir ce qu'elle en dit je vous tiens au courant!

Trop compliqué pour elle toutes les formules que vous m'avez sortis xD elle était perdu la pauvre vous êtes trop dans le futur les gas bon j'ai comeme réussis à résoudre mon problème.

Ce petit programme que j'ai fait la convaincu car j'utilise que des truck qu'il y a dans son cours.

Je le partage aux cas ou quelqu'un d'autre en à besoin

     Do While nvd = vbYes
    c = InputBox("Entrer le code client: ", "SAISIE", 0)
        Do While c <> Worksheets("CLIENTS").Cells(i, 1)
        i = i + 1
        Loop
Rechercher des sujets similaires à "recuperer numero ligne"