Colonne conditionnel dans Query - est-ce possible ?

domduf33

XLDnaute Nouveau
Bonjour à toutes et à tous.:)

J'ai un petit souci de colonne avec query.
J'ai fait une requête externe qui va chercher des données dans une logiciel "BIDUL" selon des critères de date et d'année. Ces critères sont le contenu des cellules vertes de ma feuille Excel et les résultats de ma requête vont de la colonne A à la colonne L.
En colonne M, j'ai fait un champ conditionnel incrémenté verticalement qui dit que :
1 - si ma cellule a6 est vide alors vide, sinon, si ma cellule d6="SOCI", alors - g6,sinon g6. voir fichier joint

Jusque là, pas de souci.
Ce qui m'ennui, c'est qu'à chaque fois que j'effectue une actualisation de ma requête, je suis obligé de vérifier que ma formule dans M6 est ok et de refaire une incrémentation jusqu'à la fin de mon fichier. Or, j'aimerai que cette manipulation de soit pas faite et que tout soit automatisé sans que l'on ai à intervenir sauf pour le contenue des cellules vertes.

D'ou ma question :
Comme je suis passé par Microsoft query pour faire ma requête, est-il possible dans query d'ajouter une colonne conditionnel afin que query renvoie les données automatiquement ? Voir image jointe fichier compressé.

Je précise que je travaille chez moi avec vista et office 2007 mais qu'en réalité ce fichier est pour mon travail et donc Excel 2003 et Windows xp.
Je précise également que je n'y connais rien en VBA et que je souhaiterai, dans la mesure du possible apprendre à faire cela sans passer par le VBA.
Si quelqu'un à une suggestion ?
Par avance merci à tous.
Cordialement
Dominique
 

Pièces jointes

  • fichier exemple query.xls
    31.5 KB · Affichages: 89
  • query.zip
    47.9 KB · Affichages: 38

tototiti2008

XLDnaute Barbatruc
Re : Colonne conditionnel dans Query - est-ce possible ?

Bonjour domduf,

Si j'ai bien compris, tu souhaites que la recopie de ta formule se fasse automatiquement en colonne M en fonction du nombre de lignes de ta requête

Pour Excel 2003 :

à priori, place toi dans une cellule du résultat de ta requête
Dans la barre d'outil Données externes, clique sur le 2ème bouton (Propriétés de la plage de données)
La dernière option des propriétés se nomme "recopier les formules dans les cellules voisines", il faut la cocher.
 

domduf33

XLDnaute Nouveau
Re : Colonne conditionnel dans Query - est-ce possible ?

Bonjour tototiti.

Merci pour ta réponse. Effectivement, je pourrai utiliser cette option mais en fait, non, je ne souhaite pas que la recopie de la cellule se fasse automatiquement. Je voudrais que la colonne M (avec le même type de condition) fasse partie intégrante de la requête ce qui n'est pas le cas actuellement.

Actuellement, la colonne M est une colonne en dehors de la requête qui me permet de garder le montant de la colonne ALTHOMEVAL si TYPEDOC = "SOCI" ou à mettre le signe arithmétique contraire si TYPEDOC est différent de SOCI.
Je cherche à pouvoir créer dans query une colonne de ce type mais dont la condition se ferait dans query et non dans une colonne à part dans le fichier Excel.

Je me rabattrai sur ta solutions si effectivement, il n'est pas possible, sans VBA, de créer cette colonne dans query

Peut-être une autre suggestion ?
par avance merci
Cordialement
Dominique
 

tototiti2008

XLDnaute Barbatruc
Re : Colonne conditionnel dans Query - est-ce possible ?

Re,

Je crois que la seule suggestion possible est de modifier le SQL

Si tu vas dans Microsoft Query, tu devrais avoir un bouton SQL dans les barres d'outils

Le SQL existant devrait être un truc du genre

Code:
SELECT MaTable.Champ1, MaTable.Champ2, MaTable.ALTHOMEVAL, MaTable.Typedoc FROM `C:\Base`.MaTable Matable

à modifier comme ça :

Code:
SELECT MaTable.Champ1, MaTable.Champ2, MaTable.ALTHOMEVAL, MaTable.Typedoc, iif(MaTable.Typedoc='SOCI',MaTable.ALTHOMEVAL,-MaTable.ALTHOMEVAL) AS 'NouveauChamp' FROM `C:\Base`.MaTable Matable
 

domduf33

XLDnaute Nouveau
Re : Colonne conditionnel dans Query - est-ce possible ?

Re.

Merci. Je ne connaissais absolument pas la fonction iif. Le sql je ne connais que très peu. je vais regarder, dès demain, comment je peux effectivement mettre ton explication en pratique. En fait, j'avais fais un essai avec la fonction vraifaux que je connais et que je me sers dans access mais dans query rien ne fonctionnait.
j'essaie dès demain à mon travail et je te dis si je suis arrivé à quelque chose.
Encore merci
Cordialement
Dominique
 

