Macro vba pour faire la somme des cds par dat

saadiil1 Messages postés 31 Statut Membre -  
lermite222 Messages postés 9042 Statut Contributeur -
Bonjour tout le monde;
je suis debutant en vba et j'ai besoin de votre aide.
on ma demander au stage de faire une macro qui permet de faire la somme des commandes( colonne K) pour chaque mois (la date en colonne L) et de les mettre dans la Feuil2.

voilà ce que j'ai :
Feuil1 :
K L
10 05May2011000001
10 13May2011000001
10 19May2011000001
10 25May2011000001
10 06Jun2011000001
10 15Jun2011000001
10 23Jun2011000001
10 30Jun2011000001
10 11Jul2011000001
10 09Aug2011000001
10 22Aug2011000001
10 26Aug2011000001

et voilà ce que je veux dans la Feuil2 :
A B C D
Mois May Jun Jul Aug
cdes 40 40 10 20

Merci d'avance

9 réponses

  1. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Bonjour,
    Un exemple de code, mais moi je trouve...
    Mois May Jun Jul Aug
    cdes 40 40 10 30

    Option Explicit
    
    Option Compare Text
    Sub H()
    Dim T, Lig As Long, Mois As Integer, TB(), Result(12) As Integer
        TB = Array(" ", "Jan", "Fév", "Mar", "Avr", "May", "jun", "jul", "aug", "sep", "oct", "nov", "déc")
        Sheets("Feuil1").Select
        For Lig = 1 To [L65536].End(xlUp).Row
            For Mois = 1 To 12
                If Cells(Lig, "L") Like "*" & TB(Mois) & "*" Then
                    Result(Mois) = Result(Mois) + Cells(Lig, "K")
                    Exit For
                End If
            Next Mois
        Next
        Sheets("Feuil2").Activate
        For Mois = 1 To 12
            Cells(2, Mois + 1) = TB(Mois)
            Cells(3, Mois + 1) = Result(Mois)
        Next
    End Sub

    A coller dans un module général.
    A+
    0
  2. saadiil1 Messages postés 31 Statut Membre
     
    Merci bcp pour ta réponse.
    En fait il accepte pas "Option Explicit" et "Option Compare Text" et lorsque je les enleve.il ne donne pas le bn résultat
    voici ce que j'ai obtenu avec ton code (en enlevant "Option Explicit" et "Option Compare Text" bien sur ) : (40 pour May ) et 0 pour les autres mois :

    Jan Feb Mar Apr May jun jul aug
    0 0 0 0 40 0 0 0 .........

    le problème c'est que dans ma colonne L , il ya les mois qui se repètent , car il ya les comandes de 2011 jusqu'à 2013 cad on peut trouver May2011 ,May2012,May2013 .donc j'aimerai bien que le code tient compte de l'année aussi et de l'aficher . voici les infos exact de ma colonnes L :

    05May2011000001
    13May2011000001
    19May2011000001
    25May2011000001
    06Jun2011000001
    15Jun2011000001
    23Jun2011000001
    30Jun2011000001
    11Jul2011000001
    09Aug2011000001
    22Aug2011000001
    26Aug2011000001
    02Sep2011000001
    12Sep2011000001
    19Sep2011000001
    26Sep2011000001
    03Oct2011000001
    07Oct2011000001
    17Oct2011000001
    24Oct2011000001
    03Nov2011000001
    10Nov2011000001
    17Nov2011000001
    24Nov2011000001
    01Dec2011000001
    07Dec2011000001
    13Dec2011000001
    20Dec2011000001
    05Jan2012000001
    12Jan2012000001
    18Jan2012000001
    26Jan2012000001
    01Feb2012000001
    07Feb2012000001
    14Feb2012000001
    21Feb2012000001
    29Feb2012000001
    06Mar2012000001
    13Mar2012000001
    20Mar2012000001
    27Mar2012000001
    30Mar2012000001
    05Apr2012000001
    16Apr2012000001
    26Apr2012000001
    30May2012000001
    28Jun2012000001
    17Jul2012000001
    30Aug2012000001
    18May2011000001
    24May2011000001
    31May2011000001

    Merci bcp de ton aide
    cordialement
    0
  3. saadiil1 Messages postés 31 Statut Membre
     
    ah . excuse-moi j'été con.( il n'est ya pas de souci pour "Option Explicit" et "Option Compare Text")

    la partie somme des cdes marche très bien . En faite , il faut juste rajouter l'année et d'associer la somme des cmd de la manière suivante:

    Jan2011 Feb2011 Mar2011 Apr2011 May2011 ........Jan2012 Feb2012..... .
    0 0 0 0 40 40 50 ......

    bien cordialement
    0
  4. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Une chose à la fois...
    En fait il accepte pas "Option Explicit" et "Option Compare Text" Ça c'est pas possible, où tu met le code ?
    Et quel Appli ? Excel ?
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. saadiil1 Messages postés 31 Statut Membre
     
    ah . excuse-moi j'été con.( il n'est ya pas de souci pour "Option Explicit" et "Option Compare Text")

    la partie somme des cdes marche très bien . En faite , il faut juste rajouter l'année et d'associer la somme des cmd de la manière suivante:

    Jan2011 Feb2011 Mar2011 Apr2011 May2011 ........Jan2012 Feb2012..... .
    0 0 0 0 40 ......40 50 ......

    bien cordialement
    0
  7. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    En fonction du code que je t'ai mis plus haut, réfléchi et essaye d'extrapoler pour avoir plus de données.
    Une piste.. Faut autant de résultat que d'années * 12
    Faut tester année ET le mois
    Montre le code que tu peu générer à partir de ces pistes.
    0
  8. saadiil1 Messages postés 31 Statut Membre
     
    ok , merci bcp pour ton aide . je vais reflichir à ça et je te tiens au courant du résultat.

    merci bcp une autre fois
    0
  9. saadiil1 Messages postés 31 Statut Membre
     
    Bonjour ;
    je reviens vers vous ,
    En fait j'ai modifié un peu tn code "lermite2222" en rajoutant un autre tableau pour l'année 2012 ( au moins ça va me résoudre le pb pour 2 ans )

    voici les modif :

    Option Explicit

    Option Compare Text

    Sub test()

    Dim T, Lig As Long, Mois As Integer, TB(), TB1(), Result(12), Result1(12) As Integer
    TB = Array(" ", "Jan2011", "Feb2011", "Mar2011", "Apr2011", "May2011", "jun2011", "jul2011", "aug2011", "sep2011", "oct2011", "nov2011", "dec2011")
    TB1 = Array(" ", "Jan2012", "Feb2012", "Mar2012", "Apr2012", "May2012", "jun2012", "jul2012", "aug2012", "sep2012", "oct2012", "nov2012", "dec2012")

    For Lig = 1 To [L65536].End(xlUp).Row
    For Mois = 1 To 12
    If Cells(Lig, "L") Like "*" & TB(Mois) & "*" Then
    Result(Mois) = Result(Mois) + Cells(Lig, "K")
    Else
    If Cells(Lig, "L") Like "*" & TB1(Mois) & "*" Then
    Result1(Mois) = Result1(Mois) + Cells(Lig, "K")
    Exit For
    End If

    End If
    Next Mois
    Next
    Sheets("Feuil2").Activate
    For Mois = 1 To 12
    Cells(2, Mois + 1) = TB(Mois)
    Cells(3, Mois + 1) = Result(Mois)

    Cells(5, Mois + 1) = TB1(Mois)
    Cells(6, Mois + 1) = Result1(Mois)
    Next

    End Sub
    -----------------------------------------------------------------------

    là j'aimerai faire la somme pour chaque article (la colonne A de mon fichier contient la références des article) et de les afficher :

    exemple de ce que je veux :

    Feuil2 :

    Articl1 janv-11 févr-11 mars-11 avr-11 mai-11 juin-11 .....
    0 0 0 0 70 70

    janv-12 févr-12 mars-12 avr-12 mai-12 juin-12 ....
    90 90 100 128 82 34

    Articl2 janv-11 févr-11 mars-11 avr-11 mai-11 juin-11 ....
    10 20 15 10 0 0

    janv-12 févr-12 mars-12 avr-12 mai-12 juin-12 ...
    12 42 10 10 0 10 10
    Merci d'avance
    cordialement
    0
  10. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Une chose à la fois...
    La macro optimisée pour les années de 2008 à 2020.
    Option Compare Text
    Sub H() 
    Dim Annee As Integer, Lig As Long, Mois As Integer, TB(), Result(2008 To 2020, 12) As Integer 
        TB = Array(" ", "Jan", "Fév", "Mar", "Avr", "May", "jun", "jul", "aug", "sep", "oct", "nov", "déc") 
        Sheets("Feuil1").Select 
        For Lig = 1 To [L65536].End(xlUp).Row 
            For Annee = 2008 To 2020 
                If Cells(Lig, "L") Like "*" & CStr(Annee) & "*" Then 
                    For Mois = 1 To 12 
                        If Cells(Lig, "L") Like "*" & TB(Mois) & "*" Then 
                            Result(Annee, Mois) = Result(Annee, Mois) + Cells(Lig, "K") 
                            Exit For 
                        End If 
                    Next Mois 
                    Exit For 
                End If 
            Next Annee 
        Next Lig 
        Sheets("Feuil2").Activate 
        For Mois = 1 To 12 
            Cells(2, Mois + 1) = TB(Mois) 
        Next Mois 
        For Annee = 2011 To 2012 'Adapter les années à afficher 
            Cells(Annee - 2008, 1) = Annee 
            For Mois = 1 To 12 
                Cells(Annee - 2008, Mois + 1) = Result(Annee, Mois) 
            Next Mois 
        Next Annee 
    End Sub 
    
    Et je pense que ça répond aussi à ta 2ièm question.
    A+
    Toute la connaissance du monde ne peu tenir dans une seul tête (moi)
    Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
    NOTE : Je ne répond pas aux MP pour les questions techniques.
    0