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 :

Passer d'un code avec des if imbriqué à un If et For


Sujet :

VBA Access

  1. #1
    Membre du Club
    Homme Profil pro
    Ingénieur process
    Inscrit en
    Novembre 2014
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur process
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2014
    Messages : 111
    Points : 54
    Points
    54
    Par défaut Passer d'un code avec des if imbriqué à un If et For
    Bonjour
    J'ai mis en place un code avec des If Then Else dans un évènement, mais le nombre de cas est supérieur à 40. J'aurais aimé intégrer un For pour éviter la redondance et faciliter la maintenance.
    Ce code permet l'affichage d'un sous formulaire en fonction d'un champ du formulaire.

    Voici mon code de départ (qui fonctionne)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Form_Current()
    If ID_Role.Value = 124 Then
    Me.Fille148.SourceObject = "F_Role_124"
    ElseIf ID_Role.Value = 124 Then
    Me.Fille148.SourceObject = "F_Role_124"
    Else
    Me.Fille148.SourceObject = "F_Travaux"
    End If
    End Sub
    Voici le code que j'ai voulu bidouiller mais il ne fonctionne pas
    Need Help Please



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub Form_Current()
    Dim i As Integer
    For i = 110 To 140
    If ID_Role.Value = i Then
    Me.Fille148.SourceObject = "F_Role_i"
     
    Exit For
    End If
    Next i
    If ID_Role.Value = none Then
    Me.Fille148.SourceObject = "F_Travaux"
    End If
    End Sub
    Merci d'avance au forum pour toutes aides apportées

    Cordialement

  2. #2
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 282 192
    Points
    282 192
    Par défaut
    Bonjour,

    Je ne comprends pas ce que tu veux faire.

    Peux-tu exprimer le problème en français ?

    Au départ, tu as...

    À l'arrivée, tu voudrais...
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  3. #3
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 593
    Points : 34 250
    Points
    34 250
    Par défaut
    Salut,

    je tente, mais ton code n'est pas des plus explicite pour etre certain que cela correspond à ton besoin :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub Form_Current()
    Dim i As Integer
    Dim bOK as Boolean
    For i = 110 To 140
        If ID_Role.Value = i Then
            Me.Fille148.SourceObject = "F_Role_" & i
            bOk=True
            Exit For
        End If
    Next i
    If Not bOk Then
        Me.Fille148.SourceObject = "F_Travaux"
    End If
    End Sub
    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 :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

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

    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

  4. #4
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2017
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2017
    Messages : 114
    Points : 148
    Points
    148
    Par défaut
    Bonjour,

    Je crois que c'est effectivement ce qu'il a besoin.
    Si c'est le cas j'ai une version plus rapide, sans utiliser de boucle for (Dans le cas ou i est compris entre deux chiffres)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Private Sub Form_current()
       If ID_Role.value >= 100 And ID_Role.value <= 140 Then
          Me.Fille148.sourceObject = "F_Role_" & ID_Role.value
       Else
          Me.Fille148.SourceObject = "F_Travaux"
       End if
    End Sub

  5. #5
    Membre du Club
    Homme Profil pro
    Ingénieur process
    Inscrit en
    Novembre 2014
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur process
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2014
    Messages : 111
    Points : 54
    Points
    54
    Par défaut
    Bonjour,

    Je crois que malgré ma très mauvaise explication vous avez compris, je vais essayé la modification. Si cela ne fonctionne pas, je reviens avec une explication claire.

    merci pour toute ces réponses qui me permettent de mieux comprendre le code.
    Cordialement,

  6. #6
    Membre du Club
    Homme Profil pro
    Ingénieur process
    Inscrit en
    Novembre 2014
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur process
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2014
    Messages : 111
    Points : 54
    Points
    54
    Par défaut
    Merci à tous,

    C'est exactement ce que je recherchai.
    Vous êtes trop bons.

    Cordialement,

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

Discussions similaires

  1. Problème avec des requète imbriquée dans le from
    Par Stouille33 dans le forum Développement
    Réponses: 5
    Dernier message: 23/10/2008, 19h17
  2. Réponses: 1
    Dernier message: 17/06/2007, 00h49
  3. [PHP-JS] Optimisation du code avec des boucles
    Par jiojioforever dans le forum Langage
    Réponses: 3
    Dernier message: 15/06/2007, 16h02
  4. Tableau avec des cellules imbriquées
    Par MonOncle dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 15/11/2006, 22h56
  5. passer une requete ajout avec des enregitrement null
    Par LesLemmings dans le forum Requêtes et SQL.
    Réponses: 15
    Dernier message: 13/06/2006, 15h20

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