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 :

somme conditionnelle sous Excel


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Mars 2008
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 69
    Par défaut somme conditionnelle sous Excel
    Bonjour à tous le monde

    Voilà j'essaie de faire une somme conditionnelle qui me pose problème
    En fait mon code est le suivant:

    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
    dim somme, val, total as variant
     
      For i = 5 To 300
      If Worksheets(CStr(ComboBox2)).Range("F" & i) = Worksheets(CStr(ComboBox2)).Range("F" & i + 1) Then
     
                        somme = somme + Sheet1.Cells(i, 14).Value
       End If
       If Worksheets(CStr(ComboBox1)).Range("F" & i) = Worksheets(CStr(ComboBox1)).Range("F" & i + 1) Then
     
                        val = val + Sheet2.Cells(i, 14).Value
     End If
     If Worksheets(CStr(ComboBox2)).Range("F" & i) = Worksheets(CStr(ComboBox1)).Range("F" & i + 1) Then
     
                        total = somme - val
           End If
     
            If Sheets("total").Range("B4" & i) = Worksheets(CStr(ComboBox2)).Range("F" & i) Then
     
                        For Each cel In Range("B4:B300") 
     
                            cel = total
                        Next cel
    End If
     
                    Next i
     
    End If
    Apparement il compile mais rien ne se passe à l'éxécution

    donc je souhaiterais faire la somme des valeurs en colonne 14 de la feuille1 pour lesquelles les codes en colonne F sont identiques, s'il y seul code on coserve la valeur unique trouvée

    L'opération est répétée sur la deuxième feuille (combobox1.value) et enfin on colue la différence des deux sur la feuille total pour les codes respectifs en colonne A

    Je ne sais pas si j'ai été assez claire
    Merci pour vos réponse!!!!!

  2. #2
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Bonjour,

    Une première question : les ComboBox sont directement sur la feuille ou sur un userform ?

  3. #3
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Mars 2008
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 69
    Par défaut
    c'est plutôt sur un userForm

  4. #4
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Alors à vue de nez cela devrait ressembler à quelque chose comme ç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
    Sub test()
    Dim somme, val, total
    Dim CB1 As String, CB2 As String
    Dim cel As Range, i As Integer
     
    CB1 = UserForm1.ComboBox1.Value '<-- adapter le nom du UserForm si pas UserForm1
    CB2 = UserForm1.ComboBox2.Value '<-- adapter le nom du UserForm si pas UserForm1
     
    For i = 5 To 300
        If Sheets(CB2).Range("F" & i) = Sheets(CB2).Range("F" & i + 1) Then
            somme = somme + Sheets(1).Cells(i, 14).Value
        End If
        If Sheets(CB1).Range("F" & i) = Sheets(CB1).Range("F" & i + 1) Then
            val = val + Sheets(2).Cells(i, 14).Value
        End If
        If Sheets(CB2).Range("F" & i) = Sheets(CB1).Range("F" & i + 1) Then
            total = somme - val
        End If
        If Sheets("total").Range("B4" & i) = Sheets(CB2).Range("F" & i) Then
            For Each cel In Range("B4:B300") '<-- range de quelle feuille ?
            cel = total
            Next cel
        End If
    Next i
     
    End Sub
    Je ne peux pas le tester sans reconstruire toute ta structure de classeur
    Je pense que tu peux déclarer tes variables "somme", "val" et "total" autrement que Variant, tout dépend de ce que ces variables sont censées contenir, tu peux jeter un oeil sur ce lien http://silkyroad.developpez.com/VBA/LesVariables/

  5. #5
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Mars 2008
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 69
    Par défaut
    For Each cel In Sheets("total").Range("B4:B300") '<-- range de quelle feuille ?

    Je teste pour voir avec çà!!

  6. #6
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Mars 2008
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 69
    Par défaut
    En fait je viens de tester et c'est déjà mieux qu'avant
    Sauf qu'il affiche que des 0 comme resultat

    EN fait pour un peu plus explicite je donne une exemple :

    j'ai 3 feuille jourA, jourB, et total

    Sur la feuille jourA j'ai une colonne F ou j'ai les code de mes clients et une colonne N avec la valeur de leur achats

    et sur la feuille jourB j'ai les memes colonne mais les infos qui peuvent varier

    le but de mon calcul serait de savoir le différentiel des achat de chaque client entre le jour A et le jour B et de reporter ce différentiel dans la feuille total devant chaque code client correspondant

    A noter que la feuille total présente une colonne de code client et une colonne pour les différenciels

    En plus concret on a par exemple :

    feuille (jourA)

    colonneF |colonneN (200,300...)
    1 | 200
    2 | 300
    3 | 50
    4 | 12
    1 | 35
    1 | 43


    feuille (jourB)

    colonneF |colonneN (20, 31 ...)
    1 | 20
    2 | 31
    3 | 78
    3 | 150
    4 | 47
    1 | 2


    après le calcul on devrai avoir

    feuille (total)

    colonneA |colonneB
    1 | 256 => (200+35+43) - (20+2)
    2 | 269 => (300 - 31)
    3 | -178 => 50- (78+150)
    4 | -35 => (12-47)


    alors est-ce le bon algo que j'utilises??
    Merci de vos réponses

    Ninette

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

Discussions similaires

  1. Impression Conditionnelle sous Excel
    Par Morlok dans le forum Excel
    Réponses: 3
    Dernier message: 28/09/2010, 13h24
  2. somme conditionnelle sous acces
    Par dodie84 dans le forum IHM
    Réponses: 10
    Dernier message: 15/05/2008, 17h18
  3. somme conditionnelle sous acces
    Par dodie84 dans le forum VBA Access
    Réponses: 0
    Dernier message: 07/05/2008, 09h30
  4. somme conditionnelle sous VBA
    Par léclaireur dans le forum Général VBA
    Réponses: 5
    Dernier message: 26/04/2007, 10h32
  5. Mise en forme conditionnelle sous Excel
    Par crosse9 dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 21/09/2006, 00h50

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