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 [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Divers
    Inscrit en
    Février 2017
    Messages
    295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Divers

    Informations forums :
    Inscription : Février 2017
    Messages : 295
    Par défaut Somme.si en VBA
    Bonjour,

    j'ai un peu cherché et taper 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
    'Private Sub worksheet_activate()
     
    'Dim sel1, sel2, cel As Variant
    'dim i as integer
     
    'For i = 1 To 159
    'Next
     
    'sel1 = sh_GlobalKrc.Range("G2:G" & sh_GlobalKrc.UsedRange.Rows.Count)
    'sel2 = sh_GlobalKrc.Range("D2:D" & sh_GlobalKrc.UsedRange.Rows.Count)
    'cel = range("A" & i)
     
    'WorksheetFunction.SumIf(sel1, cel, sel2)
     
    'End Sub
    Donc j'ai en colonne A, la valeur cherchée et dans la colonne C je voudrais faire la somme.
    Je ne voudrais pas répéter la formule, donc j'ai pensé à une boucle MAIS ????

    Merci pour votre aide

  2. #2
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Bonjour,

    Exemple à adapter à votre fichier:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub worksheet_activate()
        Dim Sel1 As Range, Sel2 As Range
        Dim Cel As String
        Dim DerLig As Long
     
        DerLig = [A1000].End(xlUp).Row 'Dernière ligne de la plage à tester
        Set Sel1 = Range("$A$2:$A$" & DerLig) 'Plage à tester
        Set Sel2 = Range("$B$2:$B$" & DerLig) 'Plage à additionner
        Cel = [D2] 'Critère
        [E2] = WorksheetFunction.SumIf(Sel1, Cel, Sel2)
    End Sub

    avec le fichier:
    Pièce jointe 431655

    Question: Pourquoi dans: Private Sub worksheet_activate() ?

    Cdlt

  3. #3
    Membre éclairé
    Homme Profil pro
    Divers
    Inscrit en
    Février 2017
    Messages
    295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Divers

    Informations forums :
    Inscription : Février 2017
    Messages : 295
    Par défaut
    Merci
    J'ai cherché et j'ai un peu changé le code.

    Cependant, il me donne une erreur d’exécution 424 - objet requis en ligne n° 13. Pourquoi ??

    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
    Sub analysetest()
     
    Dim sel1, sel2, cel As Variant
    Dim i As Byte
    Dim h As Variant
     
        h = Application.CountA(sh_Analyse.Range("A1:A" & sh_Analyse.UsedRange.Rows.Count - 1))
        sel1 = sh_GlobalKrc.Range("G2:G" & sh_GlobalKrc.UsedRange.Rows.Count)
        sel2 = sh_GlobalKrc.Range("D2:D" & sh_GlobalKrc.UsedRange.Rows.Count)
     
    For i = 1 To h
     
        Range("C" & i) = WorksheetFunction.SumIf(sel1, cel, sel2)
     
    Next
     
     
     
    End Sub

  4. #4
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Bonjour,

    Déjà, ce serait bien d'ajouter les 2 dernières lignes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        Dim sel1, sel2, cel As Variant
        Dim i As Byte
        Dim h As Variant
        Set sh_Analyse = Sheets("Analyse")
        Set sh_GlobalKrc = Sheets("GlobalKrc")
    Ensuite, que vaut la variable "Cel" dans:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("C" & i) = WorksheetFunction.SumIf(sel1, cel, sel2)
    Enfin pour faire propre, ajouter ces 2 lignes avant l'instruction End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        Set sh_Analyse = Nothing
        Set sh_GlobalKrc  = nothing
    Cdlt

  5. #5
    Membre éclairé
    Homme Profil pro
    Divers
    Inscrit en
    Février 2017
    Messages
    295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Divers

    Informations forums :
    Inscription : Février 2017
    Messages : 295
    Par défaut
    Code modifié comme demandé.
    Mais pour les 2 lignes set ajoutée, il me dit erreur de compilation, utilisation incorrecte de la propriété

    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 analysetest()
     
    Dim sel1, sel2, cel As Variant
    Dim i As Byte
    Dim h As Variant
    Set sh_Analyse = Sheets("Analyse")
    Set sh_GlobalKrc = Sheets("GlobalKrc")
     
        h = Application.CountA(sh_Analyse.Range("A1:A" & sh_Analyse.UsedRange.Rows.Count - 1))
        sel1 = sh_GlobalKrc.Range("G2:G" & sh_GlobalKrc.UsedRange.Rows.Count)
        sel2 = sh_GlobalKrc.Range("D2:D" & sh_GlobalKrc.UsedRange.Rows.Count)
     
     
    For i = 1 To h
     
        cel = Range("A" & i)
        Range("C" & i) = Application.WorksheetFunction.SumIf(sel1, cel, sel2)
     
    Next
     
        Set sh_Analyse = Nothing
        Set sh_GlobalKrc = Nothing
     
     
     
    End Sub

  6. #6
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Vos 2 feuilles s'appellent bien "Analyse" et "GlobalKrc" ?

+ 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