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 :

VBA Optimisation de code, Select Case et requete SQL


Sujet :

VBA Access

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Avril 2008
    Messages : 95
    Par défaut VBA Optimisation de code, Select Case et requete SQL
    Bonjour à tous,

    j'ai un petit souci, enfin, mon code marche très bien, mais il fait vraiment beaucoup de lignes et ça devient difficile de m'y retrouver...

    J'ai beaucoup de lignes, notamment à cause de ça :

    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
     
    Select Case rstNom.Fields("classification")
        Case Is = "Actions américaines"
            TabClassNom(0, TailleClasse(0)) = nom
            TabClass(0, TailleClasse(0)) = code
            TabClassVar(0, TailleClasse(0)) = variation
            TabClassBIS(0, TailleClasse(0)) = "Actions américaines"
            TailleClasse(0) = TailleClasse(0) + 1
        Case Is = "Actions européennes"
            TabClassNom(1, TailleClasse(1)) = nom
            TabClass(1, TailleClasse(1)) = code
            TabClassVar(1, TailleClasse(1)) = variation
            TabClassBIS(1, TailleClasse(1)) = "Actions européennes"
            TailleClasse(1) = TailleClasse(1) + 1
        Case Is = "Actions françaises"
            TabClassNom(2, TailleClasse(2)) = nom
            TabClass(2, TailleClasse(2)) = code
            TabClassVar(2, TailleClasse(2)) = variation
            TabClassBIS(2, TailleClasse(2)) = "Actions françaises"
            TailleClasse(2) = TailleClasse(2) + 1
        Case Is = "Actions internationales"
    ....
     
    End Select
    Je voudrais savoir si vous aviez une petite astuce, car en fait "Actions françaises" et tout ça, ce sont les résultats de ma requete classification, et donc, j'ai 23 cases ! alors que comme vous le voyez après, je remplie quatres tableaux de la même manière, seulement avec des indices qui changent.

    Donc si jamais vous avez une idée à me soumettre je suis preneuse, merci !

    Secco

  2. #2
    Expert confirmé
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Par défaut
    Hello,

    je verrais bien au pire une collection, au mieux une table ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    coll("Valeur machin")=1
    coll("Valeur Truc")=2
    ...
    et ensuite un code dans ce genre là

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    varIndex = coll(rstNom.Fields("classification"))
            TabClassNom(varIndex, TailleClasse(varIndex)) = nom
            TabClass(varIndex, TailleClasse(varIndex)) = code
            TabClassVar(varIndex, TailleClasse(varIndex)) = variation
            TabClassBIS(varIndex, TailleClasse(varIndex)) =  rstNom.Fields("classification")
            TailleClasse(varIndex) = TailleClasse(varIndex) + 1

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Avril 2008
    Messages : 95
    Par défaut
    Je ne comprends pas très bien le système de collection que tu montres, aurais tu quelques part un peu d'information sur ça ?

    Aujourd'hui je viens de voir que ma liste va s'agrandir à 38 ! Donc, je vais vraiment d'urgences chercher une solution ce soir... Si y'a d'autres propositions

  4. #4
    Expert confirmé
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Par défaut
    Il suffit que tu aies une table :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Type                Code
    Actions américaines 1
    Actions françaises 2

    etc...

    puis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    VarIndex = DLookup("code","Table des codes","Type='" & rstNom.Fields("classification") & "'")

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Avril 2008
    Messages : 95
    Par défaut
    En fait VarIndex je le définie puis je ne fais plus de Select Case ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    VarIndex = DLookup("code","Table des codes","Type='" & rstNom.Fields("classification") & "'")
            TabClassNom(varIndex, TailleClasse(varIndex)) = nom
            TabClass(varIndex, TailleClasse(varIndex)) = code
            TabClassVar(varIndex, TailleClasse(varIndex)) = variation
            TabClassBIS(varIndex, TailleClasse(varIndex)) =  rstNom.Fields("classification")
            TailleClasse(varIndex) = TailleClasse(varIndex) + 1
    (moi ? être un peu longue à comprendre ??? nan ! Je vois pas ce qui peut faire penser ça...)

  6. #6
    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
    Eh bien moi je ferais comme ca
    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
     
    Select Case rstNom.Fields("classification")
        Case Is = "Actions américaines"
            varIndex=0
     
        Case Is = "Actions européennes"
            varIndex=1
     
        Case Is = "Actions françaises"
            varIndex=2
     
        Case Is = "Actions internationales"
    ....
     
    End Select
     
     TabClassNom(varIndex, TailleClasse(varIndex)) = nom
            TabClass(varIndex, TailleClasse(varIndex)) = code
            TabClassVar(varIndex, TailleClasse(varIndex)) = variation
            TabClassBIS(varIndex, TailleClasse(varIndex)) =  rstNom.Fields("classification")
            TailleClasse(varIndex) = TailleClasse(varIndex) + 1

  7. #7
    Expert confirmé
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Par défaut
    Oui !

    Citation Envoyé par Secco Voir le message
    En fait VarIndex je le définie puis je ne fais plus de Select Case ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    VarIndex = DLookup("code","Table des codes","Type='" & rstNom.Fields("classification") & "'")
            TabClassNom(varIndex, TailleClasse(varIndex)) = nom
            TabClass(varIndex, TailleClasse(varIndex)) = code
            TabClassVar(varIndex, TailleClasse(varIndex)) = variation
            TabClassBIS(varIndex, TailleClasse(varIndex)) =  rstNom.Fields("classification")
            TailleClasse(varIndex) = TailleClasse(varIndex) + 1

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Avril 2008
    Messages : 95
    Par défaut
    Bon, je n'ai pas ma base sous la main mais je test ça demain à la première heure, merci beaucoup ! (et surtout si ça marche :p)

    Bonne soirée à tous,
    (je repasse demain vous dire ce qu'il en est)

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

Discussions similaires

  1. [Etats & Requêtes] Récupérer un select d'une requete sql
    Par recfile dans le forum WinDev
    Réponses: 5
    Dernier message: 07/11/2012, 15h28
  2. [XL-2003] [VBA] Optimisation de code
    Par bat001 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 08/09/2012, 21h43
  3. [XL-2007] Optimisation d'un SELECT CASE
    Par apt dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 06/06/2012, 18h55
  4. [A-03] probleme code SELECT CASE
    Par emye3 dans le forum VBA Access
    Réponses: 4
    Dernier message: 30/10/2008, 09h20
  5. optimiser ce code qui reitère les requetes
    Par french-petzouille dans le forum Requêtes
    Réponses: 4
    Dernier message: 14/08/2007, 10h26

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