besoin d'aide boucle do loop

flandrin.l

XLDnaute Nouveau
Bonjour a tous,
je programme depuis peux en VBA, je me débrouille comme vous pourrez le lire, mais la je bloque

je voudrai qu'a la reponce a la question "vouler vous continuez a préparer la meme commande" (plus bas)
si non : exit sub (sans probleme)
si oui reprise de la ou j'ai mis un smiley pas content comme moi !!!
voici mon code

Public Sub soustraire()

Dim code As String
Dim celluletrouvee As Range
Dim ligne As Integer
Dim col As Integer
Dim qte As Integer
Dim donner As Integer
Dim nom_feuille As String
Dim commande As String
Dim designation As String
Dim question As String

Sheets("TABLEAU DE BORD").Select

commande = InputBox("Quel commande voulez vous préparer ? : ", "QUESTION")


:mad: ici je voudrai commencer ma boucle

code = InputBox("Quel article voulez vous sortir du stock ? : ", "QUESTION")



For nb_feuille = 1 To 12


ActiveSheet.Next.Select
nom_feuille = ActiveSheet.Name


Set celluletrouvee = Range("A2:A20").Find(code, lookat:=xlWhole)

If celluletrouvee Is Nothing Then
nb_feuille = nb_feuille



Else

qte = InputBox("Combien d'article voulez vous soustraire ? : ", "QUESTION")

ligne = celluletrouvee.Row
col = celluletrouvee.Column


designation = Cells(ligne, col + 1).Value
donner = Cells(ligne, col + 5).Value

Cells(ligne, col + 5).Value = donner - qte

Workbooks.Open "w:\gestion\stock\rapport de sortie.xlsm"

Range("A1").End(xlDown).Offset(1, 0).Value = Date 'met la date dans la premiere ligne vide de la colonne A
Range("B1").End(xlDown).Offset(1, 0).Value = commande 'met le N° de commande dans la premiere ligne vide de la colonne B
Range("C1").End(xlDown).Offset(1, 0).Value = code 'met le code article dans la premiere ligne vide de la colonne C
Range("D1").End(xlDown).Offset(1, 0).Value = designation 'met la désignation dans la premiere ligne vide de la colonne D
Range("E1").End(xlDown).Offset(1, 0).Value = qte 'met la quantité dans la premiere ligne vide de la colonne E

ActiveWorkbook.Save
ActiveWorkbook.Close

'Display MessageBox
question = MsgBox("voulez continuer a préparer la même commande", vbQuestion + vbYesNo, "???") 'question oui/non

If question = vbYes Then
:mad: et ici la finir si la question repond non


Else
Exit Sub


End If

End Sub



Sheets("TABLEAU DE BORD").Select
ActiveWorkbook.Save
Exit Sub

End If

Next nb_feuille


MsgBox ("code article iconnu")
ActiveWorkbook.Save




End Sub


Merci à vous tous sans vous je serai encore plus nul !!!
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : besoin d'aide boucle do loop

Bonjour Flandrin, bonjour le forum,

Ton code contient des incohérences. Il y a un End Sub en trop. Si c'est une End If que tu voulais à la place, dans ce cas il y a un End If en trop. J'ai recopié ton code avec les retraits correpondants au boucle For... Next et aux Si... End Si pour que ce soit plus clair et j'y ai rajouté des commentaires.
Code:
Public Sub soustraire()
Dim code As String
Dim celluletrouvee As Range
Dim ligne As Integer
Dim col As Integer
Dim qte As Integer
Dim donner As Integer
Dim nom_feuille As String
Dim commande As String
Dim designation As String
Dim question As String

Sheets("TABLEAU DE BORD").Select
commande = InputBox("Quel commande voulez vous préparer ? : ", "QUESTION")

début: 'etiquette (ici je voudrai commencer ma boucle)

