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 SI DANS VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Analyse système
    Inscrit en
    Décembre 2018
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2018
    Messages : 121
    Par défaut SOMME SI DANS VBA
    Bonjour mes chers amis

    Je voudrais qu'en colonne R : il m'affiche le résultat de la somme de tous les montants en colonne K pour un même sinistre.

    sinn = colonne des numéro de sinistre
    CIE = colonne des numéro de compagnie

    "K" c'est ma colonne des montants

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     For j = 2 To Derligne
    For jj = j + 1 To Derligne
            If .Cells(j, sinn) = .Cells(jj, sinn) And Cells(j, CIE) = Cells(jj, CIE) Then
            .Range("R" & Derligne) = Application.WorksheetFunction.Sum(Range("K2:K" & Derligne))
            End If
            Next jj
            Next j
    End With
    pasDeCommentaire:
    End Sub
    Je veux qu'il m'additionne tous les montants pour un même numéro de sinsitre et pour un même numéro de compagnie.

    Merci à tous !

  2. #2
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    Bonjour
    Si j'ai compris, il y a en VBA sumifs
    Supposons en colonne A : Numéro de compagnie et en colonne B le numéro de sinistre et le montant de sinistre en colonne C
    cellule D = Application.WorksheetFunction.SumIfs(Colonne à sommer "C" dans notre exemple, Champs Condition1 , Condition1, , Champs Condition2 , Condition2)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub sommer()
    With Sheets("feuil1")
     dernligne = .Range("A" & .Rows.Count).End(xlUp).Row
     For i = 2 To dernligne
        .Cells(i, "D").Value = Application.WorksheetFunction.SumIfs(Sheets("feuil1").Range("C2:C" & dernligne), Sheets("feuil1").Range("A2:A" & dernligne), .Cells(i, "A"), Sheets("feuil1").Range("B2:B" & dernligne), .Cells(i, "B"))
    Next i
     End With
    End Sub
    à étudier et à adapter si ça t'arrange

  3. #3
    Membre confirmé
    Homme Profil pro
    Analyse système
    Inscrit en
    Décembre 2018
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2018
    Messages : 121
    Par défaut
    Citation Envoyé par BENNASR Voir le message
    Bonjour
    Si j'ai compris, il y a en VBA sumifs
    Supposons en colonne A : Numéro de compagnie et en colonne B le numéro de sinistre et le montant de sinistre en colonne C
    cellule D = Application.WorksheetFunction.SumIfs(Colonne à sommer "C" dans notre exemple, Champs Condition1 , Condition1, , Champs Condition2 , Condition2)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub sommer()
    With Sheets("feuil1")
     dernligne = .Range("A" & .Rows.Count).End(xlUp).Row
     For i = 2 To dernligne
        .Cells(i, "D").Value = Application.WorksheetFunction.SumIfs(Sheets("feuil1").Range("C2:C" & dernligne), Sheets("feuil1").Range("A2:A" & dernligne), .Cells(i, "A"), Sheets("feuil1").Range("B2:B" & dernligne), .Cells(i, "B"))
    Next i
     End With
    End Sub
    à étudier et à adapter si ça t'arrange
    Bonjour BENNASR

    Merci pour ta formule et ta réponse, ça fonctionne pas sa bloque à il reconnait pas cette valeur.

    En revanche BENNASR, je sais pas si tu t'en souviens mais tu m'avais fait une super macro avec un Tablo pour calculer la Somme de tous les montants pour un même sinistre et un même numéro de compagnie.
    J'avais pensé, pourquoi pas, de reprendre ton codage avec le tableau et au lieu de mettre un commentaire en H, il devra juste afficher le résultat de la somme des montants pour un même sinistre en colonne R.

    Voici ton code que tu avais fait ! :

    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
    With Sheets("SUIVTRANS EN COURS")
        Derligne = .Range("A" & Rows.Count).End(xlUp).Row
        .Range("M2:M" & Derligne).ClearContents
     
        Tablo = .Range("J2", "K" & .Range("K" & .Rows.Count).End(xlUp).Row)
     
        For j = 2 To Derligne
     somme = 0
            codeP = .Cells(j, "H")
            For i = LBound(Tablo, 1) To UBound(Tablo, 1)
                If .Cells(j, "J") = Tablo(i, 1) Then
                    If .Cells(i + 1, "H") <> codeP Then
                        GoTo pasDeCommentaire
                    Else
                        somme = somme + CDbl(Tablo(i, 2))
                    End If
                End If
     
            Next i
     
            'REGULARISATION ECART-TEMPLATE (2)
            If somme >= -10 And somme <= 10 And somme <> 0 Then
                .Cells(j, 13) = "REGULARISATION ECART-TEMPLATE"
     
    End if 
    End j
    Je sais pas si c'est nécessaire de reprendre ton tablo, mais c'est exactement le même esprit sauf qu'on mettra pas de commentaire mais juste le résultat de la somme des montants.

  4. #4
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    si c'est le cas alors supprimer les trois dernières lignes de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    If somme >= -10 And somme <= 10 And somme <> 0 Then
                .Cells(j, 13) = "REGULARISATION ECART-TEMPLATE"
     
    End if
    et remplcer par (remplcer 13 par le numéro de colonne qui recevra la somme)

  5. #5
    Membre confirmé
    Homme Profil pro
    Analyse système
    Inscrit en
    Décembre 2018
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2018
    Messages : 121
    Par défaut
    ça marche pas ...

  6. #6
    Membre confirmé
    Homme Profil pro
    Analyse système
    Inscrit en
    Décembre 2018
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2018
    Messages : 121
    Par défaut
    Ah si a a l'air de marcher !

  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
    Citation Envoyé par OBADJ Voir le message
    Je voudrais qu'en colonne R : il m'affiche le résultat de la somme de tous les montants en colonne K pour un même sinistre.
    Il n'est pas nécessaire de passer par du VBA pour ça.
    Tu peux le faire avec la fonction SOMME.SI.ENS()
    https://support.office.com/fr-FR/art...6-611cebce642b

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

Discussions similaires

  1. [XL-2010] Somme automatique en VBA d'une cascade de données dans Excel (parent\enfant).
    Par lagguille dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 28/10/2016, 12h03
  2. Fonction somme dans VBA
    Par BLACKEYED05 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 19/07/2015, 16h03
  3. [AC-2003] fonction somme() dans vba
    Par caro2552 dans le forum VBA Access
    Réponses: 3
    Dernier message: 18/06/2011, 18h26
  4. [VBA-E] Formule SOMME incluse dans la cellule
    Par max2245 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 14/01/2007, 19h48
  5. Réponses: 3
    Dernier message: 22/10/2004, 12h04

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