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 :

Erreur formule sumif


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Référent technique
    Inscrit en
    Février 2021
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Référent technique

    Informations forums :
    Inscription : Février 2021
    Messages : 37
    Par défaut Erreur formule sumif
    Bonsoir,

    Pour mon taf, je suis en train de créer une formule somme.si.
    Le range doit être mouvant, j'ai donc adapté mon code, comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    charges_mig = WorksheetFunction.SumIf(Sheets(page).Range("G8:" & Sheets(page).Cells(8, total_charges)), "MIG", Sheets(page).Range("G" & charges_directes & ":" & Sheets(page).Cells( _
                charges_directes, total_charges)))
    Dans ce code, page = 24, total_charges = 17 et charges_directes = 30. Les variables sont bonnes et se sont bien calculées.
    Mis bout à bout, cela donnerait:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    charges_mig = WorksheetFunction.SumIf(Sheets(24).Range("G8:P8"), "MIG", Sheets(24).Range("G30:P30"))
    Où mon code foire-t-il svp?

    Merci d'avance

  2. #2
    Membre Expert
    Inscrit en
    Septembre 2007
    Messages
    1 142
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 142
    Par défaut
    Bonsoir,
    Où mon code foire-t-il svp?
    Je dirais que tes ranges ne sont pas ceux que tu crois : par exemple

    charges_mig = WorksheetFunction.SumIf(Sheets(page).Range("G8:P" & Sheets(page).Cells(8, total_charges)), "MIG", Sheets(page).Range("G" & charges_directes & ":P" & Sheets(page).Cells( charges_directes, total_charges)))

  3. #3
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 441
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 441
    Par défaut
    Bonjour,

    Voir si ce n'est pas ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    charges_mig = WorksheetFunction.SumIf(Range(Sheets(Page).Range("G8"), Sheets(Page).Cells(8, total_charges)), "MIG", _
                  Range(Sheets(Page).Range("G" & charges_directes), Sheets(Page).Cells(charges_directes, total_charges)))
    Cordialement.

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 537
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 537
    Par défaut
    Salut,

    Fait plusieurs petites instructions plutôt qu'une grosse fourre-tout foireuse impossible à débugger:
    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
        Dim Wb As Excel.Workbook
        Set Wb = ThisWorkbook
     
        Dim Ws As Excel.Worksheet
        Set Ws = Wb.Worksheets(page)
     
        Dim Plage As Excel.Range
        Set Plage = Ws.Range("G8:P" & Ws.Cells(8, total_charges))
     
        Dim Critere As String
        Critere = "MIG"
     
        Dim Somme_Plage As Excel.Range
        Set Somme_Plage = Ws.Range("G" & charges_directes & ":P" & Ws.Cells(charges_directes, total_charges))
     
        Dim charges_mig As Double    '// Je suppose que c'est un double, à corriger si necessaire
        charges_mig = Application.WorksheetFunction.SumIf(Plage, Critere, Somme_Plage)

  5. #5
    Membre averti
    Homme Profil pro
    Référent technique
    Inscrit en
    Février 2021
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Référent technique

    Informations forums :
    Inscription : Février 2021
    Messages : 37
    Par défaut
    Citation Envoyé par EricDgn Voir le message
    Bonjour,

    Voir si ce n'est pas ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    charges_mig = WorksheetFunction.SumIf(Range(Sheets(Page).Range("G8"), Sheets(Page).Cells(8, total_charges)), "MIG", _
                  Range(Sheets(Page).Range("G" & charges_directes), Sheets(Page).Cells(charges_directes, total_charges)))
    Cordialement.
    Bonjour à tous et merci pour vos réponses.
    Désolé pour le délai de réponse, j'étais passé sur autre chose, j'ai enfin pu me dégager du temps pour retravailler sur mon document.

    Eric, ton code était le bon, en gros il faut imbriquer 2 range dans un range pour que cela fonctionne, merci beaucoup

Discussions similaires

  1. Erreur formule Sumifs et date
    Par HABILER dans le forum Excel
    Réponses: 1
    Dernier message: 14/10/2021, 12h52
  2. [XL-2007] Mettre en boucle la formule SumIf ou SommeSi
    Par rvtoulon dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 24/09/2009, 19h27
  3. Erreur formules Champs calculé
    Par relena93 dans le forum SharePoint
    Réponses: 3
    Dernier message: 16/03/2009, 16h58
  4. Erreur formule dans formulaire
    Par Laure041 dans le forum IHM
    Réponses: 2
    Dernier message: 10/04/2008, 10h54
  5. [CR XI] Erreur formule pour calculer pourcentage
    Par campia dans le forum Formules
    Réponses: 1
    Dernier message: 19/07/2007, 10h35

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