Macro vba pour faire la somme des cds par dat

Fermé
saadiil1 Messages postés 27 Date d'inscription jeudi 17 mars 2011 Statut Membre Dernière intervention 6 avril 2011 - 17 mars 2011 à 10:48
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 - 18 mars 2011 à 12:15
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
A voir également:

9 réponses

lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
17 mars 2011 à 11:47
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
saadiil1 Messages postés 27 Date d'inscription jeudi 17 mars 2011 Statut Membre Dernière intervention 6 avril 2011
17 mars 2011 à 14:14
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
saadiil1 Messages postés 27 Date d'inscription jeudi 17 mars 2011 Statut Membre Dernière intervention 6 avril 2011
17 mars 2011 à 14:53
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
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
17 mars 2011 à 14:54
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
saadiil1 Messages postés 27 Date d'inscription jeudi 17 mars 2011 Statut Membre Dernière intervention 6 avril 2011
17 mars 2011 à 15:20
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
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
17 mars 2011 à 15:32
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
saadiil1 Messages postés 27 Date d'inscription jeudi 17 mars 2011 Statut Membre Dernière intervention 6 avril 2011
17 mars 2011 à 16:00
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
saadiil1 Messages postés 27 Date d'inscription jeudi 17 mars 2011 Statut Membre Dernière intervention 6 avril 2011
18 mars 2011 à 10:39
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
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
Modifié par lermite222 le 18/03/2011 à 12:18
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