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 en VBA


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Femme Profil pro
    contrôleur de gestion sociale
    Inscrit en
    Octobre 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : contrôleur de gestion sociale

    Informations forums :
    Inscription : Octobre 2014
    Messages : 6
    Points : 5
    Points
    5
    Par défaut somme si en VBA
    Bonjour,

    Je suis débutante en VBA et je dois automatiser un fichier dans l'entreprise où je réalise mon stage:

    J'ai 2 fichiers
    1/ Données
    2/ Synthèse des données

    La macro que je souhaite réaliser doit me donner ceci :

    1/Dans le fichier synthèse lorsque je clique sur le bouton de ma macro, le fichier données doit s'ouvrir
    2/ Dans le fichier synthèse dans la cellule K5 faire la somme si :
    dans le fichier données en colonne A j'ai le compte "63" et "65" et dans la colonne B "contractuels" alors tu me fait la somme de la colonne H

    Pour ouvrir le fichier (1) pas de souci la macro fonctionne mais c'est mon somme si qui ne fonctionne pas. J'ai testé plusieurs écritures de code et là je craque : il y a soit une erreur d'exécution incompatibilité de type soit une erreur de syntaxe

    Voici quelques exemples de mes tests :

    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 Ouverture_Données()
     
     
    Dim Fichier As Variant
    Dim Données As Workbook
    'Déclare la variable cs comme classeur source
     
    Fichier = Application.GetOpenFilename
     
    If Fichier = False Then Exit Sub
    Workbooks.Open Fichier
    Set Hypothèse_données = ActiveWorkbook
     
     
    Sheets("Synthèse").Activate.Cells("K5").Value = ApplicationWorksheetfunction.SumIf(Données!Range("A:A"), "=63" Or "65" & Range("b:b"), "=contractuels", Range("h:h"))
     
    Else
    MsgBox "ERROR"
     
    End If
     
    End Sub


    2ème essai

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Synthèse").Activate.Cells("K5").Value = ApplicationWorksheetfunction.SumIf(données!Range("A:A"), "63" Or "65" & Range("b:b"), "contractuels", Range("h:h"))
    3ème essai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    If Workbooks("données").Worksheets("Analytique").Columns("A").Select = "63" Or "65" & Columns("b") = "contractuel" Then
     
    Sheets("Synthèse").Cells("5,12").Value = ApplicationWorksheetfunction.Sum(données!Sheets("Analytique").Columns("h"))
     
     
    Else
     
    MsgBox "ERROR"
     
    End If

    ... ET BIEN D'AUTRES ESSAIS!!!!

    Si j'arrive à trouver mon code sur cette ligne, je vais pouvoir l'appliquer à tout mon fichier synthèse..

    help me

  2. #2
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 419
    Points : 16 262
    Points
    16 262
    Par défaut
    Bonjour


    Le ou n'existe pas pas les fonctions SOMME.SI et consœurs : il faut SOMME.SI basé sur une valeur + SOMME.SI basé sur l'autre.

    On peut aussi utiliser SOMMEPROD.

    Cependant ce type de synthèse s'obtient plus simplement avec un TCD...
    Chris
    PowerQuery existe depuis plus de 13 ans, est totalement intégré à Excel 2016 &+. Utilisez-le !

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
    Confucius

    ----------------------------------------------------------------------------------------------
    En cas de résolution, n'hésitez pas cliquer sur c'est toujours apprécié...

  3. #3
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Points : 3 974
    Points
    3 974
    Par défaut
    Bonjour,

    Tu peux également effectuer une somme plus "basique"

    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
    Sub Ouverture_Données()
    Dim Fichier As Variant
    Dim Cel As Range
    Dim SommeH As Double
        Fichier = Application.GetOpenFilename
        If Fichier = False Then Exit Sub
        Application.ScreenUpdating = False
        Workbooks.Open Fichier
        With ActiveWorkbook.Worksheets("Analytique")
            For Each Cel In .Range("A1:A" & .Range("A" & Rows.Count).End(xlUp).Row)
                If (Cel = 63 Or Cel = 65) And Cel.Offset(0, 1) = "contractuels" Then
                    SommeH = SommeH + Cel.Offset(0, 7)
                End If
            Next Cel
        End With
        ThisWorkbook.Sheets("Synthèse").Range("K5") = SommeH
        ActiveWorkbook.Close
    End Sub
    Cordialement.

  4. #4
    Membre expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 267
    Points : 3 663
    Points
    3 663
    Par défaut
    Bonjour,

    Essaie déjà de le faire sur une feuille : tu ne peux pas faire de somme.si() avec un OU.
    Tu dois faire la somme de 2 somme.si(), avec chacune des valeurs à tester.

    eric

    edit : déjà dit par 78chris, désolé

  5. #5
    Membre émérite Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Points : 2 594
    Points
    2 594
    Par défaut
    Bonjour le fil, bonjour le forum,

    Peut-être comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Cel.Value = 63 Or Cel.Value = 65 And Cel.Offset(0, 1) = "contractuels" Then
    À plus,

    Thauthème

    Je suis Charlie

  6. #6
    Futur Membre du Club
    Femme Profil pro
    contrôleur de gestion sociale
    Inscrit en
    Octobre 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : contrôleur de gestion sociale

    Informations forums :
    Inscription : Octobre 2014
    Messages : 6
    Points : 5
    Points
    5
    Par défaut Code bon
    Bonjour à tous,

    Merci pour vos réponses.

    Je ne savais pas que l'opérateur OU ne fonctionne pas avec un somme SI. J'aurais pu chercher longtemps!
    J'ai réussi à faire mon code à partir d'une fonction si basique.
    J'ai appris des choses grâce à vos messages : le déplacement des cellules, la boucle avec le for each

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

Discussions similaires

  1. Somme de cellules vba
    Par Ozer45 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 22/02/2012, 13h22
  2. Somme avec condition vba
    Par Maxgad dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 28/11/2011, 21h39
  3. Somme Prod et VBA
    Par Original266 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 02/07/2008, 14h08
  4. Somme Double sur VBA Macro marche pas
    Par PtitSuisse dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/06/2008, 15h14
  5. somme conditionnelle sous VBA
    Par léclaireur dans le forum Général VBA
    Réponses: 5
    Dernier message: 26/04/2007, 10h32

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