code = InputBox("Quel article voulez vous sortir du stock ? : ", "QUESTION")
For nb_feuille = 1 To 12
    ActiveSheet.Next.Select
    nom_feuille = ActiveSheet.Name
    Set celluletrouvee = Range("A2:A20").Find(code, lookat:=xlWhole)
    If celluletrouvee Is Nothing Then
        nb_feuille = nb_feuille
    Else
        qte = InputBox("Combien d'article voulez vous soustraire ? : ", "QUESTION")
        ligne = celluletrouvee.Row
        col = celluletrouvee.Column
        designation = Cells(ligne, col + 1).Value
        donner = Cells(ligne, col + 5).Value
        Cells(ligne, col + 5).Value = donner - qte
        Workbooks.Open "w:\gestion\stock\rapport de sortie.xlsm"
        Range("A1").End(xlDown).Offset(1, 0).Value = Date 'met la date dans la premiere ligne vide de la colonne A
        Range("B1").End(xlDown).Offset(1, 0).Value = commande 'met le N° de commande dans la premiere ligne vide de la colonne B
        Range("C1").End(xlDown).Offset(1, 0).Value = code 'met le code article dans la premiere ligne vide de la colonne C
        Range("D1").End(xlDown).Offset(1, 0).Value = designation 'met la désignation dans la premiere ligne vide de la colonne D
        Range("E1").End(xlDown).Offset(1, 0).Value = qte 'met la quantité dans la premiere ligne vide de la colonne E
        ActiveWorkbook.Save
        ActiveWorkbook.Close
        
        'Display MessageBox
        question = MsgBox("voulez continuer a préparer la même commande", vbQuestion + vbYesNo, "???") 'question oui/non
        If question = vbYes Then
            GoTo debut 'retourne à l'étiquette "debut"
            
            'et ici la finir si la question repond non
        
        Else
            Exit Sub
        End If

'End Sub 'cet End Sub est en trop !!!! Si tu t'es trompé et c'est un "End If" il y a un "End If" en trop plus bas

'cette partie ci-dessous ne sera jamais efectuée car si tu réponds "oui" tu retourne au début
'et si tu réponds "non" tu sort de la procédure...
'ta boucle ne va s'effectuier que sur nb_feuille = 1 !!!
        Sheets("TABLEAU DE BORD").Select
        ActiveWorkbook.Save
        Exit Sub

    End If 'celui-ci

Next nb_feuille

MsgBox ("code article iconnu")
ActiveWorkbook.Save
End Sub
 

flandrin.l

XLDnaute Nouveau
Re : besoin d'aide boucle do loop

Bonjour le forum,

tu as raison robert, je cherche un solution mais je suis toujours bloqué avec cette macro,

For nb_feuille = 1 To 12 'départ de ma boucle
ActiveSheet.Next.Select
nom_feuille = ActiveSheet.Name
Set celluletrouvee = Range("A2:A20").Find(code, lookat:=xlWhole)
If celluletrouvee Is Nothing Then 'si la cellule est vide incrementation de la boucle
Next nb_feuille

Else
'ici instruction avec question yes no

question = MsgBox("voulez continuer a préparer la même commande", vbQuestion + vbYesNo, "???") 'question oui/non
If question = vbYes Then
retour au debut de la boucle
sinon exit sub

quelqu'un peut il m'aider

Merci beaucoup
 

flandrin.l

XLDnaute Nouveau
Re : besoin d'aide boucle do loop

merci pierrot,

mais je n'y arrive pas non plus

ma macro marche pour une feuille,
je la poste ici:

il faut que le message "article inconnu" apparaisse qu'après la lecture de chaque collonne A de toute les feuilles.
vous pouvez essayer avec commande "TOTO"
code article "W8"
qantité "10"

ça marche

et pour code article inconnu mettre "m5" par exemple

Merci de me conseiller
 

Pièces jointes

  • fichier web.xls
    64 KB · Affichages: 65

Statistiques des forums

Discussions
312 976
Messages
2 094 101
Membres
105 938
dernier inscrit
Cubernicus