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 :

Else sans If [AC-2003]


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Mars 2011
    Messages
    316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Contrôleur de Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2011
    Messages : 316
    Par défaut Else sans If
    Bonjour,

    Ci joint après mon module.

    Ce que je ne comprends pas c'est que ma première condition (ligne 20 à 29)fonctionne alors que le deuxième non "Else sans IF" ligne 77 à 81

    j'ai beau chercher je ne vois pas.

    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
    unction Automatisme()
     Dim Rep1 As Integer
     Dim Rep2 As Integer
     Dim Rep3 As Integer
     Dim Rep4 As Integer
     
    Dim Mois As Integer
    Dim NumSem As Integer
    Dim monsql_manquant As String
    Dim monsql_BNC As String
    Dim monsql_MvtStock As String
    Dim monsql_SupmvtStock As String
    Dim monsql_SupBnC As String
    Dim monsql_SupManquant As String
     
     
    On Error GoTo Macro2_Err
     
        Rep1 = MsgBox("Voulez vous mettre la table adressage à jour?", vbYesNo, "")
         If Rep1 = vbYes Then
                 Rep2 = MsgBox("Le Fichier Excel est il mise à jour?", vbYesNo, "")
                        If Rep2 = vbYes Then GoTo PointA
                        ElseIf Rep2 = vbNo Then
                        MsgBox "Merci de mettre le fichier à jour", vbOKOnly, ""
                        Exit Function
     
     
        ElseIf Rep1 = vbNo Then GoTo PointB
        End If
     
     
    PointA:
        DoCmd.SetWarnings False
        DoCmd.OpenQuery "Sup_T_Adresssage", acViewNormal, acEdit
        DoCmd.SetWarnings False
        DoCmd.OpenQuery "Ajout Adressage", acViewNormal, acAdd
     
    PointB:
    Mois = InputBox("Veuillez saisir un numéro de mois entre 1 et 12", "saisir le mois")
    NumSem = InputBox("Veuillez saisir un numéro de semaine entre 1 et 52", "saisir le numéro de semaine")
     
    monsql_manquant = _
    "INSERT INTO [BD Manquant] ( Année, Mois, Semaine, Catégorie, Circuit, " & _
    "ITM8, [Libellé ITM8], [Nb UVC], Conditionnement, [Prix UC], Valo ) " & _
    "SELECT 2013 AS Année, " & Mois & " AS Expr1, " & NumSem & " AS Expr2, " & _
    "Val([Fampro]) AS Expr3, ExManquant.Cirpic, Val([ITM 8]) AS Expr4, " & _
    "ExManquant.Désignation, ExManquant.[Ecart en UVC], ExManquant.PCB, " & _
    "ExManquant.[Prix UC],[Prix UC]*[Ecart en UVC] AS Valo " & _
    "FROM ExManquant;"
     
    monsql_BNC = _
    "INSERT INTO [BD BNC] ( Année, Mois, Semaine, Catégorie, [Valo Cession]," & _
    "ITM8, [Libellé ITM8], Qté, [Px UC], Motifs, [Avoir/Facture] )" & _
    "SELECT 2013 AS Année, " & Mois & " AS Expr1, " & NumSem & " AS Expr2, Val([Categorie]) AS Expr3," & _
    "EXBNC.[Valo au Px Cession], EXBNC.Itm8, EXBNC.[Libelle Article], EXBNC.[Quantite SUM]," & _
    "EXBNC.[Pcsfac SUM], EXBNC.[motifs TR16/TR14], IIf([Type]=1,-[Valo au Px Cession]," & _
    "[Valo au Px Cession]) AS [Avoir/Facture]" & _
    "FROM EXBNC;"
     
     
     
    monsql_MvtStock = _
    "INSERT INTO [BDMvtStock] ( Année, Mois, Semaine, Catégorie, ITM8, " & _
    "LibelléITM8, MvtStock, [Valorisation Mvt Stock] ) " & _
    "SELECT 2013 AS Année, " & Mois & " AS Expr1, " & NumSem & " AS Expr2, " & _
    "Val([F1]) AS Expr3, Val([F2]) AS Expr4, [Mvt Stock].F3, [Mvt Stock].F5, " & _
    "[Mvt Stock].F7 FROM [Mvt Stock];"
     
        DoCmd.SetWarnings False
        DoCmd.RunSQL monsql_manquant
        DoCmd.RunSQL monsql_BNC
        DoCmd.RunSQL monsql_MvtStock
        DoCmd.OpenQuery "Contrôle Nombre de Lignes intégrées", acViewNormal, acEdit
     
     On Error GoTo Macro2_Err
     
         Rep3 = MsgBox("Le nombre de lignes est-il correct?", vbYesNo, "")
         If Rep3 = vbYes Then GoTo PointC
     
     
        ElseIf Rep3 = vbNo Then
     
    monsql_SupmvtStock = _
    "Delete [BDMvtStock] (Mois, BDMvtStock.Semaine)" & _
    "FROM [BDMvtStock]" & _
    "WHERE (((BDMvtStock.Mois)=" & Mois & ") AND ((BDMvtStock.Semaine)=" & NumSem & "));"
     
    monsql_SupManquant = _
    "Delete [BD Manquant] (Mois, [BD Manquant].Semaine)" & _
    "FROM [BD Manquant]" & _
    "WHERE ((([BD Manquant].Mois)=" & Mois & ") AND (([BD Manquant].Semaine)=" & Numsem & "));"
     
    monsql_SupBnC = _
    "DELETE [BD BNC] (Mois, [BD BNC].Semaine)" & _
    "FROM [BD BNC]" & _
    " WHERE ((([BD BNC].Mois)=" & Mois & ") AND (([BD BNC].Semaine)=" & NumSem & "));"
     
        End If
     
    GoTo PointB
     
    PointC:
        DoCmd.TransferSpreadsheet acExport, 0, "TCDDemarque", "D:\Mes Documents\00 - Réel\2012\Vimy\Access Démarque\Demarque_circuit 074.xls", True, ""
        Beep
        MsgBox "Export Excel effectué", vbInformation, "Export Excel"
     
        DoCmd.Quit acSave
        DoCmd.SetWarnings True
     
     
    Macro2_Exit:
        Exit Function
     
    Macro2_Err:
        MsgBox Error$
        Resume Macro2_Exit
     
    End Function
    Merci de votre aide

  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,

    attention à ne pas partir dans tous les sens dans ta gestion des Then sur tes If.

    Soit tu mets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    If ... Then
    ...
    ElseIf
    ...
    Else
     
    End If
    soit

    ton code deviendrait donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    If Rep1 = vbYes Then
          Rep2 = MsgBox("Le Fichier Excel est il mise à jour?", vbYesNo, "")
          If Rep2 = vbYes Then 
                 GoTo PointA
          ElseIf Rep2 = vbNo Then
                 MsgBox "Merci de mettre le fichier à jour", vbOKOnly, ""
                 Exit Function
          End If
    ElseIf Rep1 = vbNo Then 
          GoTo PointB
    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
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Par défaut
    Salut jpcheck et ALEX80800,

    en précision des bonnes recommandations de jpcheck:

    ce que tu crois comprendre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
         If Rep1 = vbYes Then
                 Rep2 = MsgBox("Le Fichier Excel est il mise à jour?", vbYesNo, "")
                        If Rep2 = vbYes Then GoTo PointA
                        ElseIf Rep2 = vbNo Then
                        MsgBox "Merci de mettre le fichier à jour", vbOKOnly, ""
                        Exit Function
     
     
        ElseIf Rep1 = vbNo Then GoTo PointB
        End If
    ce que vb comprend:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
         If Rep1 = vbYes Then
                 Rep2 = MsgBox("Le Fichier Excel est il mise à jour?", vbYesNo, "")
                 If Rep2 = vbYes Then GoTo PointA  ' "end if" implicite
         ElseIf Rep2 = vbNo Then
                 MsgBox "Merci de mettre le fichier à jour", vbOKOnly, ""
                 Exit Function 
         ElseIf Rep1 = vbNo Then GoTo PointB
         End If
    ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        If Rep3 = vbYes Then GoTo PointC
     
     
        ElseIf Rep3 = vbNo Then
    vb comprend:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
        If Rep3 = vbYes Then GoTo PointC  'if ... then ... "end if" (implicite puisque instruction sur la même ligne après "then")
        ElseIf Rep3 = vbNo Then  ' < else sans if.
    pas confondre avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
         If Rep3 = vbYes Then  ' pas de "end if" implicite puisque pas d'instruction après "then" sur la même ligne
               GoTo PointC
         ElseIf Rep3 = vbNo Then
               '...
         End If

  4. #4
    Membre éclairé
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Mars 2011
    Messages
    316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Contrôleur de Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2011
    Messages : 316
    Par défaut
    Un grand grand grand merci Vodiem.

    Cette explication est concise et clair

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

Discussions similaires

  1. [AC-2003] If sans Else ou Vrai Faux sans valeur si Faux
    Par minot83 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 30/08/2014, 10h24
  2. Problème if sans else lors de la compilation
    Par morgothy dans le forum Autres éditeurs
    Réponses: 4
    Dernier message: 08/07/2013, 11h41
  3. If - Else & erreur de compilation Else sans if
    Par toniodelavega dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 30/08/2010, 15h15
  4. [MySQL] Un if qui passe à else sans raison
    Par SnoT- dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 29/01/2008, 13h06
  5. [Kylix] Fiches sans bordure
    Par alex dans le forum EDI
    Réponses: 4
    Dernier message: 28/04/2002, 21h19

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