IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Aide Sur une application de facturation sous VBA Excel


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Octobre 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Octobre 2016
    Messages : 7
    Par défaut Aide Sur une application de facturation sous VBA Excel
    je fais une application et tout passe bien mais le seul probleme c'es que quand je vais valider la facture ca ne passe pas.
    les autres conditions passent mais au niveau où toutes les conditions sont bonnes et qu'il faut valider la facture ça dit "OBJET REQUIS" et là je ne comprends rien.
    Votre aide me sera necessaire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    Sub verification_facture() 
    Dim cellule As Range: Dim test As Boolean 
    test = False 
     
    For Each cellule In Range("D626") 
    If (cellule.Value = "Rupture de Stock") Then 
    test = True 
    Exit For 
    End If 
    Next cellule 
     
    If (test = True) Then 
    MsgBox ("Des articles hors stock figurent dans la facture, il n'est pas possible de continuer") 
    Exit Sub 
    End If 
     
    Dim ligne As Integer: ligne = 2 
    Dim valeur_stock As Integer: valeur_stock = 0 
    Dim valeur_demandée As Integer: valeur_demandée = 0 
    Dim ref_cat As String: Dim ref_facture As String 
    Dim choix_utilisateur As Byte 
     
    While (Workbooks("catalogue.xlsx").Worksheets("Feuil1").Cells(ligne, 5).Value <> "") 
    valeur_stock = Workbooks("catalogue.xlsx").Worksheets("Feuil1").Cells(ligne, 5).Value 
    ref_cat = Workbooks("catalogue.xlsx").Worksheets("Feuil1").Cells(ligne, 3).Value 
     
     
    For Each cellule In ThisWorkbook.Worksheets("facturation").Range("C6:C26") 
     
    If (cellule.Value = ref_cat) Then 
    valeur_demandée = ThisWorkbook.Worksheets("facturation").Cells(cellule.Row, 5) 
    If (valeur_demandée > valeur_stock) Then 
    MsgBox ("La référence..." & cellule.Value & "...ne possède pas assez de Stock") 
    test = True 
    End If 
    End If 
    Next cellule 
     
    ligne = ligne + 1 
    Wend 
    If (test = True) Then 
    Exit Sub 
     
    Else 
    choix_utilisateur = MsgBox("La facture semble correcte,souhaitez-vous l'imprimer et mettre à jour les stock??", vbYesNo) 
    If (choix_utilisateur = 6) Then 
    For Each cellule In thisworkbooks.Worksheets("facturation").Range("C6:C26") 
    ligne = 2 
    While (Workbooks("catalogue.xlsx").Worksheets("Feuil1").Cells(ligne, 5).Value <> "") 
    If (cellule.Value = Workbooks("catalogue.xlsx").Worksheets("Feuil1").Cells(ligne, 3).Value) Then 
    Workbooks("catalogue.xlsx").Worksheets("Feuil1").Cells(ligne, 5).Value = Workbooks("catalogue.xlsx").Worksheets("Feuil1").Cells(ligne, 5).Value - thisworkbooks.Worksheets("facturation").Cells(cellule.Row, 5).Value 
    End If 
    ligne = ligne + 1 
    Wend 
    Next cellule 
    Else 
    Exit Sub 
    End If 
    End If 
    ThisWorkbook.Worksheets("facturation").PrintPreview 
    End Sub

  2. #2
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Corriger la faute d'orthographe dans la ligne déclenchant l'erreur ‼

    Astuce : quand un mot réservé du langage reste totalement en minuscules, alors il est mal orthographié …

    _________________________________________________________________________________________________________
    Je suis Paris, Berlin, Nice, Bruxelles, Charlie, …

  3. #3
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    comme les frères DuponT (ou un D ....) :

    je dirais même plus, corriger LES deux fautes d'orthographes sur deux lignes de ta procédure, toujours sur le même mot

    je mirais dême plus, lorriger ces feux dautes d'orthographes sur deux pignes de ta rocédure, moujours sur le tême tot.

  4. #4
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Salut joe !

    Je me suis arrêté à la première ligne pouvant déclencher le même message d'erreur
    mais c'est vrai il y a tellement de lignes n'allant pas ou ne servant à rien …

    Beaucoup de code inutile - notamment des boucles - en utilisant une simple formule de calculs, même en VBA …

  5. #5
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour (et un salut à Marc)
    erreur en effet manifeste à la ligne 47 du code montré.
    Je déplore personnellement au passage que ce code, sans indentation, donne des maux de tête et rend tant son analyse que (par voie de conséquence) sa maintenance éventuelle, pour le moins douloureuses. Ce n'est pas le signe d'un vrai soin apporté à ce que l'on écrit.

  6. #6
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Salut Jacques !

    Je n'ai pas indiqué le numéro de la ligne car c'est au demandeur de l'effectuer
    dès sa présentation initiale devant déjà débuter par une salutation !

  7. #7
    Invité
    Invité(e)
    Par défaut
    Bonsoir,
    Code on ne peut plus intéressant! Combien de boucles escomptes tu faire avec un seule cellule!
    Suis d'avis qu'un teste serait préférable à une boucle!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each cellule In Range("D626")
    Un code trouvé sur internet mérite qu'on si intéresse afin de mieux l'adapter à son besoin.

  8. #8
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 181
    Par défaut
    Bonjour à tous et meilleurs vœux pour 2017,
    il a dû vouloir écrire cela ... mais ne l'a pas fait.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each cellule In Range("D6:D26")

  9. #9
    Invité
    Invité(e)
    Par défaut
    Bonjour et bonne année à tous!

    tu as sans doute raison, et c'est bien le signe d'un manque de sérieux dans la retranscription, et ce poste n’aurait aucun objet si une lecture attentif avait été faite!
    Dernière modification par AlainTech ; 02/02/2017 à 06h28. Motif: Suppression de la citation inutile

  10. #10
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    qu'il y ait erreur ou non dans l'écriture du Range, il n'en demeure pas moins que cette portion de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    For Each cellule In Range("UnePlageDePlusieursCellules") 
    If (cellule.Value = "Rupture de Stock") Then 
    test = True 
    Exit For 
    End If 
    Next cellule 
     
    If (test = True) Then 
    MsgBox ("Des articles hors stock figurent dans la facture, il n'est pas possible de continuer") 
    Exit Sub 
    End If
    1) Cherche dans chaque cellule, si au moins une cellule contient "Rupture de Stock"
    2) Si tel est le cas : valide un "test" booléen
    3) Vérifie l'état du test
    4) S'il est positif, on affiche un message et on s'en va


    Alors pourquoi pas tout faire en même temps plutôt que d'emprunter plusieurs chemins qui ne sont que des prolongements du précédent ?
    Et en utilisant directement les outils Excel !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    If Application.WorksheetFunction.CountIf(Range("D6:D26"), "Rupture de Stock") > 0 Then
        MsgBox "Des articles hors stock figurent dans la facture, il n'est pas possible de continuer"
        Exit Sub
    End If
    Ce principe va s'appliquer également dans la suite du code, qui a juste oublié son Ravet-Anceau pour emprunter la route la plus directe.

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Octobre 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Octobre 2016
    Messages : 7
    Par défaut
    la faute d'orthographe c'est à quel niveau dans cette ligne???
    cordialement merci

    tu peux me faire une idée sur la façon de faire tout au meme moment au lieu d'emprunter plusieurs chemins???

  12. #12
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Te faire une idée ?

    Ce n'est pas ce que j'ai fait dans mon message précédent ?

    Et puis, corriger la faute d'orthographe .... unparia t'as donné la ligne de ton code où elle existe, Marc-L t'a indiqué comment trouver "le bon mot", c'est à dire qu'un mot "spécial" est sur cette ligne de code, et qu'il est censé contenir une majuscule en premier (quand il est bien écrit).
    Ce mot, il est déjà bien écrit ailleurs dans ton code.

    Alors maintenant, on t'a donné tout ce qu'il fallait, c'est à toi d'y mettre du tient si tu veux résoudre tes problématiques ?

  13. #13
    Nouveau membre du Club
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Octobre 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Octobre 2016
    Messages : 7
    Par défaut
    Oui oui je viens de voir maintenant.

    Merci à vous tous pour vos idées qui me servent

    cordialement

  14. #14
    Nouveau membre du Club
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Octobre 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Octobre 2016
    Messages : 7
    Par défaut
    Bonjour encore

    j'ai corrigé toutes les fautes d'orthographes dont vous m'avez parlé mais quand je valide la facture il me dit "Objet Requis" et puis ne passe pas.....

    Ci-Joint la capture d'écran

    quelqu'un voudra-t-il bien m'aidé svp???
    Images attachées Images attachées  

  15. #15
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    fais tourner ta procédure en mode pas à pas, afin que chaque ligne de code soit traitée sous ton contrôle

    quand tu seras sur la ligne qui pose problème, tu auras ton message d'erreur, et tu sauras quelle ligne corriger.


    A quoi ressemble ton code actuellement ?

  16. #16
    Nouveau membre du Club
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Octobre 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Octobre 2016
    Messages : 7
    Par défaut
    Mon code est ci-joint...........les quelques fautes qu'il y a là je les ai corrigé mais ca me donne le même message quand je valide la facture
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    Sub verification_facture()
    Dim cellule As Range: Dim test As Boolean
    test = False
     
    For Each cellule In Range("D6:D26")
        If (cellule.Value = "Rupture de Stock") Then
            test = True
            Exit For
        End If
    Next cellule
     
    If (test = True) Then
        MsgBox ("Des articles hors stock figurent dans la facture, il n'est pas possible de continuer")
        Exit Sub
    End If
     
    Dim ligne As Integer: ligne = 2
    Dim valeur_stock As Integer: valeur_stock = 0
    Dim valeur_demandée As Integer: valeur_demandée = 0
    Dim ref_cat As String: Dim ref_facture As String
    Dim choix_utilisateur As Byte
     
    While (Workbooks("catalogue.xlsx").Worksheets("Feuil1").Cells(ligne, 5).Value <> "")
        valeur_stock = Workbooks("catalogue.xlsx").Worksheets("Feuil1").Cells(ligne, 5).Value
        ref_cat = Workbooks("catalogue.xlsx").Worksheets("Feuil1").Cells(ligne, 3).Value
     
     
        For Each cellule In ThisWorkbook.Worksheets("facturation").Range("C6:C26")
     
            If (cellule.Value = ref_cat) Then
                valeur_demandée = ThisWorkbook.Worksheets("facturation").Cells(cellule.Row, 5)
                If (valeur_demandée > valeur_stock) Then
                    MsgBox ("La référence..." & cellule.Value & "...ne possède pas assez de Stock")
                    test = True
                End If
            End If
        Next cellule
     
        ligne = ligne + 1
    Wend
    If (test = True) Then
        Exit Sub
     
    Else
        choix_utilisateur = MsgBox("La facture semble correcte,souhaitez-vous l'imprimer et mettre à jour les stock??", vbYesNo)
        If (choix_utilisateur = 6) Then
            For Each cellule In thisworkbooks.Worksheets("facturation").Range("C6:C26")
            ligne = 2
            While (Workbooks("catalogue.xlsx").Worksheets("Feuil1").Cells(ligne, 5).Value <> "")
                If (cellule.Value = Workbooks("catalogue.xlsx").Worksheets("Feuil1").Cells(ligne, 3).Value) Then
                    Workbooks("catalogue.xlsx").Worksheets("Feuil1").Cells(ligne, 5).Value = Workbooks("catalogue.xlsx").Worksheets("Feuil1").Cells(ligne, 5).Value - thisworkbooks.Worksheets("facturation").Cells(cellule.Row, 5).Value
                End If
            ligne = ligne + 1
            Wend
            Next cellule
        Else
            Exit Sub
        End If
    End If
    ThisWorkbook.Worksheets("facturation").PrintPreview
    End Sub
    Fichiers attachés Fichiers attachés

  17. #17
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    cela te rérangerait vraiment de mettre ici ton code (que chacun puisse le voir) au lieu de joindre un fichier texte ?
    Le voilà, ton code, mis entre balises code, donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    Sub verification_facture()
    Dim cellule As Range: Dim test As Boolean
    test = False
     
    For Each cellule In Range("D6:D26")
        If (cellule.Value = "Rupture de Stock") Then
            test = True
            Exit For
        End If
    Next cellule
     
    If (test = True) Then
        MsgBox ("Des articles hors stock figurent dans la facture, il n'est pas possible de continuer")
        Exit Sub
    End If
     
    Dim ligne As Integer: ligne = 2
    Dim valeur_stock As Integer: valeur_stock = 0
    Dim valeur_demandée As Integer: valeur_demandée = 0
    Dim ref_cat As String: Dim ref_facture As String
    Dim choix_utilisateur As Byte
     
    While (Workbooks("catalogue.xlsx").Worksheets("Feuil1").Cells(ligne, 5).Value <> "")
        valeur_stock = Workbooks("catalogue.xlsx").Worksheets("Feuil1").Cells(ligne, 5).Value
        ref_cat = Workbooks("catalogue.xlsx").Worksheets("Feuil1").Cells(ligne, 3).Value
     
     
        For Each cellule In ThisWorkbook.Worksheets("facturation").Range("C6:C26")
     
            If (cellule.Value = ref_cat) Then
                valeur_demandée = ThisWorkbook.Worksheets("facturation").Cells(cellule.Row, 5)
                If (valeur_demandée > valeur_stock) Then
                    MsgBox ("La référence..." & cellule.Value & "...ne possède pas assez de Stock")
                    test = True
                End If
            End If
        Next cellule
     
        ligne = ligne + 1
    Wend
    If (test = True) Then
        Exit Sub
     
    Else
        choix_utilisateur = MsgBox("La facture semble correcte,souhaitez-vous l'imprimer et mettre à jour les stock??", vbYesNo)
        If (choix_utilisateur = 6) Then
            For Each cellule In thisworkbooks.Worksheets("facturation").Range("C6:C26")
            ligne = 2
            While (Workbooks("catalogue.xlsx").Worksheets("Feuil1").Cells(ligne, 5).Value <> "")
                If (cellule.Value = Workbooks("catalogue.xlsx").Worksheets("Feuil1").Cells(ligne, 3).Value) Then
                    Workbooks("catalogue.xlsx").Worksheets("Feuil1").Cells(ligne, 5).Value = Workbooks("catalogue.xlsx").Worksheets("Feuil1").Cells(ligne, 5).Value - thisworkbooks.Worksheets("facturation").Cells(cellule.Row, 5).Value
                End If
            ligne = ligne + 1
            Wend
            Next cellule
        Else
            Exit Sub
        End If
    End If
    ThisWorkbook.Worksheets("facturation").PrintPreview
    End Sub
    Et il a toujours la même faute d' "orthographe"" en sa ligne 47.
    C'est juste désespérant.

  18. #18
    Nouveau membre du Club
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Octobre 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Octobre 2016
    Messages : 7
    Par défaut
    Unparia, j'ai dejà corrigé l'erreur de la ligne 47......c'est ThisWorkbook.Worksheets(.....)

    Et voilà que malgré ça ca présente la même erreur

  19. #19
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut


    Et nous ne voyons toujours pas le code corrigé et nous ne savons toujours pas quelle ligne déclenche une erreur et laquelle !

    De la précision nait la solution …

  20. #20
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    Sub verification_facture()
        Dim cellule As Range: Dim test As Boolean: test = False
        For Each cellule In Range("D6:D26")
            If (cellule.Value = "Rupture de Stock") Then test = True: Exit For
        Next cellule
     
        If (test = True) Then MsgBox ("Des articles hors stock figurent dans la facture, il n'est pas possible de continuer"): Exit Sub
        Dim ligne As Integer: ligne = 2
        Dim valeur_stock As Integer: valeur_stock = 0
        Dim valeur_demandée As Integer: valeur_demandée = 0
        Dim ref_cat As String, ref_facture As String, choix_utilisateur As Byte
     
        Dim Fact As Worksheet: Set Fact = ThisWorkbook.Worksheets("facturation")
        With Workbooks("catalogue.xlsx").Worksheets("Feuil1")
            While (Trim("" & .Cells(ligne, 5).Value) <> "")
                valeur_stock = .Cells(ligne, 5).Value
                ref_cat = .Cells(ligne, 3).Value
                For Each cellule In Fact.Range("C6:C26")
                    If (cellule.Value = ref_cat) Then
                        valeur_demandée = cellule.Offset(0, 2)
                        If (valeur_demandée > valeur_stock) Then
                            MsgBox ("La référence..." & cellule.Value & "...ne possède pas assez de Stock")
                            test = True
                        End If
                    End If
                Next cellule
                ligne = ligne + 1
            Wend
     
            If (test = True) Then Exit Sub
            choix_utilisateur = MsgBox("La facture semble correcte,souhaitez-vous l'imprimer et mettre à jour les stock??", vbYesNo)
            If (choix_utilisateur <> 6) Then Exit Sub
                For Each cellule In Fact.Range("C6:C26")
                    ligne = 2
                    While (Trim("" & .Cells(ligne, 5).Value) <> "")
                        If (cellule.Value = .Cells(ligne, 3).Value) Then .Cells(ligne, 5).Value = .Cells(ligne, 5).Value - cellule.Offset(0, 2).Value 'E=col 5, C= col 3
                        ligne = ligne + 1
                    Wend
                Next cellule
            Fact.PrintPreview
        End With
    End Sub

Discussions similaires

  1. Réponses: 6
    Dernier message: 10/01/2011, 15h41
  2. aide sur une application mfc
    Par selmani300 dans le forum MFC
    Réponses: 4
    Dernier message: 29/08/2007, 09h30
  3. Aide sur une application d'agence d'assurance
    Par cheva dans le forum ASP
    Réponses: 2
    Dernier message: 11/04/2007, 13h38
  4. aide sur une application
    Par sofianoo dans le forum Delphi
    Réponses: 1
    Dernier message: 12/03/2007, 18h16
  5. aide sur une application
    Par sofianoo dans le forum Bases de données
    Réponses: 12
    Dernier message: 12/03/2007, 10h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo