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

Requêtes et SQL. Discussion :

Ajouter champ "numeroauto" dans requete selection [AC-2007]


Sujet :

Requêtes et SQL.

  1. #1
    Membre régulier
    Inscrit en
    Septembre 2009
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 126
    Points : 73
    Points
    73
    Par défaut Ajouter champ "numeroauto" dans requete selection
    Bonjour,

    Après recherches approfondies sur le net, j'ai trouvé pas mal de sujet proche du miens mais jamais de réponses claires. J'en déduis qu'il n'y en a peut être pas, mais je tente ma chance ici car c'est de loin le meilleur endroit pour ces sujets !

    Je souhaite donc ajouter un champ type "numéroauto" dans ma requête sélection, mais ! hic ! cette requête est basée sur une table liée à une feuille excel, qui ne comporte aucun champ unique sans doublons.

    Je ne peut donc pas ajouter de champ dans la table, et je n'ai aucun champ sur lequel me baser pour faire un dcount....

    Je suis a court d'idées! Est-ce que quelqu'un aurait une solution m'évitant d'avoir a passer par des tables temporaires, car la feuille excel est assez chargée.. ??

    Par avance merci pour votre aide.

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 349
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 349
    Points : 23 813
    Points
    23 813
    Par défaut
    Je vois les soluions :

    • Importer tes données Excel dans une table Access qui a un champ AutoNum et travailer à partir de là.
    • Ajouter une colonne dans ta feuille Excel avec formule =Row() qui va afficher le numéro de la ligne courrante
    • Compter les lignes dans ta requête de sélection. Évidement si tu ne sélectionne pas toutes les lignes cela peut ne pas avoir de sens.

  3. #3
    Membre régulier
    Inscrit en
    Septembre 2009
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 126
    Points : 73
    Points
    73
    Par défaut
    Merci pour ta réponse,

    Je ne peux pas modifier la feuille excel ni l'importer dans une table car elle est régulièrement modifiée par des utilisateurs, cela serait trop long.

    Peux tu détailler la 3eme possibilité ?
    car c'est a peut près ce que je veux faire, compter les lignes j'y arrive mais faire en sorte qu'il m'affiche un numéro unique a chaque ligne dans la requête la je bloque.
    J'ai fait quelque choses qui ressemble à :
    NumAut: CEnt(CpteDom("*";"MA TABLE";"[Champ1] < '" & [Champ1] & "' AND [Champ2] < '" & [Champ2] & "' etc..."))
    car j'ai réussi a trouver un moyen en combinant 5 champs d'avoir un enregistrement unique identifiable.
    Malheureusement cela ne fonctionne pas tout a fait, j'ai encore quelques [NumAut] qui sont en doublons...

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 349
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 349
    Points : 23 813
    Points
    23 813
    Par défaut
    J'ai fait quelque choses qui ressemble à :
    NumAut: CEnt(CpteDom("*";"MA TABLE";"[Champ1] < '" & [Champ1] & "' AND [Champ2] < '" & [Champ2] & "' etc..."))
    car j'ai réussi a trouver un moyen en combinant 5 champs d'avoir un enregistrement unique identifiable.
    C'est ce à quoi je pensai.

    Une autre idée qui 'est venu c'est de lire ta feuille excel ligne par ligne avec du code VBA. Dans ces cas là tu sauras où tu est dans la feuille et ton compteur de ligne va te donner la clef. Ce sera peut-être un peu moins rapide qu'une table liée mais cela devrait résoudre ton problème.

    Enfin, pourquoi ne pas remplacer ta feuille excel par une base Access ?

    A+

  5. #5
    Membre régulier
    Inscrit en
    Septembre 2009
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 126
    Points : 73
    Points
    73
    Par défaut
    Tout simplement parce que ce n'est pas "ma" feuille excel et qu'elle est utilisée par plusieurs personne presque toute la journée... Je travail déja sur une copie que je met a jour manuellement lorsque nécessaire. Elle contient pas mal de colonnes et devrait en effet être sous access, mais bon, c'est un autre sujet ...

    Saurais tu par hasard dans le code que je t'ai mis, pourquoi cela ne fonctionne pas complétement ?
    sur 450 lignes environs j'ai 67 doublons et je ne comprend vraiment pas pourquoi. J'ai du mal a saisir d'un point de vue séquentielle ce qui ce passe ...

  6. #6
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 349
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 349
    Points : 23 813
    Points
    23 813
    Par défaut
    Tout simplement parce que ce n'est pas "ma" feuille excel et qu'elle est utilisée par plusieurs personne presque toute la journée...
    Désolé de ne pas avoir été clair, je suggérai de remplacer la feuille Excel par une BD Access pour ces personnes.

    Pour ton code, tu l'as dit toi-même tu n'as pas de clef unique donc même la concaténation de champs ne permet pas l'unicité. Peut-être peux-tu ajouter plus de champs. Dans un cas j'ai utiliser TOUS les champs de ma table pour espéré avoir une clef unique et il y a avait encore une chance infime qu'elle ne soit pas unique.

    La seule vraie solution que je vois c'est de travailler ligne par ligne en code VBA mais probablement que cela va bloquer les autres hors de la feuille.

    Si tu as besoin d'aide pour cela demande.

    A+

  7. #7
    Membre régulier
    Inscrit en
    Septembre 2009
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 126
    Points : 73
    Points
    73
    Par défaut
    Ça y est j'ai enfin réussi !!

    En fait mon code :
    CEnt(CpteDom("*";"MA TABLE";"[Champ1] < '" & [Champ1] & "' AND [Champ2] < '" & [Champ2] & "' etc..."))
    n'était pas tout a fait correct, il fallait faire :
    CEnt(CpteDom("*";"MA TABLE";"[Champ1] & [Champ2] etc. < '" & [Champ1] & [Champ2] & etc. & "'"))
    ce qui revient a créer un champ concaténé qui devient la clé unique... tout bête mais fallait y penser. D'ailleurs j'ai du mal a comprendre pourquoi le 1er code ne fonctionne pas pour moi cela revient au même....

    En tout cas merci pour ton aide !
    A+

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 08/02/2012, 15h49
  2. Champ recherche avec resultat dans balise select
    Par Rawone dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 07/11/2007, 09h19
  3. [SQL] Convertir un champ INT en CHAR dans un SELECT ?
    Par webtheque dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 17/03/2005, 14h45

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