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 :

Problème pour insérer une formule 'sumif' [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur méthodes
    Inscrit en
    Mars 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur méthodes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2012
    Messages : 5
    Par défaut Problème pour insérer une formule 'sumif'
    Bonjour,
    Je galère depuis hier sur un problème. Et je vous assure que j'ai écumé tous les forums, mais je ne trouve pas de solution...

    Voici mon problème. Je suis en train de créer une feuille Excel pour que ma fille puisse gérer simplement son compte bancaire (oui je sais il existe plein de logiciels pour ça, mais j'aime les défis).
    Dans une cellule se trouve le montant rapproché, c'est à dire la différence entre les revenus et les dépenses qui ont été pointés. Les revenus se trouvent dans la colonne D, les dépenses dans la colonne E et les pointages dans la colonne G (sous forme d'un "R").

    Lorsque je tape une formule directement dans la cellule en question tout va bien. Cette formule est :
    =SOMME.SI(G10:G16;"R";D10: D16)-SOMME.SI(G10:G16;"R";E10:E16)
    Le problème c'est que lorsque j'ajoute une ligne de revenu (ou de dépense) cette formule ne se met pas à jour. Donc je voulais la modifier par programmation.

    Et à chaque essai je me retrouve avec une 'erreur d'exécution 1004 : erreur définie par l'application ou par l'objet'.
    La formule simplifiée que j'utilise est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveCell.Formula = "=SUMIF(" & Range("G10:G16").Address(0, 0) & ";""R"";" & Range("D10: D16").Address(0, 0) & ")"
    Le résultat que j'obtiens sans mettre "=" devant "SUMIF" est correct, mais en l'état ça ne marche pas.

    Pourtant j'arrive au résultat avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveCell.Formula = Application.SumIf(Range("G10:G16"), "R", Range("D10: D16"))
    mais j’obtiens une valeur, pas une formule.

    Juste pour information, je modifie de cette manière une autre cellule mais avec la fonction 'SUM' et ça fonctionne parfaitement.

    Merci à vous si vous pouvez m'aider.

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 166
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Lorsque je tape une formule directement dans la cellule en question tout va bien. Cette formule est :
    =SOMME.SI(G10:G16;"R";D10: D16)-SOMME.SI(G10:G16;"R";E10:E16)
    Le problème c'est que lorsque j'ajoute une ligne de revenu (ou de dépense) cette formule ne se met pas à jour. Donc je voulais la modifier par programmation.
    C'est tout à fait normal qu'en ajoutant une ligne la formule ne soit pas étendue.

    Je ne peux que vous conseiller d'utiliser les tableaux structurés avant de vous attaquer au VBA

    Un tutoriel à lire Apprendre à utiliser les tableaux structurés Excel : création, manipulations et avantages(1)

    et accessoirement en téléchargeant les mouvements bancaires en format csv et en utilisant PowerQuery vous gagneriez beaucoup de temps et votre fille également. Une fois le modèle de données définit, c'est un simple clic droit et la commande "actualiser"
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur méthodes
    Inscrit en
    Mars 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur méthodes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2012
    Messages : 5
    Par défaut
    Merci pour votre réponse.

    Je sais bien que je ne suis pas un pro d'Excel. Je ne connais pas ces tableaux structurés mais je vais me pencher sur la question.

    Pour ce qui est de PowerQuery c'est sûr qu'il y a beaucoup de solutions plus simples que celle que j'ai choisie (je l'évoque d'ailleurs dans mon message original), mais le travail que j'ai entrepris me permet aussi de me "former" à diverses fonctionnalités d'Excel et à progresser.
    C'est entre autres choses pour cette raison que j'aimerais comprendre ce qui ne va pas dans mon code.

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 166
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    C'est entre autres choses pour cette raison que j'aimerais comprendre ce qui ne va pas dans mon code.
    Pour en savoir plus sur l'écriture de formules dans une plage de cellules en utilisant le VBA
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Membre Expert
    Homme Profil pro
    Ingénieur
    Inscrit en
    Août 2010
    Messages
    697
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2010
    Messages : 697
    Par défaut
    Bonjour,

    Il est toujours intéressant pour déboguer une formule Excel écrite en VBA de passer par la consultation d'une formule similaire écrite directement dans Excel.
    Exemple (à visualiser dans la fenêtre Exécution de VBE):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Debug.Print [A3].Formula
    où la case A3 contient la formule Excel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SOMME.SI(G10:G16; "R"; D10:D16)
    à comparer à ton texte:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Debug.Print "=SUMIF(" & Range("G10:G16").Address(0, 0) & ";""R"";" & Range("D10: D16").Address(0, 0) & ")"
    On voit alors tout de suite que le problème est que tu as utilisé le point-virgule comme séparateur alors que les formules Excel en anglais utilisent la virgule.


    Sinon, je suis d'accord avec Philippe: passer par du VBA pour que la plage pointée par la formule s'étende n'est pas la bonne solution. Il faut utiliser un tableau structuré dont c'est l'un des apports majeurs.

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur méthodes
    Inscrit en
    Mars 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur méthodes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2012
    Messages : 5
    Par défaut
    J'ai trouvé !
    Il suffit de remplacer les ';' par des ',' (formulation anglaise...)
    Merci.

    PS : nos messages se sont croisés.

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

Discussions similaires

  1. Problème pour insérer une formule dans un code VBA
    Par ti_mouton dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 21/07/2015, 18h02
  2. [Joomla!] Problème pour insérer une vidéo en module
    Par youza dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 0
    Dernier message: 15/04/2010, 10h29
  3. Problème pour insérer une image
    Par merwandonut dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 3
    Dernier message: 20/04/2008, 20h01
  4. Problème pour insérer une image
    Par Paulinho dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 4
    Dernier message: 26/04/2006, 23h36
  5. Probléme pour insérer une variable dans un champs
    Par BOUTRAIS dans le forum Access
    Réponses: 2
    Dernier message: 11/04/2006, 22h45

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