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 avec Countif


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
    Étudiant
    Inscrit en
    Février 2020
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Indre (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2020
    Messages : 23
    Par défaut problème avec Countif
    Bonjour,
    je souhaite utiliser la formule NB.SI(I$4:I$4099;">-y") dans VBA mais il se bloque à la ligne 7
    je ne vois pas le pb, j'ai tenté d'autre façon d'écrire sans succès

    j'ai bien vu ce sujet https://www.developpez.net/forums/d1...efinie-boucle/ mais il ne met pas la solution

    voyez vous l'erreur de syntaxe?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
                'calcul du nombre de valeurs suppérieur à -10,-11,-12,-13,..,-20
                Y = 10
                For X = 8205 To 8215
                'cellule(x,I)=appliquer formule (=NB.SI(I$4:I$4099;">-y"))
                Set MaPlage = Range(Cells(4, 9), Cells(iDerLig, 9))
                Cells(X, 9) = Application.WorksheetFunction.CountIf(MaPlage, "" > -"&y&""")
                Y = Y + 1
                Next

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2010
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 194
    Par défaut
    Bonjour,

    essai ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(X, 9) = WorksheetFunction.CountIf(MaPlage, """>-" & y & """")

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2020
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Indre (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2020
    Messages : 23
    Par défaut
    non ça marche toujours pas, il met toujours
    erreur d'exécution '13': incompatibilité de type

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2010
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 194
    Par défaut
    Essai ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(X, 9).Value = WorksheetFunction.CountIf(MaPlage, """>-" & y & """")
    si cela ne fonctionne toujours pas revois le dimensionnement de tes variables x et y

    de plus pourquoi ce moins dans ta formule ? une variable dimensionné à long peu très bien contenir un nombre négatif et du coup y=y-1 ferait très bien l'affaire

  5. #5
    Membre très actif
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    364
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 364
    Par défaut
    Bonjour …

    Avec Option Explicit on est obligé de déclarer les variables* (comme il se doit) d’où une adaptation de ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     Option Explicit
     Sub t()
        Dim y As Integer, x As Integer, Maplage As Range
        …
        y = 10
        Set Maplage = Range("I4:I4099")        ‘attention à la feuille contenant cette plage
        For x = 8205 To 8215
          Cells(x, 9) = Application.CountIf(Maplage, ">-" & y)
          y = y + 1
        Next
    *pas obligatoire mais très utile !

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut.

    Pourrais-tu expliquer en français (sans jargon Excel ou VBA) ce que tu cherches à réaliser, avec une copie d'écran à la clé?
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2020
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Indre (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2020
    Messages : 23
    Par défaut
    Citation Envoyé par OrDonc Voir le message
    Bonjour …

    Avec Option Explicit on est obligé de déclarer les variables* (comme il se doit) d’où une adaptation de ton code[...]

    c'est la solution UN GRAND MERCI Ordonc



    Citation Envoyé par Pierre Fauconnier Voir le message
    Salut.

    Pourrais-tu expliquer en français (sans jargon Excel ou VBA) ce que tu cherches à réaliser, avec une copie d'écran à la clé?
    en gros, j'ai une plage de 4100 ligne avec des valeurs variant entre -20 et 10
    Objectif:
    je voulais compter le nb de valeur supérieur à -10, le nb de valeur supérieur à -11, le nb de valeur supérieur à -12, ..., le nb de valeur supérieur à -20
    le X correspond à la ligne ou va être mise la valeur (le nb supérieur à __)
    le Y permet d'incrémenté le -10 pour aller à -20

  8. #8
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Ok. Je me posais la question du pourquoi ajouter ces formules en VBA...

    Normalement, on travaille dans l'autre sens: Plutôt que d'amener les formules dans le classeur source, on amène les données dans le classeur de traitement, idéalement dans un tableau structuré (ou plusieurs) car le tableau structuré, comme je le précise dans le tuto, s'adapte aux nouvelles lignes de données, et ce classeur contient déjà les formules, graphiques, TCD et tous les outils nécessaires à l'exploitation des données. Cela demande en général moins de traitement de travailler dans ce sens...

    Dans ton cas, un TCD fait l'affaire sans formules, par exemple. C'est juste de la conception de classeur, en fait Ca n'a à tout le moins pas de sens d'utiliser du code pour faire cela, surtout sur une plage dont l'adresse est hardcodée. Les fonctions d'ensemble telles que celle utilisée ici sont normalement utilisées sur des tableaux structurés et il est souvent toujours improductif d'utiliser des adresses de plage "en dur" dans du code.

    Bon courage pour la suite (tu risques d'en avoir besoin )
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

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

Discussions similaires

  1. [XL-2010] problème avec Countifs
    Par moi244 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 19/11/2012, 23h01
  2. [XL-2007] problème avec la fonction CountIf
    Par dodo69 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 05/01/2011, 16h29
  3. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 18h48
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

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