Alimenter en fonction numéro semaine ou mois

Résolu/Fermé
Co_nexion Messages postés 328 Date d'inscription lundi 5 mars 2012 Statut Membre Dernière intervention 15 juillet 2015 - 27 août 2012 à 14:30
skyzino Messages postés 28 Date d'inscription jeudi 20 septembre 2012 Statut Membre Dernière intervention 2 juillet 2013 - 25 sept. 2012 à 15:20
Bonjour,

J'ai un peu l'impression d'avoir régressé après les vacances... Merci pour votre aide.

Au travers du fichier ci-dessous, je souhaite alimenter l'onglet synthèse avec les données de l'onglet Calcul.

En prenant la colonne E comme source d'alimentation et en fonction de la colonne P pour les semaines et O pour les mois.

Si vous avez des idées même avec VBA, je suis preneur :)

https://www.cjoint.com/?BHBoC6ocV4i

Merci d'avance

A voir également:

5 réponses

Co_nexion Messages postés 328 Date d'inscription lundi 5 mars 2012 Statut Membre Dernière intervention 15 juillet 2015
27 août 2012 à 16:27
Personne pour ce problème ?

Vu le soleil je comprends... Mais un peu d'aide serait vraiment la bienvenue.
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
27 août 2012 à 17:57
Re,

Ayant pris le sujet a 17h15, patience tout arrive a point pour qui sait attendre.....
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
27 août 2012 à 18:44
Re,

Un exemple VBA

Sub synthese()
  Dim Plage As Range, cel As Range
  Dim Compte_Semaine(53) As Single, Compte_Mois(12) As Single
  Dim Num_Mois As Integer, Num_Sem As Integer, Mois
  Dim Nb_Sem As Integer
  
  Erase Compte_Semaine, Compte_Mois
  
    'pour la dernière ligne de la colonne A
    derlig = Worksheets("Calcul").Range("A" & Rows.Count).End(xlUp).Row
    Set Plage = Worksheets("Calcul").Range("O2:O" & derlig)
    For Each cel In Plage
      If Worksheets("Calcul").Cells(cel.Row, "P") <> "" Then
        'Mois
        ValO = Worksheets("Calcul").Cells(cel.Row, "O")
        Mois = Left(ValO, Len(ValO) - 5)
        'Semaine
        ValP = Worksheets("Calcul").Cells(cel.Row, "P")
        Num_Sem = CInt(Left(ValP, Len(ValP) - 5))
      Else
        Exit Sub
      End If
      
      Select Case Mois
        Case Is = "janvier"
          Num_Mois = 1
        Case Is = "févier"
          Num_Mois = 2
        Case Is = "mars"
          Num_Mois = 3
        Case Is = "avril"
          Num_Mois = 4
        Case Is = "mai"
          Num_Mois = 5
        Case Is = "juin"
          Num_Mois = 6
        Case Is = "juillet"
          Num_Mois = 7
        Case Is = "août"
          Num_Mois = 8
        Case Is = "septembre"
          Num_Mois = 9
        Case Is = "octobre"
          Num_Mois = 10
        Case Is = "novembre"
          Num_Mois = 11
        Case Is = "décembre"
          Num_Mois = 12
        Case Else
        'cellule vide ou autre
      End Select
      Compte_Semaine(Num_Sem) = Compte_Semaine(Num_Sem) + Worksheets("Calcul").Cells(cel.Row, "E")
      Compte_Mois(Num_Mois) = Compte_Mois(Num_Mois) + Worksheets("Calcul").Cells(cel.Row, "E")
    Next cel
  
  'Ecriture des Cumuls
    'Cumul Mois
    For i = 1 To 12
      If Compte_Mois(i) > 0 Then
        Worksheets("Synthèse").Cells(21, 2 + i) = Format(Compte_Mois(i), "###.##")
      Else
        Worksheets("Synthèse").Cells(21, 2 + i) = ""
      End If
    Next i
    'Cumul Semaine
    If Worksheets("Synthèse").Range("G16") = "" Then
      Nb_Sem = 52
    Else
      Nb_Sem = 53
    End If
    
    'Coordonnees des cellules Semaine
    For i = 1 To 52
      Lig = Choose(i, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, _
                      8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, _
                      11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, _
                      14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, _
                      17, 17, 17, 17)
      Col = Choose(i, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, _
                      3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, _
                      3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, _
                      3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, _
                      3, 4, 5, 6, 7)
      If Compte_Semaine(i) > 0 Then
        Worksheets("Synthèse").Cells(Lig, Col) = Format(Compte_Semaine(i), "###.##")
      Else
        Worksheets("Synthèse").Cells(Lig, Col) = ""
      End If
    Next i
