OVH Cloud OVH Cloud

problème boucle

2 réponses
Avatar
Daniel
Bonjour,

Je suis néophyte en vba et je coince là-dessus :

J'aimerais créer une procédure qui recherche dans la colonne 1 de la feuille
OUV la même valeur que le caption du commandbutton1 de la feuille PLAN.

Lorsqu'elle trouve cette valeur, elle la recopie dans la feuille ENC en
cellule (4,11), puis passe à la ligne suivante de la feuille OUV et recopie
les valeurs des colonnes 1 à 3 dans la feuille ENC en cellules (5,11)
(5,12) et (5,14) et ainsi de suite jusqu'à ce qu'elle trouve la valeur "FIN"
(qu'elle ne recopie pas) en colonne 1 de la feuille OUV.

Elle doit enfin supprimer de la feuille OUV les lignes qui viennent d'être
recopiées ainsi que la ligne où se trouve la valeur "FIN".

Merci d'avance pour votre aide. Voici ce que j'ai fait jusqu'à présent :


Private Sub CommandButton1_Click()
'bouton 1
'si déjà un nom de client encodé, alors récup commande stockée dans OUV
sinon demande nom client
Dim b As Integer
b = 1
If CommandButton1.Caption <> "1 " And CommandButton1.Caption <> "1" Then
Do While Sheets("PLAN").CommandButton1.Caption <>
Sheets("OUV").Cells(b, 1)
Cells(b, 1).Activate
b = b + 1
Loop
'JE COINCE ICI !

Else: response = InputBox("Entrez le nom du client. Attention, ce nom
sera imprimé sur le ticket !")
Me.CommandButton1.Caption = Left(Me.CommandButton1.Caption, 1) & " "
& response
Sheets("ENC").Select
'récupération du caption
Sheets("ENC").Cells(4, 11) = CommandButton1.Caption
Sheets("PLAN").Cells(7, 10) = CommandButton1.Caption
End If
End Sub

2 réponses

Avatar
Pierre Fauconnier
Bonjour

Pourrais-tu clarifier ton énoncé en utilisant la notation A1 pour les
cellules, ce sera plus simple à comprendre...

Merci


--
Pierre Fauconnier ()
Les sept laids tuent ( Lewis Carol )
Remplacez nospam.nospam par pfi.be pour répondre. Merci

"Daniel" <*j'enlève ceci* a écrit dans le message
de news:41e14310$0$336$
Bonjour,

Je suis néophyte en vba et je coince là-dessus :

J'aimerais créer une procédure qui recherche dans la colonne 1 de la
feuille

OUV la même valeur que le caption du commandbutton1 de la feuille PLAN.

Lorsqu'elle trouve cette valeur, elle la recopie dans la feuille ENC en
cellule (4,11), puis passe à la ligne suivante de la feuille OUV et
recopie

les valeurs des colonnes 1 à 3 dans la feuille ENC en cellules (5,11)
(5,12) et (5,14) et ainsi de suite jusqu'à ce qu'elle trouve la valeur
"FIN"

(qu'elle ne recopie pas) en colonne 1 de la feuille OUV.

Elle doit enfin supprimer de la feuille OUV les lignes qui viennent d'être
recopiées ainsi que la ligne où se trouve la valeur "FIN".

Merci d'avance pour votre aide. Voici ce que j'ai fait jusqu'à présent :


Private Sub CommandButton1_Click()
'bouton 1
'si déjà un nom de client encodé, alors récup commande stockée dans OUV
sinon demande nom client
Dim b As Integer
b = 1
If CommandButton1.Caption <> "1 " And CommandButton1.Caption <> "1"
Then

Do While Sheets("PLAN").CommandButton1.Caption <>
Sheets("OUV").Cells(b, 1)
Cells(b, 1).Activate
b = b + 1
Loop
'JE COINCE ICI !

Else: response = InputBox("Entrez le nom du client. Attention, ce nom
sera imprimé sur le ticket !")
Me.CommandButton1.Caption = Left(Me.CommandButton1.Caption, 1) & "
"

& response
Sheets("ENC").Select
'récupération du caption
Sheets("ENC").Cells(4, 11) = CommandButton1.Caption
Sheets("PLAN").Cells(7, 10) = CommandButton1.Caption
End If
End Sub





Avatar
Daniel
"Pierre Fauconnier" a écrit dans le
message de news:
Bonjour

Pourrais-tu clarifier ton énoncé en utilisant la notation A1 pour les
cellules, ce sera plus simple à comprendre...

Merci


--
Pierre Fauconnier ()
Les sept laids tuent ( Lewis Carol )
Remplacez nospam.nospam par pfi.be pour répondre. Merci

"Daniel" <*j'enlève ceci* a écrit dans le
message

de news:41e14310$0$336$

Bonjour,

Voici quelques précisions sur mon petit problème :

Il s'agit d'un petit programme servant à encoder les commandes des clients
d'une taverne par l'intermédiaire d'un écran tactile.

J'ai donc 3 feuilles dans mon classeur :
- La feuille PLAN reprend le plan des tables qui sont représentées par des
boutons numérotés dont le caption change en fonction du nom du client qui y
est encodé par le serveur.
- La feuille ENC reprend les boutons d'encodage des boissons et une liste de
la commande en cours avec au-dessus, le nom du client repris du caption du
bouton
- La feuille OUV qui reprend les commandes "ouvertes", donc les clients
servis, mais qui n'ont pas encore payé.

Quand le serveur a terminé d'encoder sa commande, il clique sur un bouton
lui permettant de revenir au plan des tables. Ce clic permet de vider la
zone de la feuille ENC (en K4 le nom du client repris du caption et à partir
de K5, L5 et N5 les boissons/plats , prix et catégorie de plat servis au
client) où se trouve la commande en cours et la recopie dans la feuille OUV
dans les colonnes A, B et C (en A le type de boisson (repris de la colonne
K), en B le prix (repris de la colonne L), en C la catégorie de boisson ou
de plat (afin de séparer restauration et boissons) (repris de la colonne N)

Jusque là, ça fonctionnne sans problème.

J'ai besoin maintenant d'aller rechercher la commande mise en attente dans
la feuille OUV pour la ramener dans la feuille ENC (donc faire exactement
l'inverse) lorsque le serveur clique sur le bouton dont le caption est celui
du client. Les commandes en cours sont inscrites les unes en dessous des
autres (séparées par le mot FIN) dans la colonne A de la feuille OUV. La
première ligne de chaque commande ouverte étant chaque fois le caption du
bouton du client.

J'aimerais créer une procédure qui recherche dans la colonne A de la feuille
OUV la même valeur que le caption du commandbutton1 de la feuille PLAN.

Lorsqu'elle trouve cette valeur, elle la recopie dans la feuille ENC en
cellule K4 puis passe à la ligne suivante de la feuille OUV et recopie les
valeurs des colonnes A à C dans la feuille ENC en cellules K5, L5 et N5 et
ainsi de suite jusqu'à ce qu'elle trouve la valeur "FIN" (qu'elle ne recopie
pas) en colonne 1 de la feuille OUV.

Elle doit enfin supprimer de la feuille OUV les lignes qui viennent d'être
recopiées ainsi que la ligne où se trouve la valeur "FIN".

Merci d'avance pour votre aide. Voici ce que j'ai fait jusqu'à présent :


Private Sub CommandButton1_Click()
'bouton 1
'si déjà un nom de client encodé, alors récup commande stockée dans OUV
sinon demande nom client
Dim b As Integer
b = 1
If CommandButton1.Caption <> "1 " And CommandButton1.Caption <> "1" Then
Do While Sheets("PLAN").CommandButton1.Caption <>
Sheets("OUV").Cells(b, 1)
Cells(b, 1).Activate
b = b + 1
Loop
'JE COINCE ICI !

Else: response = InputBox("Entrez le nom du client. Attention, ce nom
sera imprimé sur le ticket !")
Me.CommandButton1.Caption = Left(Me.CommandButton1.Caption, 1) & " "
& response
Sheets("ENC").Select
'récupération du caption
Sheets("ENC").Cells(4, 11) = CommandButton1.Caption
Sheets("PLAN").Cells(7, 10) = CommandButton1.Caption
End If
End Sub