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

IHM Discussion :

[Table]Rassembler les données de deux colonnes d'une même table : autre cas


Sujet :

IHM

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 126
    Points : 53
    Points
    53
    Par défaut [Table]Rassembler les données de deux colonnes d'une même table : autre cas
    Bonjour,
    Ce message fait suite à un problème que j'ai déjà rencontré mais qui a été résolu.

    Cependant je me retrouve dans un cas similaire mais qui toutefois comporte une différence de taille.

    Pour comprendre je vous invite à suivre mon précédent post ici.

    Vous pouvez constater que le problème a été résolu par concaténation.
    La différence actuelle est que parfois des données se retrouvent sur la même ligne, donc avec un même identifiant, et alors je ne peux pas concaténer ces infos pour les mettre dans une nouvelle colonne. Je voudrais qu'elles soient les unes en dessous des autres.

    Je vous mets en fichier joint ma table actuelle et le résultat souhaité pour que vous compreniez bien le problème. Merci d'avance pour votre aide,

    Ceuce
    Fichiers attachés Fichiers attachés

  2. #2
    Membre éprouvé Avatar de jean-paul lepetit
    Inscrit en
    Février 2005
    Messages
    842
    Détails du profil
    Informations personnelles :
    Âge : 68

    Informations forums :
    Inscription : Février 2005
    Messages : 842
    Points : 919
    Points
    919
    Par défaut
    Salut,

    Essaies quelque chose comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    Public Function TestCompil()
    Dim MaBd As Database
    Dim Rst As Recordset
    Dim RstNew As Recordset
    Dim Var_Id As Integer, Var_Histo As Variant, Var_Ecolo As Variant
    Set MaBd = CurrentDb
    Set Rst = MaBd.OpenRecordset("HistoEco", dbOpenDynaset)
    Set RstNew = MaBd.OpenRecordset("Tbl_New", dbOpenDynaset)
    With Rst
        .MoveFirst
        While Not .EOF
            Var_Id = !Id
            Var_Histo = !HISTORIQUE
            Var_Ecolo = !ECOLOGIQUE
            If Not IsNull(Var_Histo) Then
                With RstNew
                    .AddNew
                    !Id = Var_Id
                    !New_Col = Var_Histo
                    .Update
                End With
            End If
            If Not IsNull(Var_Ecolo) Then
                With RstNew
                    .AddNew
                    !Id = Var_Id
                    !New_Col = Var_Ecolo
                    .Update
                End With
            End If
                .MoveNext
        Wend
    End With
    End Function
    la table HistoEco étant ta table de départ, et la table Tbl_New la table résultat avec 2 champs : Id et New_Col

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 126
    Points : 53
    Points
    53
    Par défaut
    Merci pour le code, mais ça ne fonctionne pas. Il y a une erreur "incompatibilité de type" sur la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set Rst = MaBd.OpenRecordset("HistoEco", dbOpenDynaset)
    Mais de toutes façons c'est un problème que j'aurais besoin de résoudre en passant par une requête si c'était possible. Alors peut être en effet avoir une fonction de compilation, mais qui puisse s'intégrer dans une requête.
    Je vais continuer à chercher... Mais vos idées sont toutes les bienvenues.

    Ceuce

  4. #4
    Membre éprouvé Avatar de jean-paul lepetit
    Inscrit en
    Février 2005
    Messages
    842
    Détails du profil
    Informations personnelles :
    Âge : 68

    Informations forums :
    Inscription : Février 2005
    Messages : 842
    Points : 919
    Points
    919
    Par défaut
    Dans VBA, as tu la référence a DAO 3.5 ou 3.6 ?

  5. #5
    Membre éprouvé Avatar de jean-paul lepetit
    Inscrit en
    Février 2005
    Messages
    842
    Détails du profil
    Informations personnelles :
    Âge : 68

    Informations forums :
    Inscription : Février 2005
    Messages : 842
    Points : 919
    Points
    919
    Par défaut
    tu peux le faire aussi avec 2 requêtes ajout
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    INSERT INTO Tbl_New ( Id, New_Col )
    SELECT HistoEco.id, HistoEco.HISTORIQUE
    FROM HistoEco
    WHERE (((HistoEco.HISTORIQUE) Is Not Null));
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    INSERT INTO Tbl_New ( Id, New_Col )
    SELECT HistoEco.id, HistoEco.ECOLOGIQUE
    FROM HistoEco
    WHERE (((HistoEco.ECOLOGIQUE) Is Not Null));

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 126
    Points : 53
    Points
    53
    Par défaut
    Non, je n'ai pas de référence à DAO dans VBA...

    Pour les requêtes ajout j'y ai bien pensé mais ça ne m'arrange pas vraiment car il faut exécuter 2 requêtes et le résultat va se mettre dans une table.
    En fait, il faudrait que le résultat soit stocké dans une requête, c'est pour ça que tout de suite ça me semble plus compliqué... Mais comme tout est possible, il y a surement un moyen, non?

    Ceuce

  7. #7
    Membre éprouvé Avatar de jean-paul lepetit
    Inscrit en
    Février 2005
    Messages
    842
    Détails du profil
    Informations personnelles :
    Âge : 68

    Informations forums :
    Inscription : Février 2005
    Messages : 842
    Points : 919
    Points
    919
    Par défaut
    Avec une requête UNION
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT HistoEco.id, HistoEco.HISTORIQUE
    FROM HistoEco
    WHERE (((HistoEco.HISTORIQUE) Is Not Null)) UNION SELECT HistoEco.id, HistoEco.ECOLOGIQUE
    FROM HistoEco
    WHERE (((HistoEco.ECOLOGIQUE) Is Not Null));

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 126
    Points : 53
    Points
    53
    Par défaut
    Merci beaucoup Jean-Paul, en effet cette requête là marche à partir de la table HistoEco.
    Maintenant mon problème c'est qu'il faudrait faire la même chose mais à partir d'une requête. C'est à dire que la table que je vous ai donné c'est en fait le résultat d'une requête :
    SELECT id,HISTORIQUE, ECOLOGIQUE
    IIf([ECONOMIQUE]<>"","historique",Null) AS HISTORIQUE,
    IIf([ECONOMIQUE]<>"","écologique",Null) AS ECOLOGIQUE,
    FROM FONCTIONS;
    Où FONCTION est ma table de départ, et ECONOMIQUE le champs me servant de critère.
    J'aimerai vraiment gardé ce résultat dans une requête car il faut que ça reste dynamique.
    Donc, peut être peut-on imbriquer votre requête avec la mienne afin de n'en faire qu'une? Ou alors, faire appel à ma requête à partir de la votre?

    Ceuce

  9. #9
    Membre éprouvé Avatar de jean-paul lepetit
    Inscrit en
    Février 2005
    Messages
    842
    Détails du profil
    Informations personnelles :
    Âge : 68

    Informations forums :
    Inscription : Février 2005
    Messages : 842
    Points : 919
    Points
    919
    Par défaut
    Je comprends pas trop ta 1ere requête...

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 126
    Points : 53
    Points
    53
    Par défaut
    Oui, c'est normal que tu ne comprennes pas, je me suis planté dans la requête

    c'est en fait :
    SELECT FONCTIONS.id, FONCTIONS.ECOLOGIQUE, FONCTIONS.ECONOMIQUE, FONCTIONS.HISTORIQUE,
    IIf([ECONOMIQUE]<>"" And [HISTORIQUE]<>"","historique",Null) AS HISTORIQ,
    IIf([ECONOMIQUE]<>"" And [ECOLOGIQUE]<>"","écologique",Null) AS ECOLOGIQ
    FROM FONCTIONS;
    Mais je remets tout en fichier joint ( fusionColonnesAutreCas2.doc ) pour que ce soit bien clair
    Encore merci...

    Ceuce
    Fichiers attachés Fichiers attachés

  11. #11
    Membre éprouvé Avatar de jean-paul lepetit
    Inscrit en
    Février 2005
    Messages
    842
    Détails du profil
    Informations personnelles :
    Âge : 68

    Informations forums :
    Inscription : Février 2005
    Messages : 842
    Points : 919
    Points
    919
    Par défaut
    en supposant que ta 1ere requête s'appelle Rqt_Fonctions
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT Rqt_Fonctions.Id, Rqt_Fonctions.HISTORIQ
    FROM Rqt_Fonctions
    WHERE (((Rqt_Fonctions.HISTORIQ) Is Not Null)) UNION SELECT Rqt_Fonctions.Id, Rqt_Fonctions.ECOLOGIQ
    FROM Rqt_Fonctions
    WHERE (((Rqt_Fonctions.ECOLOGIQ) Is Not Null));

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 126
    Points : 53
    Points
    53
    Par défaut
    c'est génial c'est exactement ce que je veux!

    Maintenant j'ai essayé de compiler les deux requêtes en une seule mais ça donne n'importe quoi :
    SELECT FONCTIONS.Id, FONCTIONS.HISTORIQUE,
    IIf([ECONOMIQUE]<>"" And [HISTORIQUE]<>"","historique",Null) AS HISTORIQ
    FROM FONCTIONS

    UNION
    SELECT FONCTIONS.Id, FONCTIONS.ECOLOGIQUE,
    IIf([ECONOMIQUE]<>"" And [ECOLOGIQUE]<>"","écologique",Null) AS ECOLOGIQ
    FROM FONCTIONS

    Je pars de la table FONCTIONS au lieu de d'abord passer par la requête.
    Cette requête là sélectionne les enregistrements HISTORIQUE et ECOLOGIQUE correspondant au critère iif puis il y a union.

    Ca me donne :
    Id HISTORIQUE HISTORIQ
    1 1
    1 4
    2
    2 3 historique
    3 5 historique
    3 6 écologique
    4 4 écologique
    4 8 historique
    5 4
    5 7
    6
    6 5
    7
    8
    9
    9 7
    Tu saurais pourquoi ça ne marche pas?

    ceuce

  13. #13
    Membre éprouvé Avatar de jean-paul lepetit
    Inscrit en
    Février 2005
    Messages
    842
    Détails du profil
    Informations personnelles :
    Âge : 68

    Informations forums :
    Inscription : Février 2005
    Messages : 842
    Points : 919
    Points
    919
    Par défaut
    pourquoi compiler les deux requêtes ?

    en quoi cela te gêne-il d'avoir une requête Rqt_Fonction enregistrée ?
    Et certaines fois, on n'a pas d'autres solutions....

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 126
    Points : 53
    Points
    53
    Par défaut
    Allez, j'admets, t'as raison! J'arrête de me compliquer la vie et ça ira trés bien avec ça.
    En tous cas, merci beauoup pour le temps passé et les réponses rapides.
    Mon problème est résolu!

    ceuce

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

Discussions similaires

  1. Conditions pour rapprocher les données de deux colonnes
    Par operaq dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 03/03/2014, 17h45
  2. Réponses: 4
    Dernier message: 17/04/2008, 14h19
  3. Agreger deux colonnes d'une même table
    Par calagan99 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 19/03/2008, 15h24
  4. Comparer deux colonnes d'une même table
    Par snoopy69 dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 08/01/2008, 11h05
  5. Réponses: 8
    Dernier message: 19/04/2007, 20h41

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