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 :

somme avec group by?


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2006
    Messages
    153
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 153
    Par défaut somme avec group by?
    bonjour ,

    voilà mon pb du jour. je cherche à faire la somme de plusieurs quantité par rapport à un code portefeuille et un type de part (_codefonds,_typepart dans mon select)

    La requete ci dessous me permet de récupérer le detail (codefonds, quantité et type de part)


    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
    35
    36
    37
    38
    39
    40
     
     
    Function chargement_quantite_sousrac_omega() As Double
     
        Dim code_prod As String
     
        Dim ptr As Variant
        Dim quantitesousrach As Double
        Dim code_portefeuille As String
        Dim codefonds As Variant
        Dim dateope As Date
        Dim chargement_quantite_sousrac_omegaa As Variant
        Dim typepart_
        Dim chargement_quantite_sousrac_omegaaa As Double
     
     
        Dim i
     
     
     
        Windows("Contrôle benchmarké1.xls").Activate
        Sheets("sousrac").Activate
     
        For i = 6 To 10
     
        If (Sheets("Sousrac").Range("A" & i)) <> "" Then
     
            code_portefeuille = (Sheets("Sousrac").Range("b" & i))
            dateope = (Sheets("Sousrac").Range("D1"))
     
            If code_portefeuille <> "" Then
     
     
        quantitesousrach = 0
        Set ptr = CreateObject("ADODB.Recordset")
     
     
        ptr.Open " select _quantite, _codefonds, _dateoperation,_typepart from omega.fcp.sousrac where _dateoperation = '" & dateope & "' ORDER BY _codefonds,_typepart ", Mybd
     
            Do While Not ptr.EOF


    Par contre je ne parviens pas à faire la somme des quantité en fonction du codefonds et du type de part.

    Sous sql la requete ci dessous fonctionne bien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    select  _codefonds, sum(_quantite) as qte from Fcp.sousrac where _dateoperation = '07/09/2007' group by _codefonds, _typepart

    j'ai essayé de m'en inspirer avec la requete ci-dessous

    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
     
    Function chargement_quantite_sousrac_omega() As Double
     
        Dim code_prod As String
     
        Dim ptr As Variant
        Dim quantitesousrach As Double
        Dim code_portefeuille As String
        Dim codefonds As Variant
        Dim dateope As Date
        Dim chargement_quantite_sousrac_omegaa As Variant
        Dim typepart_
        Dim chargement_quantite_sousrac_omegaaa As Double
     
     
        Dim i
     
     
     
        Windows("Contrôle benchmarké1.xls").Activate
        Sheets("sousrac").Activate
     
        For i = 6 To 10
     
        If (Sheets("Sousrac").Range("A" & i)) <> "" Then
     
            code_portefeuille = (Sheets("Sousrac").Range("b" & i))
            dateope = (Sheets("Sousrac").Range("D1"))
     
            If code_portefeuille <> "" Then
     
     
        quantitesousrach = 0
        Set ptr = CreateObject("ADODB.Recordset")
     
     
        ptr.Open " select sum (_quantite), _codefonds, _dateoperation,_typepart from omega.fcp.sousrac where _dateoperation = '" & dateope & "' ORDER BY _codefonds,_typepart ", Mybd
     
            Do While Not ptr.EOF
     
     
            quantitesousrach = ptr("sum_QUANTITE")
            codefonds = ptr("_codefonds")
            typepart_ = ptr("_typepart")
     
            chargement_quantite_sousrac_omega = quantitesousrach
            chargement_quantite_sousrac_omegaa = codefonds
     
     
    MsgBox quantitesousrach & codefonds
     
     
     
     
     
           Sheets("Sousrac").Range("h" & i) = quantitesousrach
           Sheets("Sousrac").Range("I" & i) = codefonds
           Sheets("Sousrac").Range("j" & i) = typepart_
            i = 1 + i
     
     
            ptr.movenext
     
     
        Loop
     
     
     
     
        Else
        End If
        End If
     
               Next i
     
     
     
     
     
    End Function

    je me récupére le message d'erreur en pièce jointe


    je ne vois pas ce qui cloche

    si qqun a une idée.......

  2. #2
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    essai comme ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ptr.Open " select sum (_quantite), _codefonds, _dateoperation,_typepart from omega.fcp.sousrac where _dateoperation = '" & dateope & "' group by  _codefonds, _dateoperation,_typepart ORDER BY _codefonds,_typepart ", Mybd

  3. #3
    Membre confirmé
    Inscrit en
    Octobre 2006
    Messages
    153
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 153
    Par défaut
    jérome,

    avec ta requete je me recupere le message suivant en pièce jointe

  4. #4
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    C'est qu'il y a probablement un champ de mal orthographier

  5. #5
    Membre confirmé
    Inscrit en
    Octobre 2006
    Messages
    153
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 153
    Par défaut
    ok ca marche. Merci Jérome

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

Discussions similaires

  1. selection avec group by mais ne garder que ...
    Par Larson dans le forum Langage SQL
    Réponses: 13
    Dernier message: 22/06/2005, 17h23
  2. [débutant] problème avec Group by
    Par Amenofis dans le forum Débuter
    Réponses: 5
    Dernier message: 25/05/2005, 09h57
  3. Prb. avec group by
    Par bianconeri dans le forum Langage SQL
    Réponses: 2
    Dernier message: 31/03/2005, 14h01
  4. requête avec group by
    Par Staron dans le forum Langage SQL
    Réponses: 4
    Dernier message: 29/11/2004, 16h30
  5. update avec group by
    Par slc dans le forum Requêtes
    Réponses: 4
    Dernier message: 05/10/2004, 13h44

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