End Sub


Bonne suite
0
Co_nexion Messages postés 328 Date d'inscription lundi 5 mars 2012 Statut Membre Dernière intervention 15 juillet 2015
28 août 2012 à 09:54
Bonjour f89,

Je regarde de ce pas ton code et je te fais un retour au plus vite, merci !
0
Co_nexion Messages postés 328 Date d'inscription lundi 5 mars 2012 Statut Membre Dernière intervention 15 juillet 2015
28 août 2012 à 10:54
Re f89,

Pourquoi avoir mis cette partie de code ?

    'Cumul Semaine
    If Worksheets("Synthèse").Range("G16") = "" Then
      Nb_Sem = 52
    Else
      Nb_Sem = 53
    End If
0
Co_nexion Messages postés 328 Date d'inscription lundi 5 mars 2012 Statut Membre Dernière intervention 15 juillet 2015
28 août 2012 à 11:41
Egalement les données sont stockés sous forme de texte. Serait-il possible qu'il soit sous forme de chiffre ?
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
28 août 2012 à 13:17
Bonjour,
Cumul semaine: suivant les annees, il y a 52 ou 53 semaines. Meme si l'exemple que vous avez fourni n'est pas le projet final, il faut y penser.

Pour les donnees: Egalement les données sont stockés sous forme de texte.
si je code pour relire une cellule semaine ou mois, j'ai un nombre pas une chaine

Mais si vous voulez:
enlever le formatage du code et formater les cellules sauf si vous aimez les nombres avec 17 chiffres apres la virgule


Bonne suite
0
Co_nexion Messages postés 328 Date d'inscription lundi 5 mars 2012 Statut Membre Dernière intervention 15 juillet 2015
28 août 2012 à 14:13
N'est-il pas possible de rajouter dans le code un " *1 " afin d'obtenir des chiffres et non du texte dans les cases de la synthèse ?
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
28 août 2012 à 19:53
Re,
Je vous renvoie votre fichier. Je ne comprend pas pourquoi vous avez du texte,car dans votre fichier ce sont des nombres:a droite dans les cellules, si c'etait du texte: a gauche dans les cellules.
2007
https://www.cjoint.com/?BHCtUwPEowP
2003
https://www.cjoint.com/?BHCt0xojluk

Bonne suite
0
Co_nexion Messages postés 328 Date d'inscription lundi 5 mars 2012 Statut Membre Dernière intervention 15 juillet 2015
3 sept. 2012 à 09:57
Bonjour F89,

Je viens de prendre le fichier 2007 pour vérifier et il s'agit bien d'un format texte sous lequel sont stockés les chiffres dans l'onglet synthèse.

J'ai ajouté 3 lignes supplémentaires (sur l'onglet calcul) puis j'ai lancé la macro et alors les chiffres stockés en onglet synthèse sont sous le format texte.

Dans l'attente d'un avis de votre part, je vous remercie par avance
0

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

Posez votre question
skyzino Messages postés 28 Date d'inscription jeudi 20 septembre 2012 Statut Membre Dernière intervention 2 juillet 2013
25 sept. 2012 à 15:20
Re f89,

J'espère que vous aurez le temps de faire un détour par cet ancien topic résolu.

En effet j'ai souhaité rajouter un bout de code et cependant cela ne fait pas exactement ce que j'en ai voulu, surement ai-je oublié quelques points à modifier.

Voici ce que j'ai ajouté à la fin du précédent code

'Duplication 25/09
'Ecriture des Cumuls Heures
    'Cumul Semaine Heures
    If Worksheets("Synthèse").Range("F20") = "" Then
      Nb_Sem = 52
    Else
      Nb_Sem = 53
    End If
    
    'Coordonnees des cellules Semaine Heures
    For j = 1 To 52
      lig = Choose(j, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, _
                      9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, _
                      13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, _
                      17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, _
                      21, 21, 21, 21)
      col = Choose(j, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, _
                      2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, _
                      2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, _
                      2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, _
                      2, 3, 4, 5, 6)
      If Compte_Semaine(j) > 0 Then
        Worksheets("Synthèse").Cells(lig, col) = CSng(Format(Compte_Semaine(j), "###.##"))
      Else
        Worksheets("Synthèse").Cells(lig, col) = ""
      End If
    Next j


Par avance Merci
0