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 :

Tableau croisé dynamique Champs texte et numérique


Sujet :

Requêtes et SQL.

  1. #1
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 97
    Points : 59
    Points
    59
    Par défaut Tableau croisé dynamique Champs texte et numérique
    Bonjour à toutes et tous,

    Après avoir transpirer sur mon clavier et bu de nombreux cafés je n'ai toujours pas su résoudre cette enigme. Je m'explique.

    J'ai face à moi un tableau croisé dynamique qui présente pour un certain nombre de personnes et cela sur une période, le nombre d'heures travaillés par jour.
    Jusque là pas de problème. Hors pour certains jours, certaines personnes sont absents pour cause de RTT ou autres raisons.

    Donc j'ai un tableau qui manipule donc à la fois du numérique et du texte.

    Comme c'est un tableau croisé dynamique il est alors possible d'avoir le nombre total d'heures travaillées en ligne et en colonne. Et là problème car access ne veut pas additionner du numérique et du texte.
    En fait quand je fait somme (total générale en bout de tableau) il convertit mon champs texte en "Compte champstexte" ce qui donne CompteChamps texte" = 1 et dans le calcul finale cela est faussé.

    Exemple:

    Avant d'appliquer un total :
    Lundi 01 Mardi 02 Mercredi 03 Jeudi 04
    Zorro 7,5 RTT RTT 7,5
    Batman 7,5 7,5 7,5 7,5

    Apres application du total
    Lundi 01 Mardi 02 Mercredi 03 Jeudi 04 Total
    Zorro 7,5 RTT RTT 7,5 17 h (7,5+1+1+7,5)
    Batman 7,5 7,5 7,5 7,5 30h

    Total 15h 8,5h 8,5h 15h

    Comme vous pouvez le voir il a pris le RTT comme un 1 en appliquant un Compte([monchamps]).
    Excel ne pose aucun soucis pour cela en ne prenant pas en compte ce RTT mais mon objectif de de faire un outil qui utilise un logiciel unique.

    Ma question est donc "Comment faire en sorte que RTT soit considéré comme 0 et non 1" (cela peut etre RTT ou Repos Hebdo..etc"

    Votre aide me serait d'une grande utilité et me permettra de moins participer au chiffres d'affaires de mon distributeur de café Selecta.

    Merci d'avance,

  2. #2
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 97
    Points : 59
    Points
    59
    Par défaut
    Je suis peut être pas clair. En gros la question est de savoir si Access peut faire le total d'une ligne comportant une ou des valeurs texte ces dernières devront alors être considéré comme une valeur numérique égale à 0 pour le calcul mais à l'écran ce n'est pas 0 qui doit s'afficher mais RTT ou Repos Hebdo...Etc

    Merci d'avance pour vos réponses.

  3. #3
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Points : 4 297
    Points
    4 297
    Par défaut
    access refuse à juste titre d'additionner des carottes et des navets
    si tu veux que 5+rtt=5 il faut le dire explicitement par une requête

    select sum(vraifaux(monchamp="rtt",0,cint(monchamp)) et enfourner la requête dans le tcd

    deuxiéme solution modifier la table

    employé jour statut temps
    x jj/mm travail 8
    y jj/mm rtt 8
    v jj/mm congés 4
    v jj/mm travail 4
    z jj/mm maladie 8
    r jj/mm formation 8

    c'est nettement plus puissant et évolutif, et cela permet de gérer des totalisations sur toutes les situations

    tu peux gérer tout ton personnel avec une seule table

  4. #4
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 97
    Points : 59
    Points
    59
    Par défaut
    Merci de tes réponses.

    *** J'ai d'abord appliqué ta deuxième solution en creant juste pour le test une table avec comme propriété:
    - employé
    - date
    - htotal
    - statut

    Cette table étant constituée j'ai créer un tableau croisé dynamique (formulaire en vue TCD). Tout est nikel jusqu'au moment où au bout de mon tableau j'ajoute les propriétés htotal (pour faire la somme total en ligne).
    En effet les colonnes statut dans mon tableau se transforment en "CompteStatut" et le RTT se transforme en 1.

    *** Pour la première solution le problème c'est que à l'écran il n'y a pas RTT qui s'affiche mais 0. Et ce 0 peut non seulement être du RTT mais également du Formation, Congés...etc. Ce tableau doit être imprimé et lu. Il est donc interessant de pouvoir voir ces RTT, congés...



    La question est de savoir si ces Tableaux croisés Dynamiques peuvent se dire "Quand je vois du texte, je considère sa comme 0 et je fais la somme mais je laisse le texte affiché" ??

    Merci encore à tous pour vos aides !

  5. #5
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Points : 4 297
    Points
    4 297
    Par défaut
    seconde méthode
    faire SELECT CDbl(IIf(IsNumeric([temps]),[temps],0)) AS tw FROM matable;
    première mettre le champ statut en données page

  6. #6
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 97
    Points : 59
    Points
    59
    Par défaut
    Merci Random de m'aider.

    Le résultat est pas mal du tout cependant c'est à un petit doigt de ce qu'il faudrait. Je joins un .doc avec un imprim écran te montrant le résultat auquel j'arrive.

    La ligne qui est encadrée en rouge montre exactement ce que j'aimerais avoir pour toutes les lignes. Seulement en cliquant sur le " - " tout est OK sauf que le RTT disparait au profit d'un vide.

    Je pourrais envoyer le .mdb si tu veux ?

    Merci beaucoup Random de m'aider!! Sa vaut un thé à la menthe avec des petits gateaux.
    Fichiers attachés Fichiers attachés
    • Type de fichier : doc tcd.doc (69,0 Ko, 124 affichages)

  7. #7
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 97
    Points : 59
    Points
    59
    Par défaut
    Apparement la ligne rouge n'est pas passée. En fait c'est la ligne face au nom Ayad avec le "+" et le "-".

  8. #8
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Points : 4 297
    Points
    4 297
    Par défaut
    tu n'as pas mis le statut en champ de page
    mais en champ de colonne ton état sera plus mieux avec un champ de page

    ps merci pour la collation

  9. #9
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 97
    Points : 59
    Points
    59
    Par défaut
    Chlamps de page?

    Petite indication. Je creer ma table, puis ma requête puis je visionne ma requête en selectionnant Tableau Croisé Dynamique. Donc pas ce n'est pas un état que je gère même s'il est destiné à être imprimé. Mais sa tu le savais déjà.

    En champs de page tu veux dire qu'au lieu de faire glisser le propriété "Statut" dans la zone de donnée je le fais glisser à droite du champ "Date" dans mon tableau. C'est bien sa ?

    De rien pour la collation par contre pour le thé faudra prévoir une enveloppe imperméable

  10. #10
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Points : 4 297
    Points
    4 297
    Par défaut
    les tcd ont quatre type de champ

    champ de page
    champ de colonne
    champ de ligne
    valeur

    c'est dans disposition regarde mieux

  11. #11
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 97
    Points : 59
    Points
    59
    Par défaut
    Je travaille sur Access 2003 et dans la liste modifiable situé dans la fenetre permettant de selectionner les champs voulus il y'a 5 possibilité:

    Ajouter à Zone de détail
    Zone de colonne
    Zone de filtre
    Zone de données
    Données de détails

    Je suis chaud ou froid ?

  12. #12
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Points : 4 297
    Points
    4 297
    Par défaut
    champ de page=zone de filtre ±±±

  13. #13
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 97
    Points : 59
    Points
    59
    Par défaut
    C'est bien se que je me disait. Le probleme c'est qu'il applique une colonne dédiée à RTT, formation ou congés payés. Il ne fait pas une seule et meme colonne qui s'appellerait "Statut" dans laquelle on aurait du RTT, du Congés payé ..etc et qui planterais pas le total au final.

    C'est pas dans ma nature mais je jete bob l'éponge en espérant trouver une alternative.

    En tout cas Random tu m'as donner de bonne piste que je vais encore creuser. Je vais encore y passer mon week end juste pour un TCD. C'est pas quand on aime on compte pas.

    Merci encore en attendant de te renvoyer l'ascenseur.

  14. #14
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Points : 4 297
    Points
    4 297
    Par défaut
    il faut double clicker sur la zone de filtrage et filter les mauvaises réponses

  15. #15
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 97
    Points : 59
    Points
    59
    Par défaut
    Bah j'ai trouver une solution en me passant d'un tableau croisé dynamique. J'ai tout simplement eux recours à des requetes imbriquées. Pour donner la forme d'un tableau à double entrée, j'ai créer des colonnes par l'intermédiaire d'une requête comme celà : Total Lundi : vraifaux([jourdate]="Lundi",[nbrtotal];"0")

    Et celà pour tous les jours de la semaine en forçant l'utilisateur à générer des tableaux pour une période de 7 jours au maximum à la fois car la taille d'un feuille A4 me permet de manipuler uniquement 7 jours en même temps.

    C'est le mieux que j'ai pu faire.

    Merci encore!!!

Discussions similaires

  1. Réponses: 16
    Dernier message: 21/02/2017, 20h48
  2. Tableau croisé dynamique : répéter les textes
    Par damsmut dans le forum Excel
    Réponses: 8
    Dernier message: 04/09/2013, 14h38
  3. [A-02] Insérer un champ calculé dans un tableau croisé dynamique
    Par atoffoli75 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 23/11/2008, 08h55
  4. Tableau croisé dynamique + champs calculés
    Par xave dans le forum Access
    Réponses: 4
    Dernier message: 22/12/2006, 10h20
  5. multiselection ds champ de page d un tableau croisé dynamique
    Par hiline6 dans le forum Général VBA
    Réponses: 18
    Dernier message: 30/11/2006, 23h19

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