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 :

PB COUNTIFS Arguments


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2020
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Cantal (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2020
    Messages : 6
    Par défaut PB COUNTIFS Arguments
    Bonjour,

    Je travaille sur un tableau représentant les vainqueurs des JO où je dois surligner les lignes correspondant aux médailles d'or pour un pays selectionné (variable)

    Une âme charitable pourrait-elle m'expliquer pourquoi cette fraction de code est incorrecte ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Gold = WorksheetFunction.CountIfs(F2:F48565, "Selectedcountry", K2:K48565, "Gold")
    Y a t-il un problème en arguments ?

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par harry15 Voir le message
    Bonjour,

    Je ne vais pas vous répondre directement.
    Quand vous ne connaissez pas la syntaxe d'une fonction en VBA, vous la tapez d'abord dans une cellule. Une fois le résultat correct, vous créez une macro et avec la souris, vous vous mettez dans la barre de formule et vous validez votre formule par Enter, vous fermez la macro et vous regardez ce qu'elle vous donne. Il n'y a plus qu'à adapter la notation.

  3. #3
    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
    Pour pouvoir apporter une réponse fiable, il faudrait avoir une copie d'écran d'une partie de tes données et un peu plus du code en amont, mais, à vue de nez, je pense que le problème vient de "Selectdcontry" qui devrait être le nom du pays choisi.
    Mais ne sachant pas si tu as voulu placer là un nom de cellule, de variable ou autre, difficile de te dire comment corriger.

  4. #4
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Par défaut
    Bonjour,
    Quand tu utilises des fonctions dans VBA, il faut que tu utilises l'objet Range.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2020
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Cantal (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2020
    Messages : 6
    Par défaut
    Citation Envoyé par riaolle Voir le message
    Bonjour,
    Quand tu utilises des fonctions dans VBA, il faut que tu utilises l'objet Range.
    Justement même en utilisant un Range, ça ne compile pas.

    Ce qui m'étonne, c'est que lorsque le "Countif" ne dépend que d'une seule condition, ça fonctionne à la perfection:

    Gold = WorksheetFunction.CountIf(Range("K2:K48565"), "Gold")

    Helas, cette fraction de code calcule le nombre total de médailles d'or, or que je souhaite avoir le nombre de medailles d'or pour un pays donné.

  6. #6
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Par défaut
    Comme le dit Menhir, l'erreur vient probablement de "SelectedCountry".
    Est-ce une variable ? Dans ce cas, il ne doit pas y avoir de "". A quel moment est-ce que tu définis le pays en question ? Et comment ?

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2020
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Cantal (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2020
    Messages : 6
    Par défaut
    Citation Envoyé par riaolle Voir le message
    Comme le dit Menhir, l'erreur vient probablement de "SelectedCountry".
    Est-ce une variable ? Dans ce cas, il ne doit pas y avoir de "". A quel moment est-ce que tu définis le pays en question ? Et comment ?
    Oui, il s'agit d'une variable. Ci-joint, une capture d'écran de la façon de mon code. Même sans "" ça ne marche pas.Nom : Capture d’écran 2020-05-01 à 15.48.59.png
Affichages : 437
Taille : 47,7 Ko

  8. #8
    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 harry15 Voir le message
    Ce qui m'étonne, c'est que lorsque le "Countif" ne dépend que d'une seule condition, ça fonctionne à la perfection:
    Gold = WorksheetFunction.CountIf(Range("K2:K48565"), "Gold")
    Parce que CountIf correspond à la fonction Excel NB.SI() qui n'accepte qu'une condition.
    L'équivalent de NB.SI.ENS() est CountIfs.

    Ci-joint, une capture d'écran de la façon de mon code.
    Une capture d'écran est peu pratique étant donné qu'on ne peut pas faire de modification dessus pour corriger les erreurs.
    Il est préférable de recopier la portion de code en texte, de préférence encadré de balises CODE (le bouton #).

    Même sans "" ça ne marche pas.
    Sans doute à cause de ce qui est saisi dans le InputBox.

    Il y a plusieurs autres problèmes dans ton code.

    Tu déclares une variable Gold sans l'utiliser et elle fait étrangement écho à la chaine de caractère Gold utilisée dans le CountIfs.
    Est-ce que tu ne t’emmêlerait pas les pinceaux entre les variables et les données ?

    Tu as déclaré une variable Row, ce qui est le nom d'une propriété.
    C'est vraiment vouloir se tirer une balle dans le pied que de donner à des variables le même nom que des éléments existants dans le langage.
    Un conseil : essaye de donner un nom français à tes variable, tu auras moins de chance d'avoir ce genre de problème.

    Je ne vois pas à quoi sert ta boucle For ... Next puisqu'elle ne contient aucune instruction.
    En gros, elle tourne à vide, sans rien faire.

    Cela dit, dans cette boucle tu as fait une autre grosse erreur mais qui est un coup de chance, d'une certaine façon, en utilisant xlDown comme limite.
    xlDown est une constante système qui vaut -4121 et rien d'autre.
    Donc, comme ce nombre est inférieur à ta limite inférieure (1), l'exécution ne rentre même pas dans ta boucle For Next.

    Je ne vois pas non plus ce que vient faire ce If au milieu.

    Il y a plusieurs autres erreurs mais tu devrais déjà corriger ça.

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2020
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Cantal (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2020
    Messages : 6
    Par défaut
    Citation Envoyé par Menhir Voir le message
    Parce que CountIf correspond à la fonction Excel NB.SI() qui n'accepte qu'une condition.
    L'équivalent de NB.SI.ENS() est CountIfs.
    Justement Mehir, j'ai bien tenté de faire un CountIfs pour plusieurs conditions mais rien n'y fait ..

  10. #10
    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
    Voir l'Edit que j'ai fait dans ma réponse précédente.

Discussions similaires

  1. Arguments pour et contre Access ?
    Par bottura dans le forum Sondages et Débats
    Réponses: 240
    Dernier message: 23/03/2018, 23h25
  2. Réponses: 3
    Dernier message: 07/04/2003, 20h06
  3. Récuperer Arguments sur la ligne de commande ?
    Par Muetdhiver dans le forum x86 16-bits
    Réponses: 9
    Dernier message: 20/01/2003, 21h01
  4. fonction renvoyant un tableau en argument
    Par Jones dans le forum Langage
    Réponses: 6
    Dernier message: 30/09/2002, 18h20
  5. Procédure avec un nombre variable d'arguments
    Par charly dans le forum Langage
    Réponses: 15
    Dernier message: 21/06/2002, 11h08

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