tototiti2008

XLDnaute Barbatruc
Re : Colonne conditionnel dans Query - est-ce possible ?

Bonjour domduf,

Oui, le SQL attend les opérateurs et fonctions en anglais ("vraifaux" en français c'est "iif" en anglais), dans l'interface de Query il arrive qu'il comprenne les 2 mais comme l'anglais passe aussi, je crois, et que je suis sûr que ça passe aussi bien en anglais dans l'interface d'Access, je pense que ce n'est pas idiot de taper en anglais

Encore plus si on veux utiliser des fonctions Access aux noms tordus (beaucoup plus facile de taper "Mid" que "ExtracChaîne", ou "Now" que "Maintenant")
 

domduf33

XLDnaute Nouveau
Re : Colonne conditionnel dans Query - est-ce possible ?

Bonjour tototiti.

Ca marche....:)
Ta fonction iif fonctionne très bien. C'est génial.
Je vais faire des recherches sur le net pour apprendre à utiliser de manière plus poussée le SQL car, comme je travaille beaucoup avec des requêtes, je me rend compte que, rien qu'avec iif, je vais me simplifie énormément la tache et je me dis qu'il y a certainement d'autre "truc" à connaitre.
Quant à ta suggestion de taper en anglais, je pense effectivement que tu as raison. A retenir !
En tout cas, merci pour tout.
a+
Dominique
 

domduf33

XLDnaute Nouveau
Re : Colonne conditionnel dans Query - est-ce possible ? - Message erreur

Bonjour à tous.

En fait, j'ai crié victoire trop rapidement.:(

J'ai fait, hier, un essai à mon travail mais à partir d'une requete que je venais de créer issu d'un fichier excel et la fonction iif marché très bien.:)

Hélas, aujourd'hui, je viens de faire l'essai avec une requête issu d'une logiciel différent de excel (DREAM) et j'ai un message d'erreur.:confused:

Mon sql se présente comme ceci :

SELECT D_DETAILS.DOCTYPE, D_DETAILS.DOCNUM, D_DETAILS.NOMINAL, D_DETAILS.DESCRIPTION, D_DETAILS.USERFIELD3, D_DETAILS.DOCDATE, D_DETAILS.USERFIELD1, D_DETAILS.USERFIELD2, D_DETAILS.YEARCODE, D_DETAILS.PERIOD, D_DETAILS.ALTHOMEVAL, iif(D_DETAILS.USERFIELD2='PC',-D_DETAILS.ALTHOMEVAL,D_DETAILS.ALTHOMEVAL) as 'TOTAL'
FROM SOCIE.SQSDBA.D_DETAILS D_DETAILSWHERE (D_DETAILS.DOCTYPE='ALOC') AND (D_DETAILS.YEARCODE=?) AND (D_DETAILS.PERIOD=?)
ORDER BY D_DETAILS.DOCNUM


et le message d'erreur est le suivant :
Incorrect syntax near ‘=’
Statement not could prepared

Le sql fonctionne très bien si la partie iff (en gras) n'existe pas mais plante si je l'ajoute.

j'ai fait une recherche sur le net pour essayer de comprendre mais j'ai fait choux blanc.

Quelqu'un aurait-il une suggestion ?
Par avance merci
Cordialement
Dominique
 

munity

XLDnaute Junior
Re : Colonne conditionnel dans Query - est-ce possible ?

coucou et surtout meilleurs voeux
j'ai exactement le meme problème que toi
je récupére des tables via un sql server
lorsque je crée une requête sans Iif c'est OK
dès que j'ajoute l'instruction de test
j'ai exactement le meme message que toi
as tu trouvé la solution à ton problème
je ne vois absolument ce qui bloque puisque dans acces ca marcher très bien
Code:
Sum(iif(T_PLANNING_CLIENT.[RDV pris]=2,0,T_PLANNING_CLIENT.[RDV pris])) AS [Nombre de volontaire recruté]
le '=' est le problème uniquement dans le iif car pour d'autres champs ou je l'utilise aucun souci
Code:
WHERE T_PLANNING_CLIENT.Visites = 1
y aurait il une quote à ajouter (bien que je l'ai fait mais sans résultat)

merci d'avance à toutes solutions

munity
 

domduf33

XLDnaute Nouveau
Re : Colonne conditionnel dans Query - est-ce possible ?

Bonjour Munity

Helas, je n'ai pas réussi à trouver une solution à mon problème directement dans Query.:(
J'ai du me rabattre sur le moyen suivant de Tototiti2008 en demandant automatiquement la recopie des formules dans les cellules voisines directement dans le fichier excel et de vérifier après chaque actualisation que la recopie dans ma colonne concernée est correcte.

Désolé de ne pouvoir t'aider.
a+
Domi
 

Discussions similaires

Statistiques des forums

Discussions
312 234
Messages
2 086 470
Membres
103 226
dernier inscrit
smail12