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 cumul avec une structure conditionelle [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2012
    Messages : 31
    Par défaut Calcul de cumul avec une structure conditionelle
    Bonjour j'ai posté tout à l'heure sur le forum un problème similaire mais cette fois il y a une complexité supplémentaire. en fait il ya un cumul à faire au fil des mois:

    si on est en janvier on a : C10

    février: C10+ D10
    MARS: C10+ D10+E10
    etc.

    en fait; je fait la somme au cumul au fur à mesure qu'on avance en mois alors en m'inspirant du code précédent ça donne ceci.
    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
    Sub cumul_mois()
     
    Dim TabMois() As Variant
     
    TabMois = Array("Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre")
     
     
     
    If Range("C3").Value = "2014" Then
     
        For i = LBound(TabMois) To UBound(TabMois)
     
            If Range("C2") = TabMois(i) Then
     
                Range("D10").Formula = Sheets("COUT").Cells(10, i + 3) + " c'est là ou le bas blesse: pour janvier retenir que janvier pour les mois suivant ajouter D10; E10; F10 sur la même feuille "
     
            End If
     
        Next i
     
    End If
    end sub
    en fait je cherche à réécrire le code suivant trop long et fastidieux :
    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
     
    sub cumul
     
    Sheets("SYNTHESE").Select
     
    If Range("C2").Value = "Janvier" And Range("C3").Value = "2014" Then Range("D10").Formula = Sheets("COUT").Range("C10")
    If Range("C2").Value = "Février" And Range("C3").Value = "2014" Then Range("D10").Formula = Sheets("COUT").Range("C10") + Sheets("COUT").Range("D10")'If Range("C2").Value = "Mars" And Range("C3").Value = "2014" Then Range("D10").Formula = Sheets("COUT").Range("C10") + Sheets("COUT").Range("D10") + Sheets("COUT").Range("E10")
    If Range("C2").Value = "Avril" And Range("C3").Value = "2014" Then Range("D10").Formula = Sheets("COUT").Range("C10") + Sheets("COUT").Range("D10") + Sheets("COUT").Range("E10") + Sheets("COUT").Range("F10")
    If Range("C2").Value = "Mai" And Range("C3").Value = "2014" Then Range("D10").Formula = Sheets("COUT").Range("C10") + Sheets("COUT").Range("D10") + Sheets("COUT").Range("E10") + Sheets("COUT").Range("F10") + Sheets("COUT").Range("G10")
    If Range("C2").Value = "Juin" And Range("C3").Value = "2014" Then Range("D10").Formula = Sheets("COUT").Range("C10") + Sheets("COUT").Range("D10") + Sheets("COUT").Range("E10") + Sheets("COUT").Range("F10") + Sheets("COUT").Range("G10") + Sheets("COUT").Range("H10")
    If Range("C2").Value = "Juillet" And Range("C3").Value = "2014" Then Range("D10").Formula = Sheets("COUT").Range("C10") + Sheets("COUT").Range("D10") + Sheets("COUT").Range("E10") + Sheets("COUT").Range("F10") + Sheets("COUT").Range("G10") + Sheets("COUT").Range("H10") + Sheets("COUT").Range("I10")
    If Range("C2").Value = "Août" And Range("C3").Value = "2014" Then Range("D10").Formula = Sheets("COUT").Range("C10") + Sheets("COUT").Range("D10") + Sheets("COUT").Range("E10") + Sheets("COUT").Range("F10") + Sheets("COUT").Range("G10") + Sheets("COUT").Range("H10") + Sheets("COUT").Range("I10") + Sheets("COUT").Range("J10")
    If Range("C2").Value = "Septembre" And Range("C3").Value = "2014" Then Range("D10").Formula = Sheets("COUT").Range("C10") + Sheets("COUT").Range("D10") + Sheets("COUT").Range("E10") + Sheets("COUT").Range("F10") + Sheets("COUT").Range("G10") + Sheets("COUT").Range("H10") + Sheets("COUT").Range("I10") + Sheets("COUT").Range("J10") + Sheets("COUT").Range("K10")
    If Range("C2").Value = "Octobre" And Range("C3").Value = "2014" Then Range("D10").Formula = Sheets("COUT").Range("C10") + Sheets("COUT").Range("D10") + Sheets("COUT").Range("E10") + Sheets("COUT").Range("F10") + Sheets("COUT").Range("G10") + Sheets("COUT").Range("H10") + Sheets("COUT").Range("I10") + Sheets("COUT").Range("J10") + Sheets("COUT").Range("K10") + Sheets("COUT").Range("L10")
    If Range("C2").Value = "Novembre" And Range("C3").Value = "2014" Then Range("D10").Formula = Sheets("COUT").Range("C10") + Sheets("COUT").Range("D10") + Sheets("COUT").Range("E10") + Sheets("COUT").Range("F10") + Sheets("COUT").Range("G10") + Sheets("COUT").Range("H10") + Sheets("COUT").Range("I10") + Sheets("COUT").Range("J10") + Sheets("COUT").Range("K10") + Sheets("COUT").Range("L10") + Sheets("COUT").Range("M10")
    If Range("C2").Value = "Décembre" And Range("C3").Value = "2014" Then Range("D10").Formula = Sheets("COUT").Range("C10") + Sheets("COUT").Range("D10") + Sheets("COUT").Range("E10") + Sheets("COUT").Range("F10") + Sheets("COUT").Range("G10") + Sheets("COUT").Range("H10") + Sheets("COUT").Range("I10") + Sheets("COUT").Range("J10") + Sheets("COUT").Range("K10") + Sheets("COUT").Range("L10") + Sheets("COUT").Range("M10") + Sheets("COUT").Range("N10")

  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
    Bonjour,

    Dans ton cas essais en mixant les formules Somme et Decaler

    Exemple si Mars (mois 3)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.Range("D10").FormulaLocal = "=SOMME(COUT!$C$10:DECALER(COUT!B10;0;3))"
    Il te reste a mettre le mois en variable et tu n'auras plus qu'une seule ligne

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2012
    Messages : 31
    Par défaut
    Bonjour jerome j'ai testé plusieurs fois , ta ligne de code mais ça me donne des chiffres que je comprends pas.

    par contre avec le code de menhir j'ai le cumul des 2 premiers mois si je prends le mois de mars. à chaque y a un mois en moins qui n'est pas comptabilisé

    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
    Sub cumul()
     
     
    Dim TabMois() As Variant
    TabMois = Array("Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre")
    Sheets("SYNTHESE").Select
     
    If Range("C3").Value = "2014" Then
        Range("D10") = 0
        For i = 1 To 12
            Range("D10") = Range("D10") + Sheets("COUT").Cells(61, i + 2)
            If Range("C2") = TabMois(i) Then Exit For
        Next i
    End If
    End Sub

  4. #4
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Les valeur à cumuler commencent bien en C10 ?

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2012
    Messages : 31
    Par défaut
    oui elle commence bien en C10 ( sur une autre feuille)

  6. #6
    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
    Bonjour jerome j'ai testé plusieurs fois , ta ligne de code mais ça me donne des chiffres que je comprends pas.
    Est ce que la formule qui se met dans la cellule correspond bien a ton attente?
    Si ce n'est pas le cas adaptes la

  7. #7
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Il y a de multiples façon de faire ça. En voici une :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub cumul_mois()
    Dim TabMois() As Variant
    TabMois = Array("Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre")
    If Range("C3").Value = "2014" Then
        Range("D10") = 0
        For i = 1 To 12
            Range("D10") = Range("D10") + Sheets("COUT").cells(10,i+2)
            If Range("C2") = TabMois(i) Then Exit for
        Next i
    End If
    end sub
    Petit commentaire supplémentaire : Je pense que tu n'as pas compris l'usage de la propriété "Formula". Tu devrais regarder les exemples fournis avec l'aide VBA.

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

Discussions similaires

  1. Utilisation de fichiers avec une structure
    Par showdown dans le forum C
    Réponses: 16
    Dernier message: 07/12/2006, 18h30
  2. Probleme avec une structure
    Par Fred2209 dans le forum C++Builder
    Réponses: 15
    Dernier message: 22/11/2006, 22h47
  3. probleme avec une "structure en arbre"
    Par kamouminator dans le forum C
    Réponses: 1
    Dernier message: 07/11/2006, 22h21
  4. Probléme avec une structure
    Par astragoth dans le forum C++
    Réponses: 3
    Dernier message: 25/04/2006, 20h31
  5. Calculer cos(x) avec une série
    Par Évariste Galois dans le forum Algorithmes et structures de données
    Réponses: 15
    Dernier message: 23/08/2005, 15h47

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