Boucle DO WHILE
Résolu
laura54960
Messages postés
17
Statut
Membre
-
Polux31 Messages postés 7219 Statut Membre -
Polux31 Messages postés 7219 Statut Membre -
Bonjour,
Je dois créer un programme sous excel 2007 permettant de rechercher un code client dans une feuille "Client" et en fonction de ce code, afficher toutes les données (nom, prénom, adresse, cp,...) dans un devis type facture.
Voici le début de mon programme :
Sub DEVIS()
Dim codeclient As String
Dim modepaiement As String
Dim txremise As Single
Dim montantHT As Single
Dim montantTTC As Single
Dim transport As Single
Dim total As Single
codeclient = InputBox("Veuillez saisir le code client : ", "SAISIE", 0)
Worksheets("Devis").Cells(7, 5).Value = codeclient
modepaiement = InputBox("Indiquez le mode de paiement : ", "SAISIE", 0)
Worksheets("Devis").Cells(12, 2).Value = modepaiement
Do while Worksheets("Devis").Cells(7, 5).Value <> Worksheets("Clients").Cells(i, 1).Value
Worksheets("Devis").Cells(7, 2).Value = Worksheets("Clients").Cells(i, 2).Value
Worksheets("Devis").Cells(8, 2).Value = Worksheets("Clients").Cells(i, 3).Value
Worksheets("Devis").Cells(8, 5).Value = Worksheets("Clients").Cells(i, 4).Value
Worksheets("Devis").Cells(9, 2).Value = Worksheets("Clients").Cells(i, 5).Value
Worksheets("Devis").Cells(9, 5).Value = Worksheets("Clients").Cells(i, 6).Value
Worksheets("Devis").Cells(10, 2).Value = Worksheets("Clients").Cells(i, 7).Value
Worksheets("Devis").Cells(10, 5).Value = Worksheets("Clients").Cells(i, 8).Value
Loop
End Sub
Ca bloque au niveau du DO WHILE.
Comment puis-je faire ?
Merci d'avance
Je dois créer un programme sous excel 2007 permettant de rechercher un code client dans une feuille "Client" et en fonction de ce code, afficher toutes les données (nom, prénom, adresse, cp,...) dans un devis type facture.
Voici le début de mon programme :
Sub DEVIS()
Dim codeclient As String
Dim modepaiement As String
Dim txremise As Single
Dim montantHT As Single
Dim montantTTC As Single
Dim transport As Single
Dim total As Single
codeclient = InputBox("Veuillez saisir le code client : ", "SAISIE", 0)
Worksheets("Devis").Cells(7, 5).Value = codeclient
modepaiement = InputBox("Indiquez le mode de paiement : ", "SAISIE", 0)
Worksheets("Devis").Cells(12, 2).Value = modepaiement
Do while Worksheets("Devis").Cells(7, 5).Value <> Worksheets("Clients").Cells(i, 1).Value
Worksheets("Devis").Cells(7, 2).Value = Worksheets("Clients").Cells(i, 2).Value
Worksheets("Devis").Cells(8, 2).Value = Worksheets("Clients").Cells(i, 3).Value
Worksheets("Devis").Cells(8, 5).Value = Worksheets("Clients").Cells(i, 4).Value
Worksheets("Devis").Cells(9, 2).Value = Worksheets("Clients").Cells(i, 5).Value
Worksheets("Devis").Cells(9, 5).Value = Worksheets("Clients").Cells(i, 6).Value
Worksheets("Devis").Cells(10, 2).Value = Worksheets("Clients").Cells(i, 7).Value
Worksheets("Devis").Cells(10, 5).Value = Worksheets("Clients").Cells(i, 8).Value
Loop
End Sub
Ca bloque au niveau du DO WHILE.
Comment puis-je faire ?
Merci d'avance
3 réponses
-
Bonjour,
Voilà pour la recherche et la récupération des infos :
Sub RechercheClient() Dim codeclient As String Dim dLig As Long Dim wsDevis As Worksheet Dim wsClt As Worksheet Dim i As Long 'On instancie les objets Worksheet Set wsDevis = ThisWorkbook.Worksheets("Devis") Set wsClt = ThisWorkbook.Worksheets("Clients") 'Recherche de la dernière ligne "Clients" dLig = wsClt.Range("A" & Rows.Count).End(xlUp).Row 'Saisie du code client par l'utilisateur codeclient = InputBox("Veuillez saisir le code client : ", "SAISIE", 0) 'Boucle sur le num client For i = 1 To dLig 'Si la ligne client est trouvée, on copie les données et on sort de la procédure If UCase(codeclient) = UCase(wsClt.Cells(i, 1).Value) Then wsDevis.Cells(7, 2).Value = wsClt.Cells(i, 2).Value wsDevis.Cells(8, 2).Value = wsClt.Cells(i, 3).Value wsDevis.Cells(8, 5).Value = wsClt.Cells(i, 4).Value wsDevis.Cells(9, 2).Value = wsClt.Cells(i, 5).Value wsDevis.Cells(9, 5).Value = wsClt.Cells(i, 6).Value wsDevis.Cells(10, 2).Value = wsClt.Cells(i, 7).Value wsDevis.Cells(10, 5).Value = wsClt.Cells(i, 8).Value Exit Sub End If Next i 'libération des objets et de la mémoire Set wsDevis = Nothing Set wsClt = Nothing End Sub
Il faut faire une autre procédure pour le reste du devis (MontantHT, MontantTTC etc ...)
;0)
-
Bonjour Polux31,
Merci beaucoup pour cette réponse. Cela fonctionne, toutes mes données se retrouvent au bon endroit. En revanche, j'ai un message d'erreur qui apparaît : code 1004, erreur définie par l'objet ou l'application. Et du coup, la suite de mon programme ne s'execute pas. Une idée ?
Merci d'avance -
-
Voici le code que j'ai tapé (je n'ai pas exactement suivi votre réponse puisqu'étant étudiante, je n'ai pas vu certaine fonction et je ne peux donc pas les insérer dans mon programme) :
Sub DEVIS()
Dim codeclient As String
Dim modepaiement As String
Dim txremise As Single
Dim montantHT As Single
Dim montantTTC As Single
Dim transport As Single
Dim total As Single
Dim i As Long
codeclient = InputBox("Veuillez saisir le code client : ", "SAISIE", "")
Worksheets("Devis").Cells(7, 5).Value = codeclient
modepaiement = InputBox("Indiquez le mode de paiement : ", "SAISIE", "CB")
Worksheets("Devis").Cells(12, 2).Value = modepaiement
i = 4
Do While codeclient <> Worksheets("Clients").Cells(4, 1).Value
i = i + 1
If codeclient = Worksheets("Clients").Cells(i, 1).Value Then
Worksheets("Devis").Cells(7, 2).Value = Worksheets("Clients").Cells(i, 2).Value
Worksheets("Devis").Cells(8, 2).Value = Worksheets("Clients").Cells(i, 3).Value
Worksheets("Devis").Cells(8, 5).Value = Worksheets("Clients").Cells(i, 4).Value
Worksheets("Devis").Cells(9, 2).Value = Worksheets("Clients").Cells(i, 5).Value
Worksheets("Devis").Cells(9, 5).Value = Worksheets("Clients").Cells(i, 6).Value
Worksheets("Devis").Cells(10, 2).Value = Worksheets("Clients").Cells(i, 7).Value
Worksheets("Devis").Cells(10, 5).Value = Worksheets("Clients").Cells(i, 8).Value
End If
Loop
End Sub
L'erreur est en gras. J'ai également remarqué que le premier code client ne fonctionne pas, c'est à dire que ses coordonnées ne s'affichent pas. Je n'arrive pas à trouver d'où vient l'erreur. =/
Merci de vos réponses -
-
-
-
Bonjour,
Merci de votre réponse.
En revanche, la commande do while se termine par le LOOP dans ce cas ci. -
Bonjour ;
je crois que la commande Do While manque de fin de boucle le "END DO" a savouir votre logique programme.
bonne Chance.