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 :

Fonction Count if (condition sur une cellule) VBA [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2016
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Novembre 2016
    Messages : 27
    Par défaut Fonction Count if (condition sur une cellule) VBA
    Bonjour à tous,

    Je souhaite simplement en cellule K6 compter le nombre de valeurs d'une colonne (la colonne D de l'onglet 1 - Calculs1) qui sont supérieures à une valeur contenue dans une cellule (elle-même calculée) mais je trouve toujours zéro...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("K6").Value = Application.CountIf(Sheets("1 - Calculs1").Range("D3:D" & DerniereLigne), ">" & Range("G4"))
    A noter que ma variable DerniereLigne fonctionne bien.
    A noter également que si je remplace Range("G4") par un nombre, par exemple 14 (qui est d'ailleurs la valeur contenue dans la cellule G4), le compteur fonctionne bien.
    Je n'ai pas spécifié l'onglet de la cellule G4 car je suis sur mon onglet actif.

    J'espère avoir été clair et que vous pourrez m'aider

    A très vite et merci,

    Alexis (noob en VBA )

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    Salut,

    une regle assez importante a connaitre, si tu utilises :
    - un niveau Range() uniquement, pas de soucis
    - un niveau Range() et un niveau Worksheets(), tout doit etre code en Worksheets()
    - un niveau Range() et un niveau WOrksheets() et un niveau Workbooks(), tout doit etre code en Workbooks()

    Cela t'evite d'avoir une incertitude sur la cellule sur laquelle tu penses pointer.

    Autre approche, plutot que de passer par la valeur et le countif VBA, essaie de passer par la Formula :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("K6").Formula= "=COUNTIF('1 - Calculs1'!D3:D" & DerniereLigne & ",>" & Range("G4").Value & ")"
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

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

    Informations professionnelles :
    Activité : salarié

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

    Vaut mieux préciser, ça évite les confusions :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.Range("K6").Value = Application.CountIf(Sheets("1 - Calculs1").Range("D3:D" & DerniereLigne), ">" & ActiveSheet.Range("G4"))
    [Édition]
    Bonjour Jean-Philippe, nos posts se sont croisés...

  4. #4
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2016
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Novembre 2016
    Messages : 27
    Par défaut
    Bonjour,

    Merci à tous les deux pour vos réponses rapides, malheureusement les solutions que vous proposez ne fonctionnent pas...
    La solution de Jean-Philippe me remonte une erreur (je vais creuser mais je préfère utiliser des valeurs plutôt que des formules - dans ce cas précisément).
    La solution de Thautheme me renvoie toujours zéro (alors que dans ma colonne, il y a bien une valeur répondant au critère !). Mais je comprends bien l'utilité de spécifier le classeur et l'onglet, ça ne mange (presque) pas de pain comme on dit !
    Je vais continuer à investiguer, mais encore merci !

    Alexis

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

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Par défaut
    Re,

    J'ai recrée un onglet reprenant ton contexte et ça marche. Sélectionne l'onglet Feuil2 et lance la procédure Macro1 du module Module1.

    Fichiers attachés Fichiers attachés

  6. #6
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2016
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Novembre 2016
    Messages : 27
    Par défaut
    Effectivement...

    Je vais voir dans mes données ce qui bugg mais oui, la ligne de code est bonne...

    Vraiment merci en tout cas !

    A bientôt,

    Alexis

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

Discussions similaires

  1. [XL-2010] condition sur une cellule d'une plage de cellule
    Par nicogti dans le forum Excel
    Réponses: 3
    Dernier message: 02/03/2016, 17h55
  2. Condition sur une cellule
    Par idhmida dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 02/01/2014, 11h36
  3. Condition sur une cellule personnalisée
    Par NassMcN dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 30/07/2013, 14h57
  4. Condition sur une cellule sélectionnée
    Par bastienb1 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 03/05/2013, 14h27
  5. Réponses: 2
    Dernier message: 19/05/2006, 18h42

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