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 :

comment imposer la poursuite d'une procédure


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    30
    Détails du profil
    Informations personnelles :
    Âge : 73
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 30
    Par défaut comment imposer la poursuite d'une procédure
    Bonjour,

    Par le biais d'un cmdbouton, je veux contrôler puis valider les saisies faites par l'utilisateur par le biais d'un userform.

    Tant que je ne contrôlais par le format date de l'objet TxtJourDemandePref tout se passait bien mais depuis l'ajout de cette instruction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    'On teste la saisie de la date de la demande
     
    If Not IsDate(TxtJourDemandePref) Then MsgBox "Vous devez saisir une date de versement au format jj/mm/aaaa"
    Me.TxtJourDemandePref.SetFocus
     
    Exit Sub
    Si la date est correcte, plus rien ne se passe, je reste sur mon formulaire...

    A noter que quand je mets end if, il m'est précisé que j'ai un code end if sans if.....


    Sinon la procédure complète est :

    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
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    Private Sub CmdValiderPréfecture_Click()
    'faire vérifier les saisies faites
    Msg = "avez vous vérifié vos saisies ?"
    Style = vbYesNo
    Title = "vérification des informations saisies Préfecture LMH"
    réponse = MsgBox(Msg, Style, Title)
    If réponse = vbNo Then
    Me.cmbchargéPref.SetFocus
     
     Exit Sub
     
    End If
     
    'on teste la saisie du nom du chargé du dossier
     
    If Me.cmbchargéPref = "" Then
    MsgBox "Vous devez choisir votre nom de chargé du dossier parmi la liste proposée"
    Me.cmbchargéPref.SetFocus
    Exit Sub
    End If
     
    ''on teste la saisie du nom du demandeur
    If CmbDemandeurPref = "" Then
    MsgBox "Vous devez indiquer le nom du demandeur"
    Me.CmbDemandeurPref.SetFocus
    Exit Sub
    End If
     
     
    'On teste la saisie de la nature de la demande
     
    If Me.CmbNatureDemandePref = "" Then
    MsgBox "Vous devez saisir la nature du versement"
    Me.CmbNatureDemandePref.SetFocus
    Exit Sub
     
    End If
     
    'On teste la saisie de la date de la demande
     
    If Not IsDate(TxtJourDemandePref) Then MsgBox "Vous devez saisir une date de versement au format jj/mm/aaaa"
    Me.TxtJourDemandePref.SetFocus
     
    Exit Sub
     
    'on teste la saisie d'un libellé de la demande
     
    If TxtLibelléDemandePref = "" Then
    MsgBox "Vous devez indiquer le libellé de la demande"
    Me.TxtLibelléDemandePref.SetFocus
    Exit Sub
    End If
    'on teste la saisie d'un libellé observation
     
    If TxtObservationsPref = "" Then
    MsgBox "Vous devez indiquer une observation ou mettre RSA"
    Me.TxtObservationsPref.SetFocus
    Exit Sub
    End If
     
    'on teste la nature de l'acte préfecture
    If CmbNatureActePref = "" Then
    MsgBox "Vous devez indiquer la nature de l'acte préfecture"
    Me.CmbNatureActePref.SetFocus
    Exit Sub
    End If
     
    'on teste l'origine du problème
    If cmbOrigineProblèmePref = "" Then
    MsgBox "Vous devez indiquer l'origine du problème"
    Me.cmbOrigineProblèmePref.SetFocus
    Exit Sub
    End If
     
    'on teste le nom de l'opération
    If TxtNomOpérationPref = "" Then
    MsgBox "vous devez saisir le nom de l'opération ou de l'affaire"
    Me.TxtNomOpérationPref.SetFocus
    Exit Sub
    End If
     
    'on teste la date du cachet de la préfecture
    If TxtDateCachetPref = "" Then
    MsgBox "vous devez saisir la date du cachet de la préfecture sous format jj/mm/aa"
    Me.TxtDateCachetPref.SetFocus
    Exit Sub
    End If
     
    'on teste la date de la note 1 de la préfecture
    If TxtDateNote1Pref = "" Then
    MsgBox ("vous devez indiquer la date de la note 1 de la préfecture")
    Me.TxtDateNote1Pref.SetFocus
    Exit Sub
    End If
     
    'on teste la date de réponse butoire de la note 1 de la préfecture
    If TxtDateButoirRéponse1Pref = "" Then
    MsgBox ("Vous devez renseigner la date butoire de la note 1 de la préfecture sous format jj/mm/aa")
    Me.TxtDateButoirRéponse1Pref.SetFocus
    Exit Sub
    End If
     
     
    Sheets("Préfecture").Select
     
    Range("b1000").End(xlUp).Offset(1, 0).Value = TxtNomOpérationPref
    Range("b1000").End(xlUp).Offset(0, 1).Value = CmbNatureDemandePref
    Range("b1000").End(xlUp).Offset(0, 2).Value = TxtJourDemandePref
    Range("b1000").End(xlUp).Offset(0, 29).Value = TxtObservationsPref
    Range("b1000").End(xlUp).Offset(0, 20).Value = TxtLibelléDemandePref
    Range("b1000").End(xlUp).Offset(0, 24).Value = CmbDemandeurPref
    Range("b1000").End(xlUp).Offset(0, 22).Value = cmbchargéPref
    Range("b1000").End(xlUp).Offset(0, 30).Value = TxtDateCachetPref
    Range("b1000").End(xlUp).Offset(0, 4).Value = TxtDateNote1Pref
    Range("b1000").End(xlUp).Offset(0, 5).Value = TxtDateButoirRéponse1Pref
    Range("b1000").End(xlUp).Offset(0, 8).Value = TxtDateNote2Pref
    Range("b1000").End(xlUp).Offset(0, 9).Value = TxtDateButoirRéponse2Pref
    Range("b1000").End(xlUp).Offset(0, 11).Value = TxtDateNote3Pref
    Range("b1000").End(xlUp).Offset(0, 12).Value = TxtDateButoirRéponse3Pref
    Range("b1000").End(xlUp).Offset(0, 19).Value = cmbOrigineProblèmePref
     
     
    CmbNatureDemandePref.Value = ""
    TxtJourDemandePref.Value = ""
    TxtObservationsPref.Value = ""
    TxtLibelléDemandePref.Value = ""
    CmbDemandeurPref.Value = ""
    cmbchargéPref.Value = ""
    CmbNatureDemandePref.Value = ""
    CmbNatureActePref.Value = ""
    cmbOrigineProblèmePref.Value = ""
    TxtNomOpérationPref.Value = ""
    TxtDateCachetPref.Value = ""
    TxtDateNote1Pref.Value = ""
    TxtDateButoirRéponse1Pref.Value = ""
    TxtDateNote2Pref.Value = ""
    TxtDateButoirRéponse2Pref.Value = ""
    TxtDateNote3Pref.Value = ""
    TxtDateButoirRéponse3Pref.Value = ""
    Msg = "Voulez-vous arrêter vos saisies ?"
    Style = vbYesNo
    Title = "Quitter la fiche de saisie Pr"
    réponse = MsgBox(Msg, Style, Title)
    If réponse = vbYes Then
    Unload Me
    End If
    If réponse = vbNo Then
    End If
     
    End Sub

    Je vous remercie de votre précieux concours.

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    salut,
    la syntaxe correcte lorsque tu veux effectuer plusieurs instructions après un test est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    If Not IsDate(TxtJourDemandePref) Then 
       MsgBox "Vous devez saisir une date de versement au format jj/mm/aaaa"
       Me.TxtJourDemandePref.SetFocus
       Exit Sub
    End If
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonjour,

    regarde et analyse ce que tu as écrit ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    If Not IsDate(TxtJourDemandePref) Then MsgBox "Vous devez saisir une date de versement au format jj/mm/aaaa"
    Me.TxtJourDemandePref.SetFocus
     
    Exit Sub
    ton Exit Sub fait que tu quittes la procédure de toutes manières (date valide ou non). Il devrait être (ce qui n'est pas le cas) subordonné à la seule vérification de non validité de la date (donc dans le Then et avant un End If. Ca ne te dit rien ?

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    30
    Détails du profil
    Informations personnelles :
    Âge : 73
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 30
    Par défaut
    merci de votre aide

    Cordialement

    Guy

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 8
    Dernier message: 09/12/2008, 10h04
  2. Comment récupérer le résultat d'une procédure stockée (OUT parameter) ?
    Par java2008 dans le forum Interfaces de programmation
    Réponses: 1
    Dernier message: 08/04/2008, 13h00
  3. Réponses: 2
    Dernier message: 28/05/2006, 23h31
  4. [C#/SQL] Comment gérer les exceptions d'une Procédure stockée ?
    Par thomas_strass dans le forum Accès aux données
    Réponses: 10
    Dernier message: 06/07/2005, 10h40

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