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 :

[Access 2003 + VBA] Connaitre la valeur la plus grande parmis trois


Sujet :

Access

  1. #1
    Membre régulier Avatar de 973thom
    Inscrit en
    Juin 2004
    Messages
    132
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Juin 2004
    Messages : 132
    Points : 78
    Points
    78
    Par défaut [Access 2003 + VBA] Connaitre la valeur la plus grande parmis trois
    Bonjour,

    Dans Access 2003 je fais une routine en VBA pour connaitre la valeur la plus grande parmis trois champ de type numérique.

    J'ai donc déclaré trois variables : SurfZPG (Surface d'une parcelle dans la Zone des Pas Géométrique) SurfTitre (Surface de la parcelle déjà titrée) SurfDOM (Surface de la parcelle en terrain DOManial).

    Effectivement, une parcelle peut avoir une emprise sur ces trois "type de terrain".

    Je fais donc une boucle dans ma table et pour chaque enregistrements je souhaite connaitre la valeur la plus grande afin de savoir où se situe majoritairement mes parcelles. Ainsi je notre ZPG / DOM ou TITRE dans un quatrième champ (la variable mise à jour et qui sera attribuée à ce champ est : SurfRetenu)

    Avez vous une idée de la requête à écrire pour connaitre la valeur la plus grande ?

    Voici mon code... qui ne fais qu'une boucle pour le moment...
    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
    Private Sub Commande1_Click()
    Dim DBS As Database
    Dim TAB_DOSSIER As DAO.Recordset
    Dim SurfZPG , Dim SurfTitre, surfDom As Integer
    Dim SurfRetenue As String
    
    Set DBS = CurrentDb()
    Set TAB_DOSSIER = DBS.OpenRecordset("TAB_DOSSIER_PARCELLE", dbOpenTable)
    
    TAB_DOSSIER.MoveFirst
    While Not TAB_DOSSIER.EOF
        SurfRetenue = ""    
        SurfZPG = TAB_DOSSIER("SURF_ZPG")
        SurfTitre = TAB_DOSSIER("SURF_ZPG")
        surfDom = TAB_DOSSIER("SURF_ZPG")    
        
         'C'est ici que je dois connaitre la plus grande des trois valeurs
        
        TAB_DOSSIER.Edit
             TAB_DOSSIER("LIEU") = SurfRetenue
        TAB_DOSSIER.Update
        
        TAB_DOSSIER.MoveNext
        
    Wend    
    End Sub
    Merci d'avance pour votre aide

  2. #2
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 342
    Points : 4 299
    Points
    4 299
    Par défaut
    Pourquoi ne pas créer une valeur temporaire et comparer avec celle-ci Un truc de ce genre :

    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
     
    dim ValTemp as long           'enfin ça dépend ce que sont tes valeurs
    While Not TAB_DOSSIER.EOF
        SurfRetenue = ""    
        SurfZPG = TAB_DOSSIER("SURF_ZPG")
        SurfTitre = TAB_DOSSIER("SURF_ZPG")
        surfDom = TAB_DOSSIER("SURF_ZPG")    
     
        valtemp = SurfZPG
        if SurfTitre > valtemp then
                  valtemp = SurfTitre
       end if
        if surfDom > valtemp then
                  valtemp = surfDom
       end if
     
     
        TAB_DOSSIER.Edit
             TAB_DOSSIER("LIEU") = SurfRetenue
        TAB_DOSSIER.Update
     
        TAB_DOSSIER.MoveNext
     
    Wend
    un truc dans ce genre la

    J'espère avoir été compréhensible parce qu eje viens de remarquer que ut avais fait une valeur SurfRetenue et ça doit etre ça ta variable temporaire en fait

  3. #3
    Membre régulier Avatar de 973thom
    Inscrit en
    Juin 2004
    Messages
    132
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Juin 2004
    Messages : 132
    Points : 78
    Points
    78
    Par défaut
    Merci du coup de main.

    Mais je me pose justement la question de savoir si on prends bien tout les cas en compte comme ça... je n'arrive pas à bien visualiser...

    Merci

  4. #4
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 342
    Points : 4 299
    Points
    4 299
    Par défaut
    SI tu veux faire un test, fait une procédure de test et tu prend 3 valeurs différentes et tu les changes à chaque fois tu verra bien si ça fonctionne mais normalement ça devrait marcher

    Par exemple, ave cun exemple simple si tu prend :
    a = 45
    b = 47
    c = 46

    valtemp prend la valeur a au départ, donc 45
    Ensuite il compare avec b, vu qu'il est plus grand il prend sa valeur, donc 47
    Enfin, il compare avec c, vu qu'il est plus petit il garde la valeur de b, donc 47

  5. #5
    Membre régulier Avatar de 973thom
    Inscrit en
    Juin 2004
    Messages
    132
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Juin 2004
    Messages : 132
    Points : 78
    Points
    78
    Par défaut
    Effectivement... vu comme cela ça devrait être bon.

    Je teste sur une table temporaire et je te tiens au courant.

    Merci beaucoup !

    thomas

Discussions similaires

  1. c++ valeur la plus grande parmis les valeurs dun tableau
    Par corseb-delete dans le forum C++
    Réponses: 19
    Dernier message: 14/12/2006, 22h14
  2. [Access 2003/VBA]Connaitre la présence d'un table
    Par cotmar dans le forum Access
    Réponses: 5
    Dernier message: 31/08/2006, 15h50
  3. Réponses: 2
    Dernier message: 05/06/2006, 11h59
  4. Réponses: 12
    Dernier message: 30/05/2006, 15h57
  5. Réponses: 7
    Dernier message: 26/05/2006, 14h14

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