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

VBA Access Discussion :

[A-03]Aide Code If sur groupe d'option


Sujet :

VBA Access

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    887
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 887
    Par défaut [A-03]Aide Code If sur groupe d'option
    Bonjour,

    Situation : un groupe d'option nommé quickseak avec 2 valeurs 1 et 2
    un texte indépendant pour saisie de valeur type numérque
    un bouton ok pour valider.

    Objectif :
    - si aucune des cases n'est sélectionnée, je veux un msgbox pour la situation
    - si 1 case est sélectionnée mais aucune valeur entrée dans la zone de texte indépendante, un autre msgbox de circonstance
    - si aucune case n'est sélectonnée mais que la zone de texte est remplie, le msg box du premier cas de figure.

    Mon problème:
    Voici mon code au départ, et pour lequel je m'emmêle les pinceaux car je n'arrive plus à jouer avec les IF sans alourdir le code
    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
    Private Sub Commande62_Click()
     
    If Me.quickseak.Value = 1 Then
        Form_HOME.ACTUALISATION.Visible = True
        Form_HOME.ACTUALISATION.SetFocus
        Form_HOME.MENU.Visible = False
        Dim rec As Recordset
        Set rec = Form_HOME.ACTU.Form.Recordset
        rec.FindFirst ("Réfdossier =" & Me.Texte63.Value)
        Set rec = Nothing
    Else
    MsgBox "Veuillez sélectionner un critère de recherche", vbInformation + vbOKOnly, "AVERTISSEMENT"
     
    If Me.quickseak.Value = 2 Then
        Form_HOME.ACTUALISATION.Visible = True
        Form_HOME.ACTUALISATION.SetFocus
        Form_HOME.MENU.Visible = False
        Set rec = Form_HOME.ACTU.Form.Recordset
        rec.FindFirst ("Réfmandat =" & Me.Texte63.Value)
        Set rec = Nothing
    Else
    MsgBox "Veuillez sélectionner un critère de recherche", vbInformation + vbOKOnly, "AVERTISSEMENT"
     
    If Me.Texte63.Value = "" Then
    MsgBox "Veuillez entrer une référence.", vbInformation + vbOKOnly, "AVERTISSEMENT"
     
    End If
    End If
    End If
    End Sub
    Quelqu'un peut m'aider à démêler mon nœud ?

    Merci par avance

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 59
    Par défaut
    rapide mais simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    if Me.quickseak.Value <1 then
        msgbox "objectif 1 et 3"
    else
          if isnull(me.Texte63.value)=true then
            msgbox "objectif n°2"
          endif
    endif
    pour ce qui est du textbox, il vaut mieux le renommer car quand tu en aura 20 sur le même formulaire, ca sera pas simple à gérer

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    887
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 887
    Par défaut
    merci amigo, je vais tester de suite.
    C'est la syntaxe qui me fait défaut. Je ne savais pas que je pouvais utliser < ou >. je savais pour <>...

    Bref je te dis ça de suite.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    887
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 887
    Par défaut
    Voici ce que j'ai :
    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
    If Me.quickseak.Value < 1 Then
    MsgBox "Veuillez sélectionner un critère de recherche", vbInformation + vbOKOnly, "AVERTISSEMENT"
    Else
    If IsNull(Me.Texte63.Value) = True Then
    MsgBox "Veuillez entrer une référence.", vbInformation + vbOKOnly, "AVERTISSEMENT"
    Else
    If Me.quickseak.Value = 1 Then
        Form_HOME.ACTUALISATION.Visible = True
        Form_HOME.ACTUALISATION.SetFocus
        Form_HOME.MENU.Visible = False
        Dim rec As Recordset
        Set rec = Form_HOME.ACTU.Form.Recordset
        rec.FindFirst ("Réfdossier =" & Me.Texte63.Value)
        Set rec = Nothing
     
    If Me.quickseak.Value = 2 Then
        Form_HOME.ACTUALISATION.Visible = True
        Form_HOME.ACTUALISATION.SetFocus
        Form_HOME.MENU.Visible = False
        Set rec = Form_HOME.ACTU.Form.Recordset
        rec.FindFirst ("Réfmandat =" & Me.Texte63.Value)
        Set rec = Nothing
     
    End If
    End If
    End If
    End If
    End Sub
    ça fonctionne, sauf que j'ai le msgbox du 2ème obj qui s'affiche quand bien même aucune option n'a été cochée, mais ça je vais m'en dépatouiller je pense.
    Il y a t-il un moyen d'alléger ce code ?

    Quel code dois-je mettre si la valeur entrée ne correspond (erronée ou introuvable) à aucun enregistrement (j'y mettrai un msgbox d'ailleurs) ?

  5. #5
    Membre éprouvé
    Inscrit en
    Août 2008
    Messages
    131
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 131
    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
    Dim rec As Recordset
    If Me.quickseak.Value < 1 Then
        MsgBox "Veuillez sélectionner un critère de recherche", vbInformation + vbOKOnly, "AVERTISSEMENT"
    Else
        If IsNull(Me.Texte63.Value) = True Then
            MsgBox "Veuillez entrer une référence.", vbInformation + vbOKOnly, "AVERTISSEMENT"
        Else
            Form_HOME.ACTUALISATION.Visible = True
            Form_HOME.ACTUALISATION.SetFocus
            Form_HOME.Menu.Visible = False
            Set rec = Form_HOME.ACTU.Form.Recordset
     
            If Me.quickseak.Value = 1 Then
                rec.FindFirst ("Réfdossier =" & Me.Texte63.Value)
            ElseIf Me.quickseak.Value = 2 Then
                rec.FindFirst ("Réfmandat =" & Me.Texte63.Value)
            End If
            Set rec = Nothing
        End If
    End If
    End Sub

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    887
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 887
    Par défaut
    Merci pour ton intervention.
    C'est plus allégé effectivement...
    Mais ça ne règle pas le problème de valeur erronée ou inexistante.
    Quand je saisie une valeur je suis par défaut balancée sur le premier enregistrement. Comment faire ?

  7. #7
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 229
    Par défaut
    Je crois que si tu donnais à ton groupe d'option une valeur par défaut (0 par exemple) tu t'en sortirait sans effort.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    'Si  quickseak à 0 comme valeur par défaut
    If me.quickseak=0 then
        'ton premier msgbox
    Else
         If Isnull(me.TaZonedeTexte) Then
                 'ton second msgbox
         else
                 'ton traitement
         End If
    End if

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    887
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 887
    Par défaut
    Moui sûrement, mais je en sais pas ce que tu veux dire
    Moi, à la création de mon groupe, j'ai donné les valeurs 1 et 2 à mes options. Mais ce n'est peut-être pas ça dont tu parles

  9. #9
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 229
    Par défaut
    Citation Envoyé par Nessie37 Voir le message
    Moi, à la création de mon groupe, j'ai donné les valeurs 1 et 2 à mes options.
    ce qui veut dire que lorsque tu choisi une des options, ton groupe prend cette valeur.

    Mais si tu ne choisi rien du tout, quelle valeur ton groupe va prendre?
    Est ce que cette valeur (inconnue) est toujours < 1 comme tu le testes dans ton code?

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    887
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 887
    Par défaut
    Oki (je me doutais bien que ça voulait dire ça) .
    Donc, j'ai mis 0 à la place de <1 mais ça ne change rien là de toute façon...quand j'ai strictement rien de renseigné, j'ai le 2ème msgbx qui s'affiche, alors que je veux le premier, et si je renseigne une valeur erronée, je suis basculée par défaut sur mon premier enregistrement...
    Mieux, quand je ne sélectionne aucun critère et que j'entre une valeur, je suis également basculée sur un enregistrement sans que le msgbox ne se déclenche

    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
    Private Sub Commande62_Click()
     
    If Me.quickseak.Value = 0 Then
        MsgBox "Veuillez sélectionner un critère de recherche", vbInformation + vbOKOnly, "AVERTISSEMENT"
    Else
        If IsNull(Me.Texte63.Value) = True Then
            MsgBox "Veuillez saisir une référence.", vbInformation + vbOKOnly, "AVERTISSEMENT"
        Else
            Form_HOME.ACTUALISATION.Visible = True
            Form_HOME.ACTUALISATION.SetFocus
            Form_HOME.MENU.Visible = False
     
            Dim rec As Recordset
            Set rec = Form_HOME.ACTU.Form.Recordset
                If Me.quickseak.Value = 1 Then
                rec.FindFirst ("Réfdossier =" & Me.Texte63.Value)
            ElseIf Me.quickseak.Value = 2 Then
                rec.FindFirst ("Réfmandat =" & Me.Texte63.Value)
            End If
            Set rec = Nothing
    End If
    End If
    End Sub

  11. #11
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 229
    Par défaut
    Citation Envoyé par Nessie37 Voir le message
    Donc, j'ai mis 0 à la place de <1
    Mais avant il faut que tu donnes une valeur par défaut à ton groupe d'option.
    En mode création, selectionnes le groupe et regarde dans les propriétés pour ca.

  12. #12
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    887
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 887
    Par défaut
    Citation Envoyé par DMboup Voir le message
    Mais avant il faut que tu donnes une valeur par défaut à ton groupe d'option.
    En mode création, selectionnes le groupe et regarde dans les propriétés pour ca.
    Chose faite !
    quand je n'ai strictement rien de renseigné, le 1er msgbx s'affiche, c'est OK !

    Mais si je renseigne une valeur erronée, je suis toujours basculée par défaut sur mon premier enregistrement...Et je n'arrive pas à trouver la syntaxe pour avoir un msgbx quand la valeur saisie est erronée et que ça ne bascule nulle part.

  13. #13
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 229
    Par défaut
    Citation Envoyé par Nessie37 Voir le message
    ...Et je n'arrive pas à trouver la syntaxe pour avoir un msgbx quand la valeur saisie est erronée
    Quand fait tu un test sur la valeur saisie?

    je suis toujours basculée par défaut sur mon premier enregistrement ... et que ça ne bascule nulle part.
    Je ne comprend pas !

  14. #14
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    887
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 887
    Par défaut
    Une fois que j'ai coché un critère, je tape une valeur qui n'existe pas dans mes enregistrements, et donc ça me m'ouvre l'onglet sur un enregistrement et il se trouve que c'est le premier.

    Exemple :
    je sélectionne "référence dossier", et j'entre 1111 puis OK, bah je tombe sur un dossier qui n'a pas la référence 1111 (normal elle n'existe pas) mais c'est le premier dossier de ma liste. En fait, ça m'ouvre tout simplement le formulaire de consult tout bêtement.

  15. #15
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 229
    Par défaut
    Citation Envoyé par Nessie37 Voir le message
    Une fois que j'ai coché un critère, je tape une valeur qui n'existe pas dans mes enregistrements, et donc ça me m'ouvre l'onglet sur un enregistrement et il se trouve que c'est le premier.
    Ok d'accord. C'est le FindFirst qui ne marche pas.

    A la place, j'aurais juste créeé un filtre et non un recordset
    j'aurais remplacé cette partie
    Dim rec As Recordset
    Set rec = Form_HOME.ACTU.Form.Recordset
    If Me.quickseak.Value = 1 Then
    rec.FindFirst ("Réfdossier =" & Me.Texte63.Value)
    ElseIf Me.quickseak.Value = 2 Then
    rec.FindFirst ("Réfmandat =" & Me.Texte63.Value)
    End If
    Set rec = Nothing
    par celle la
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    dim mcri as String
     
                If Me.quickseak = 1 Then
                     mcri = "Réfdossier Like ""*" & Me.Texte63 & "*"""
                else
                      mcri = "Réfmandat Like ""*" & Me.Texte63 & "*"""
                End If
                     Me.Filter = mcri
                     Me.FilterOn = True
                     Me.Requery
    J'ai mis des Like que tu peux remplacer par une égalité.

  16. #16
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    887
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 887
    Par défaut
    Même résultat. Je suis désolée.
    Voici le msgbx que je voulais mettre au cas où
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox "Référence erronée ou inexsitante", vbInformation + vbOKOnly, "AVERTISSEMENT"

  17. #17
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 229
    Par défaut
    Il faut vérifier que tu as bien les champs Réfdossier ET Réfmandat dans ton formulaire et ta table.

    PS : Le FindFirst peut aussi marcher.

  18. #18
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    887
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 887
    Par défaut
    C'est le cas.
    J'ai décidé de garder le findfirst.
    Mais comment faire pour avoir en plus, un msgbx si la valeur saisie dans la zone de texte ne correspond à aucune réfdossier ou refmandat.
    Je n'arrive pas à faire le code pour.

    Merci

  19. #19
    Membre chevronné
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    503
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 503
    Par défaut
    Salut,

    Si je peux intervenir, en lisant tout ça, je tenais à vous faire remarquer que tout ce qui se passe est normal. Il n'y a pas d'erreur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     If Me.quickseak = 1 Then
                     mcri = "Réfdossier Like ""*" & Me.Texte63 & "*"""
                else
                      mcri = "Réfmandat Like ""*" & Me.Texte63 & "*"""
                End If
    Il faut que tu contrôles la validité de Me.Texte63.value et ne pas continuer si son contenu est vide, null ou différent des Réfdossier ou Réfmandat existants...

  20. #20
    Membre chevronné
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    503
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 503
    Par défaut
    Citation Envoyé par Nessie37 Voir le message
    Mais comment faire pour avoir en plus, un msgbx si la valeur saisie dans la zone de texte ne correspond à aucune réfdossier ou refmandat.
    tu fais un select préalable sur ta table:
    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
     
    dim req as recordset
    If Me.quickseak = 1 Then
    set req = currentdb().execute("SELECT count (Réfdossier) FROM TaTable WHERE Réfdossier = """ & Me.Texte63 & """")
    if req.recordcount > 0 then
          mcri = "Réfdossier = ""*" & Me.Texte63 & "*"""
    else
          msgbox "Saisie invalide/inexistante"
    end if
    else
    set req = currentdb().execute("SELECT count (Réfdossier) FROM TaTable WHERE Réfmandat = """ & Me.Texte63 & """")
    if req.recordcount > 0 then
          mcri = "Réfmandat = ""*" & Me.Texte63 & "*"""
    else
          msgbox "Saisie invalide/inexistante"
    end if
    End If

Discussions similaires

  1. Aide requise sur "du code java"? (sur la documentation)
    Par corseb-delete dans le forum Général Java
    Réponses: 2
    Dernier message: 07/04/2008, 11h51
  2. If then sur groupe d'option.
    Par Nessie37 dans le forum VBA Access
    Réponses: 4
    Dernier message: 08/11/2007, 18h22
  3. Demande d'aide pour un problème de code source sur devC++
    Par Rickantonais dans le forum Débuter
    Réponses: 28
    Dernier message: 01/08/2007, 14h09
  4. Aide sur Group by , sum et count
    Par rippoz dans le forum Langage SQL
    Réponses: 3
    Dernier message: 08/06/2007, 14h48
  5. [Access 2000] Evénement click sur groupe d'option
    Par Mariboo dans le forum Access
    Réponses: 1
    Dernier message: 22/09/2006, 14h52

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