Validation userform

tonio59

XLDnaute Junior
Bonjour le forum,

Encore une fois, j'ai besoin de votre aide ! ! !
J'ai créer un userform pour saisir les achats et les ventes (gestion de swaps pour les financiers). Sur un useform, on doit saisir le montant de d'achat et la date (idem pour la vente).
J'ai créer des validations pour la date et les montants. ça marche ! ! ! ! ! Mais le problème est que ça marche plusieurs fois, en fait si j'ai eu 3 corrections à faire, l'userform va générer 3 écritures au lieu d'une, en fait il garde en mémoire les données.

Voila le code, si quelqu'un peut m'aider :

Code:
Private Sub OK_Click()
'
'Lancement de la création du swaps
'
Dim i As Double
Dim z As Boolean
Dim date_achat As Date
Dim date_vente As Date

Nouveau_swaps.Hide
'vérification date achat
If valid_date(jour_achat, mois_achat, annee_achat) = False Then
        MsgBox ('Votre date d'achat n'existe pas.')
        Nouveau_swaps.Show
End If
date_achat = DateSerial(annee_achat, mois_achat, jour_achat)
'vérification date vente
If valid_date(jour_vente, mois_vente, annee_vente) = False Then
        MsgBox ('Votre date de vente n'existe pas.')
        Nouveau_swaps.Show
End If
date_vente = DateSerial(annee_vente, mois_vente, jour_vente)

'vérification chronologie entre les 2 dates
If DateDiff('d', date_vente, date_achat) > 0 Then
        MsgBox ('Votre date de vente est inférieure à la date d'achat.')
        Nouveau_swaps.Show
End If
    
'vérification des devises
If Vente_devises - Achat_devises >= 0 Then
    MsgBox ('Votre vente est supérieure ou égale à votre achat.')
    Nouveau_swaps.Show
End If
    
i = nouveau_swap(Achat_devises, Vente_devises, date_achat, date_vente)

End Sub


Merci d'avance ! ! ! ! :)

A pluche
 

dg62

XLDnaute Barbatruc
Bonjour Tonio


Nouveau_swaps.Show, tu relances a chaque correction ton userform et je présumes que tu valides de nouveau par OK ta modif.

tu écris une premiere fois ta modif et tu sors du premeir if donc 2 écritures.

ton problème vient de là.

ne peux-tu pas faire tes verifs au fur et à mesure de la saisie ?
 

tonio59

XLDnaute Junior
Bonjour DG62,


En fait, j'ai continuer à faire des recherches sur internet et j'ai trouvé la solution. En effet, tu as bien identifier le problème. Pour le résoudre, il suffit de mettre un exit sub au lieu du nouveau_swap.show. Cela permet de laisser afficher l'userform, de pouvoir le modifier et de relancer le processus de validation.


Je te met le code si tu veux le voir :
Code:
Private Sub OK_Click()
'
'Lancement de la création du swaps
'
Dim i As Double
Dim z As Boolean
Dim date_achat As Date
Dim date_vente As Date


'vérification date achat
If valid_date(jour_achat, mois_achat, annee_achat) = False Then
    MsgBox ('Votre date d'achat n'existe pas.')
    Exit Sub
End If
date_achat = DateSerial(annee_achat, mois_achat, jour_achat)
'vérification date vente
If valid_date(jour_vente, mois_vente, annee_vente) = False Then
    MsgBox ('Votre date de vente n'existe pas.')
    Exit Sub
End If
date_vente = DateSerial(annee_vente, mois_vente, jour_vente)

'vérification chronologie entre les 2 dates
If DateDiff('d', date_vente, date_achat) > 0 Then
    MsgBox ('Votre date de vente est inférieure à la date d'achat.')
    Exit Sub
End If
    
'vérification des devises
If Vente_devises - Achat_devises >= 0 Then
    MsgBox ('Votre vente est supérieure ou égale à votre achat.')
    Exit Sub
End If

Nouveau_swaps.Hide

i = nouveau_swap(Achat_devises, Vente_devises, date_achat, date_vente)

End Sub


Merci de ta réponse,

A pluche
 

Discussions similaires

Réponses
8
Affichages
690

Statistiques des forums

Discussions
312 520
Messages
2 089 291
Membres
104 089
dernier inscrit
salimgtu