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 :

Calcul de la moyenne d'une activite + insertion des lignes


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 217
    Points : 53
    Points
    53
    Par défaut Calcul de la moyenne d'une activite + insertion des lignes
    Bonjour,
    sur une base access j'exporte des donnees regroupée par activité sur un fichier excel (7activites)
    mon but c'est d'inserer entre 2 activite distinct une ligne qui permette de somme des champs afin de calculer la moyenne par activites.
    Merci de vos reponse et j'espere que j'etais assez clair.
    merci

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    553
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 553
    Points : 566
    Points
    566
    Par défaut
    Avec Excel, c'est simple

    Tu tries tes données par activités
    Tu rajoutse des sous totaux en choisissant moyenne sur la zone qui t'interesse et à chaque changement d'activité

    Pas besoin de VBA pour çà

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 217
    Points : 53
    Points
    53
    Par défaut
    les activités sortent deja trié ,donc il me faut inserer une ligne vide qui va me permettra de calculer la somme des champs .
    le soucis c'est que j'exporte , et je veux qu'au moment de l'export je manipule pas le donnees

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    553
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 553
    Points : 566
    Points
    566
    Par défaut
    Essaie le code ci-dessous
    Evidemment, je suppose qu'il n'y apas de titre, que ton activité est en colonne 1 et que ta valeur est en colonne 2 et que tes donnnées sont triés par activité

    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
     
    Sub traitement()
        Dim i As Integer
        Dim nbreVal, sommeVal As Double
        Dim strAct As String
        i = 1
        nbreVal = 0
        sommeVal = 0
        strAct = Cells(i, 1).Value
        While Trim(Cells(i, 1).Value) <> ""
            If Cells(i, 1).Value <> strAct Then
                Rows(i & ":" & i).Select
                Selection.Insert Shift:=xlDown
                Cells(i, 1).Value = strAct
                Cells(i, 2).Value = sommeVal / nbreVal
                Cells(i, 3).Value = "TOTAL"
                nbreVal = 0
                sommeVal = 0
                strAct = Cells(i + 1, 1).Value
            Else
                nbreVal = nbreVal + 1
                sommeVal = sommeVal + Cells(i, 2).Value
            End If
            i = i + 1
        Wend
        Rows(i & ":" & i).Select
        Selection.Insert Shift:=xlDown
        Cells(i, 1).Value = strAct
        Cells(i, 2).Value = sommeVal / nbreVal
        Cells(i, 3).Value = "TOTAL"
    End Sub

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 217
    Points : 53
    Points
    53
    Par défaut
    merci pour ta reponse

    j'arrive pas a excuté cette ligne , je me demande pq ca bloque ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sommeVal = sommeVal + Cells(i, 4).Value
    [EDIT]
    c'est bon j'ai reussi , en supprimant le titre du champ .
    mais comme pourrais je calculer tt en gardant mon titre
    mais vu que j'ai plusieurs champs a calculé a sommer (7chmps)
    comment pourrais je automatisé tout ca
    je suis un debutant en vb et merci pour ta comprehension

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    553
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 553
    Points : 566
    Points
    566
    Par défaut
    facile

    j'initialise i=1 car je suppose que les données commencent sur la première ligne
    Maintenant, si tes données commencent sur la deuxième ligne, tu fai i=2

    Si c'est sur la ligne 5, tu mets i=5

    Voilà c'est tout... normalement, çà devrait être OK

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 217
    Points : 53
    Points
    53
    Par défaut
    j'ai reussi a le faire avant que tu me donne la reponse.
    ce pendant j'ai remarque que le code bloque quand je garde le titre du champs . et il marche nikel qd je le supprime .
    que pourrais je faire , car comme je t'ai di j'ai une dizaine de champs et je peux pas enlevé le titre :'(

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    553
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 553
    Points : 566
    Points
    566
    Par défaut
    Il bloque à quel endroit quand tu gardes le titre du champs ?
    c'est pas logique, en commençant en ligne 2, le titre ne devrait plus poser de problème

    Mets toi des points d'arret pour suivre le code pas à pas et voir ce quie ne va pas

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 217
    Points : 53
    Points
    53
    Par défaut
    Merci pour ton aide
    une derniere question , comment pourrait on reglé le probleme de capacité,
    je voudrais calculer une division et ca marche pas.

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    553
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 553
    Points : 566
    Points
    566
    Par défaut
    Comment çà ??
    tu ne ferais pas une division par 0 par hasard ?

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 217
    Points : 53
    Points
    53
    Par défaut
    non du tout ,
    je recupere ma premiere valeur : SommeVal1 et je la divise par SommeVal2
    et j'ai une erreur de capacite de depassement , alors que toutes les variables sont en double

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    553
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 553
    Points : 566
    Points
    566
    Par défaut
    Essaie d'afficher les valeur de tse 2 variables pour voir
    Peut etre que SOmmeVal2=0 justement

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 217
    Points : 53
    Points
    53
    Par défaut
    non j'ai verifie eelle est #de zero

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    553
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 553
    Points : 566
    Points
    566
    Par défaut
    Quelles sont les 2 valeurs alors ?
    Et des fois, la variable dans laquelle tu veux stocker le résultat est-elle bien définie ?

    Et pour ta ligne detitre, c'est réglé? Ca marche quand la ligne est présente ?

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 217
    Points : 53
    Points
    53
    Par défaut
    Pour les titres oui c'est reglé
    pour la variable je nomme une

    Val3 = (1 - (sommeVal1 / sommeVal2))
    et c'est dans cette partie ou ça bloque

  16. #16
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    553
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 553
    Points : 566
    Points
    566
    Par défaut
    Comment as -tu défini Val3 ?
    Que valent SommeVal1 et SommeVal2 ?

    Es-tu sûr que c'est là que çà bloque ?
    n'y aurait-il pas une boucle sur i en Integer qui dépasserait la capacité d'un Integer par hasard ?
    Fais voir ton bout de code

  17. #17
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 217
    Points : 53
    Points
    53
    Par défaut
    voila , je sais qu'on peu faire mieux mais vu que je suis novice je me contente de ç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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
    Sub traitement()
        Dim i As Integer
        Dim nbreVal, sommeVal, sommeVal1, sommeVal2, sommeVal4, sommeVal5, sommeVal6 As Double
        Dim Val3 As Long
        Dim strAct As String
        i = 2
        nbreVal = 0
        sommeVal = 0
        strAct = Cells(i - 1, 3).Value
        While Trim(Cells(i - 1, 3).Value) <> ""
            If Cells(i, 3).Value <> strAct Then
                Rows(i & ":" & i).Select
                Selection.Insert Shift:=xlDown
                Cells(i, 3).Value = strAct
                Cells(i, 4).Value = sommeVal
                Cells(i, 5).Value = sommeVal1
                Cells(i, 6).Value = sommeVal2
                Cells(i, 7).Value = Val3
                Cells(i, 9).Value = sommeVal4
                Cells(i, 10).Value = sommeVal5
     
                nbreVal = 0
                sommeVal = 0
                sommeVal1 = 0
                sommeVal2 = 0
                Val3 = 0
                sommeVal4 = 0
                sommeVal5 = 0
     
                strAct = Cells(i + 1, 3).Value
     
            Else
     
                nbreVal = nbreVal + 1
                sommeVal = sommeVal + Cells(i, 4).Value
                sommeVal1 = sommeVal1 + Cells(i, 5).Value
                sommeVal2 = sommeVal2 + Cells(i, 6).Value
                Val3 = (1 - (Cells(i, 5).Value / Cells(i, 6).Value))
                sommeVal4 = sommeVal4 + Cells(i, 9).Value
                sommeVal5 = sommeVal5 + Cells(i, 10).Value
     
            End If
            i = i + 1
        Wend
        Rows(i & ":" & i).Select
        Selection.Insert Shift:=xlDown
        Cells(i, 3).Value = strAct
        Cells(i, 4).Value = sommeVal
        Cells(i, 5).Value = sommeVal1
        Cells(i, 6).Value = sommeVal2
        Cells(i, 7).Value = Val3
        Cells(i, 9).Value = sommeVal4
        Cells(i, 10).Value = sommeVal5
    End Sub

  18. #18
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    553
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 553
    Points : 566
    Points
    566
    Par défaut
    ton code à l'air correct
    a mon avis, le problème vient peut-être de ton jeu de données
    repère la ligne qui fout le bordel et vérifie que dans les celluls qui vont bien, tu n'as pas un caractère bizarre

    Comme çà sans les données, je ne peux pas te dire ce qui se passe

    Essaie à la limite de mettre Val3 en Double au lieu de Long (ils n'ont pas la même amplitude de valeur)

  19. #19
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 217
    Points : 53
    Points
    53
    Par défaut
    ça marche tjs pas , tu veu ke je te met le fichier excel correspondant ?

  20. #20
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    553
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 553
    Points : 566
    Points
    566
    Par défaut
    ouauis vite fait que je puisse voir les données... je suis sûr que le pb vien de là

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 4
    Dernier message: 13/12/2014, 00h54
  2. [Débutant] calcul de la moyenne d'une région
    Par blackmisery dans le forum Images
    Réponses: 22
    Dernier message: 26/08/2013, 10h03
  3. Calcul de la moyenne d'une activite
    Par Chikatilo dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 02/09/2008, 15h01
  4. calcule de la moyenne d'une région
    Par jameshamm dans le forum Images
    Réponses: 1
    Dernier message: 02/03/2008, 15h47
  5. [MySQL 4.0] Calcul de la moyenne d'une somme
    Par Silver76 dans le forum Langage SQL
    Réponses: 7
    Dernier message: 31/05/2007, 12h33

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