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

Macros et VBA Excel Discussion :

[SQL EXCEL] Exclusion de valeurs via la clause WHERE


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2006
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 217
    Par défaut [SQL EXCEL] Exclusion de valeurs via la clause WHERE
    Bonjour,

    Je cherche a faire une requête sous Excel 2003. Elle rejette les champs qui commence par plusieurs '0'.
    Je voudrais aussi qu'elle rejette les champs qui contiennent 1 ou plusieurs lettres. Je ne sais pas comment m'y prendre. Avez vous des idées ?

    Pour le moment voici ce que j'ai fait

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT matable.`#23240MANM`
    FROM `C:\Documents and Settings\windows\Mes documents\Classeur1`.matable matable
    WHERE (matable.`#23240MANM`<'9999' And matable.`#23240MANM` Not Like '00000%' And matable.`#23240MANM` Not Like '000000%')
    ORDER BY matable.`#23240MANM`

    Merci!

    Aussi, est ce possible de ne garder que les champs contenant moins de 5 caractères ?

  2. #2
    Membre Expert
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 875
    Par défaut
    je ne sus pas expert en sql mais ce que tu souhaites faire est d'introduire un or dans le where

    WHERE ((condition1) OR (condition2) OR (...))

    Condition1 est celle que tu as écrite. Pour tes autres conditions il te faut fire appel aux fonctions native de sql (left, right, instr), attention cependant je crois que toutes ne sont pas implémentées en SQL Excel.

    En tout cas tu obtiendras sûrement plus de réponses sur le forum SQL.

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2006
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 217
    Par défaut SQL et Excel
    J'essaie de faire une requête sous Excel qui me permettrais de ne prendre que les nombres de 1 à 9999, qui ne commence par par 0 (exemple:000005658), et qui ne contient pas de point.

    Voici le code que j'ai fait mais cela ne fonctionne pas, il me sort des nombres comme 1061575 !

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT matable.`#23240MANM`
    FROM `C:\Documents and Settings\windows\Mes documents\Classeur1`.matable matable
    WHERE (matable.`#23240MANM` Not Like '0%' And matable.`#23240MANM`<'9999' And matable.`#23240MANM` Not Like '%.%')
    ORDER BY matable.`#23240MANM`


    Merci !

  4. #4
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 815
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 815
    Billets dans le blog
    14
    Par défaut
    Comme il y a des "nombres" commençant par zéro, je suppose qu'en fait ce sont des chaînes de caractères ne contenant que des chiffres.
    Et en ordre alphabétique, '1061575' est bel et bien inférieur à '9999'.
    Le résultat est donc normal.

    Je ne sais pas ce qu'il est possible de faire en SQL sous Excel mais pour cette comparaison au nombre 9999, il faut convertir la colonne en nombre.

    En SQL normalisé, ça donnerait quelque chose de ce genre :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT matable.`#23240MANM`
    FROM `C:\Documents and Settings\windows\Mes documents\Classeur1`.matable matable
    WHERE matable.`#23240MANM` NOT LIKE '0%' 
      AND CAST(matable.`#23240MANM` AS INTEGER) < 9999 
      AND matable.`#23240MANM` NOT LIKE '%.%'
    ORDER BY CAST(matable.`#23240MANM` AS INTEGER)
    J'ai aussi ajouté l'instruction de transformation dans le ORDER BY pour avoir un ordre numérique (1, 2 ... 10...) et non pas alphabétique (1, 10, 2...).
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2006
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 217
    Par défaut
    Ah ok, j'ai compris la "philosophie" ...

    Il me dit "Erreur de syntaxe", mais Excel a un SQL un peu bizarre parfois ...
    Je ne sais pas si CAST il comprend

    Erreur de syntaxe, opérateur absent dans le where ...

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Inspire-toi de ceci, en sachant que % remplace plusieurs caractères et que _ remplace un seul caractère

    Dans le like, tu auras donc une suite de quatre caractères _ après quoi tu pourras tester tes bornes


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      Set rs = cn.Execute("SELECT `Feuil1$`.Donnees " & _
        "FROM `d:\données\sql.xlsx`.`Feuil1$` `Feuil1$`" & _
        "WHERE (`Feuil1$`.Donnees like '____') " & _
        "and (`Feuil1$`.Donnees >= '1000') and (`Feuil1$`.Donnees <= '9999')")
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  7. #7
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2006
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 217
    Par défaut
    Merci pour le tuyau !

    j'ai fais cela

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    SELECT matable.`#23240MANM`
    FROM `C:\Documents and Settings\windows\Mes documents\Classeur1`.matable matable
    WHERE (matable.`#23240MANM` Not Like '000_' And matable.`#23240MANM` Not Like '00__' And 
    matable.`#23240MANM` Not Like '0___' And 
    matable.`#23240MANM` Like '____' And 
    matable.`#23240MANM` Like '___' And 
    matable.`#23240MANM` Like '__' And 
    matable.`#23240MANM` Like '_')
    ORDER BY matable.`#23240MANM`
    Car je veux seulement les nombre de 1 à 9999, mais qui ne commence pas par 0. Par exemple, j'ai des nombres comme 0032 que je ne veux pas.

    Mais avec ce code il ne sort plus rien !

Discussions similaires

  1. Exclure une valeur sans la clause WHERE?
    Par BIOoOAG dans le forum Langage SQL
    Réponses: 5
    Dernier message: 13/05/2014, 10h06
  2. Réponses: 2
    Dernier message: 01/05/2010, 20h38
  3. [SQL SERVER 2005] IMPORT DONNEES VIA EXCEL
    Par AllyKo dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 03/04/2008, 22h19
  4. [PL/SQL] curseurs et valeur Null dans la clause WHere
    Par etoileDesNeiges dans le forum Oracle
    Réponses: 13
    Dernier message: 11/12/2006, 16h58
  5. Réponses: 3
    Dernier message: 24/05/2005, 08h19

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