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

Access Discussion :

[VBA-A] Condition pour boucle if


Sujet :

Access

  1. #1
    Membre à l'essai
    Inscrit en
    Novembre 2004
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 20
    Points : 12
    Points
    12
    Par défaut [VBA-A] Condition pour boucle if
    Bonjour, j'ai besoin d'aide car là, je ne sais pas quoi faire! Je m'explique!
    J'ai un code écrit en vba sous Access, qui effectue une recherche dans un formulaire. Il m'affiche le résultat de sa recherche, mais seulement, même si il ne trouve aucun enregistrement correspondant il m'affiche le formulaire vide. Je souhaiterais qu'à la place il me mette un message d'erreur et ne m'ouvre pas le formulaire. Seulement je ne sais pas quoi mettre comme variable dans la condition d'arrêt. Je vous met mon 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
    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
     
    Private Sub Commande42_Click()
    Dim flag As String
    Dim stDocName As String
    Dim stLinkCriteria As String
    Dim SQL As String
     
    flag = "False"
    stDocName = "F_AFFAIRES"
     
    If Not IsNull(Reference) Then 'Lien par rapport à la Référence de l'affaire
        flag = "ok"
     
        stLinkCriteria = "[Ref_affaire]=" & "'" & Me![Reference] & "'"
        'La boucle serait là et ressemblerait à ça : 
        If critère d'execution then
            DoCmd.OpenForm stDocName, , , stLinkCriteria, acFormReadOnly
            Else
            Msgbox ("Aucun enregistrement ne correspond à votre critère de recherche")
        End If
        Else
        If Not IsNull(Nom) Then 'Lien par rapport au Nom de l'affaire
            flag = "ok"
            If Left(Nom, 1) = "*" Or Right(Nom, 1) = "*" Then
                stLinkCriteria = "[Nom_affaire] Like" & "'" & Me![Nom] & "'"
                Else
                stLinkCriteria = "[Nom_affaire]=" & "'" & Me![Nom] & "'"
            End If
            DoCmd.OpenForm stDocName, , , stLinkCriteria, acFormReadOnly
            Else
            If Not IsNull(Salarie) Then 'Lien par rapport au Nom du Salarié responsable
                flag = "ok"
                SQL = "Select Num_salarié from SALARIES Where Nom_salarié Like " & "'" & Salarie & "'"
     
                Me.RecordSource = SQL
                If Left(Nom, 1) = "*" Or Right(Nom, 1) = "*" Then
                    stLinkCriteria = "[Num_salarié] Like" & "'" & Me![Salarie] & "'"
                    Else
                    stLinkCriteria = "[Num_salarié]=" & "'" & [Num_salarié] & "'"
                End If
                DoCmd.OpenForm stDocName, , , stLinkCriteria, acFormReadOnly
                Else
                If Not IsNull(NomClient) Then 'Lien par rapport au Nom du client
                    flag = "ok"
                    SQL = "Select Ref_client from CLIENTS Where Nom_client Like " & "'" & NomClient & "'"
     
                    Me.RecordSource = SQL
                    If Left(NomClient, 1) = "*" Or Right(NomClient, 1) = "*" Then
                        stLinkCriteria = "[Ref_client] Like " & "'" & Me![Ref_client] & "'"
                        Else
                        stLinkCriteria = "[Ref_client]=" & "'" & [Ref_client] & "'"
                    End If
                    DoCmd.OpenForm stDocName, , , stLinkCriteria, acFormReadOnly
                    Else
                    If Not IsNull(MontantMin) Then 'Lien par rapport au montant minimum de l'affaire
                        flag = "ok"
     
                        stLinkCriteria = "[MontantHTMin_affaire]=" & Me![MontantMin]
                        DoCmd.OpenForm stDocName, , , stLinkCriteria, acFormReadOnly
                    End If
                End If
            End If
        End If
    End If
     
    'Message d'erreur si rien n'est saisie
    If flag = "False" Then
        MsgBox ("Aucune information n'a été saisie!")
    End If
     
    End Sub
    Merci pour votre aide!
    J'espère avoir été clair! Bonne journée!

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Déjà, à la place de Flag = "Ok", si tu utilisais un booleen, ce serait une économie

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim ok as boolean
    ok = Not IsNull(Reference)
    if not ok then
         MsgBox ("Aucune information n'a été saisie!")
         Exit sub
    endif
    Ça ferait déjà un niveau de moins dans les if, ce qui faciliterait la lecture

    Si j'ai bien compris, le problème est là

    If critère d'execution then
    DoCmd.OpenForm stDocName, , , stLinkCriteria, acFormReadOnly
    Else
    Msgbox ("Aucun enregistrement ne correspond à votre critère de recherche")
    End If
    C'est ça ?

    A+

  3. #3
    Membre à l'essai
    Inscrit en
    Novembre 2004
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 20
    Points : 12
    Points
    12
    Par défaut
    Oui c'est ca! Je ne sais pas quoi mettre comme condition pour qu'il ne m'ouvre mon formulaire que si j'ai bien un enregistrement qui correspond!

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Désolé, mais là je ne peux pas t'aider.
    Il faudrait qu'un pro de VB qui sait lire un fichier sans l'ouvrir passe par là
    Je crois qu'AlainTech avait mis une réponse mais c'est vieux.
    Bbill doit aussi savoir ça.

    Je cherche si je trouve quelque chose...

    A+

  5. #5
    Membre à l'essai
    Inscrit en
    Novembre 2004
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 20
    Points : 12
    Points
    12
    Par défaut
    Merci beaucoup! Je continue mes recherches aussi de mon côté!

  6. #6
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Points : 4 297
    Points
    4 297
    Par défaut
    recordcount
    Elle est pas belle la vie ?

  7. #7
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    Oui, et la syntaxe exacte, c'est quoi?
    Ca doit être un truc du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    If Docmd.ExecuteQuery(stLinkCriteria).RecordCount = 0 Then
       'Je ne fais rien: exit...
    Else
       Gnagnagna.OpenForm... etc...Etc...etc...
    End If
    Mais sans Access, je ne sais pas trop...

Discussions similaires

  1. Condition pour boucle
    Par fisico016 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 26/05/2008, 09h48
  2. boucles avec conditions pour faire un suivi
    Par lilyla dans le forum MATLAB
    Réponses: 1
    Dernier message: 17/03/2008, 11h53
  3. [VBA-E] Problème pour faire une boucle dans une userform
    Par Garlim dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 02/05/2007, 23h10
  4. [VBA-E] Problème pour coder une boucle
    Par lord-asriel dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 04/03/2007, 10h10
  5. [VBA-EXCEL]-condition pour ouvrir une msgbox
    Par captaine93 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/08/2006, 20h51

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