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 :

Comparer 2 ou plusieurs champs dans 1 table access


Sujet :

VBA Access

  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 7
    Points : 3
    Points
    3
    Par défaut Comparer 2 ou plusieurs champs dans 1 table access
    Bonjour à tous,

    Je faisais cette requête sous Excel mais la limitation du nombre de lignes dans EXCEL ne me permet plus de le faire sous ACCESS donc j'ai une table access contenant X enregistrements, je souhaite :
    - comparer 1 enregistrement d'une ligne avec l'enregistrement de la ligne suivante et de la ligne précédente
    - de faire ça jusqu'à la fin de ma table
    - de retourner la valeur de cette comparaison dans la colonne de ma table.
    J'ai trouvé le cours sur le dataset mais je n'y comprends pas grands choses. (Une fois sortie de mes petites fonctions de comparaisons si ..... alors ....) donc un petit peu, euh pardon une grande aide serait la bienvenue
    J'espère avoir été assez clair.
    Merci par avance

    Stefan13

  2. #2
    Rédacteur/Modérateur
    Avatar de Jeannot45
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2004
    Messages
    3 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 871
    Points : 8 489
    Points
    8 489
    Par défaut
    Hello stephan

    Peux préciser en quoi consiste tes comparaisons, tu parles ligne à ligne, cela signifie t il que tu compares champ par champ

    Jeannot
    Jeannot

    Liens Office indispensables à visiter: Cours (Tutos), F.A.Q., Sources VBA

    Ne posez pas de questions par MP, je n'ai pas le temps d'y répondre

  3. #3
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    oui jeannot
    en fait je souhaite comparer par exemple le champs (ligne 2 , colonne 4) avec le champs (ligne 1 , colonne 4) et le champs (ligne 3 , colonne 4).
    La colonne peut différer car j'ai plusieurs comparaison à faire.
    Je sais pas si c'est assez explicite en tout cas j'espère.

    Stefan

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour

    A mon avis la meilleur solution est DAO (voir le tutorial sur le sujet, le lien pour les tutos est dans ma signature).

    En utilisant un Recordset avec les propriétés MoveNext et MovePrevious pour naviguer.

    Cependant il faut que ta table est un ordre logique qui sera un OrderBy dans ta requête qui alimentera ton recordset, sinon tu ne pourras rien comparer.

    Starec

  5. #5
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    salut

    j'avais récupéré les tuto mais je comprends pas tout surtout les déclarations et pour le parcours dans les les lignes/colonnes.
    Le movenext et moveprevious font un déplacement horizontal dans la ligne ? ou un déplacement vertical dans la colonne ?

    stefan

  6. #6
    Invité
    Invité(e)
    Par défaut
    Re

    Un déplacement vertical, comme si tu passais d'une ligne à l'autre, sauf que sous Access on passe d'un enregistrement à l'autre.

    Par comparaison entre une table Access et une feuille Excel :

    Enregistrement = ligne
    Champ = colonne

    Starec

  7. #7
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    re,

    et si je veux comparer un enregistrement avec un autre mais en décalant d'un champ (colonne)
    par ex : ligne 1 et colonne 2 avec ligne 2 et colonne 3 (ou 4)
    j'utilise move avec des arguments c'est ça pour décaler dans mes colonnes

    stefan

  8. #8
    Invité
    Invité(e)
    Par défaut
    Re

    Non,

    Lis bien le tuto DAO et notamment sur les Recordset, prenons un exemple:

    1 - Tu crées une requête Select qui reprends tous les champs de ta table
    2 - Cette requête tu l'appliques à un recordset
    3 - Avec MoveNext et MovePrevious tu navigues d'un enregistrement à l'autre (c'est comme si tu passais à la ligne suivante dans un fichier Excel)
    4 - un recordset à aussi une propriété Field, (comme une table), avec field (tu peux l'appeler par le nom du champ - voir le tuto) tu navigues dans les champs de ton enregistrement.

    Par exemple : prenons une table avec nom et prénom

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT Nom, Prenom FROM latable ORDER BY Prenom
    tu l'affectes à un recordset rst (voir tuto)

    ensuite si tu veux comparer un Nom du premier enregistrement, avec le prénom du suivant, tu stockes le nom dans une variable
    ensuite tu passes à l'enregistrement suivant
    et là tu compares cette variable avec le Prénom du champ suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If rst("Prenom") = strNom then 
    ....
    End If
    Je pense que cet exemple t'aidera à mieux comprendre.

    La lecture du tuto est impératif, tu as toutes les méthodes d'expliquées.

    Starec

  9. #9
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    re,

    merci Starec, je vais essayer de me débrouiller avec ce que tu m'as dit et le tuto, je pense arriver à quelqques choses.
    De toute façon, si j'ai un soucis, je posterai.
    Merci en tout cas

    Stefan

  10. #10
    Invité
    Invité(e)
    Par défaut
    Re

    En complément, comme je l'ai écris, il faut que tu saches exactement comment sont ordonnées tes enregistrements dans ton SQL (un ordre qui doit être le même que ta table) pour pouvoir faire des comparaisons cohérentes, car on n'est jamais sûr qu'une requête SELECT prendra les données dans le même ordre que la table.

    Starec

Discussions similaires

  1. [AC-2003] Problème de test sur plusieurs champs dans une table
    Par Cavart dans le forum Access
    Réponses: 1
    Dernier message: 23/11/2011, 14h51
  2. lire champs dans une table access
    Par bouanane20 dans le forum VB.NET
    Réponses: 1
    Dernier message: 22/08/2007, 08h06
  3. Réponses: 5
    Dernier message: 27/12/2006, 16h56
  4. Effacer plusieurs champs dans une table
    Par kurkaine dans le forum C++Builder
    Réponses: 4
    Dernier message: 02/08/2006, 08h22
  5. Ajouter un champs dans une table (Access 2000)
    Par Didier100 dans le forum Bases de données
    Réponses: 2
    Dernier message: 12/10/2004, 13h02

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