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 :

VBA-E: Macro de comptage multiple sous condition


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Specific project support
    Inscrit en
    Février 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Specific project support

    Informations forums :
    Inscription : Février 2014
    Messages : 6
    Points : 5
    Points
    5
    Par défaut VBA-E: Macro de comptage multiple sous condition
    Bonjour,

    J'essaie de créer une macro permettant pour une colonne variable en longueur, de compter selon des conditions.
    Exemple:

    Book1.xls

    Si les valeurs en A sont < que 70 alors il additionne le nombre de valeur correspondant à la condition en $B$1
    Si les valeurs en A sont 70 <= X < 90 alors il additionne le nombre de valeur correspondant à la condition en $B$2
    Si les valeurs en A sont >= à 90 alors il additionne le nombre de valeur correspondant à la condition en $B$3

    Merci d'avance...

  2. #2
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Points : 1 199
    Points
    1 199
    Par défaut
    Bonjour,
    Je ne comprends pas la question ou il y a une erreur dans l'exemple.
    Files nous ton code en indiquant où tu coinces.
    Cordialement

  3. #3
    Membre actif
    Homme Profil pro
    Pompier de service
    Inscrit en
    Février 2014
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Pompier de service

    Informations forums :
    Inscription : Février 2014
    Messages : 144
    Points : 223
    Points
    223
    Par défaut


    Bein... simplement :
    - En $B$1, la formule : =NB.SI(A:A;"<70")
    - En $B$2, la formule : =NB.SI(A:A;">=70";A:A;"<90")
    - En $B$3, la formule : =NB.SI(A:A;">=90")

    Non ?
    "Rien ne sert de dire ce qu'on fait, si on ne fait pas ce qu'on dit" (Moi)

  4. #4
    Expert éminent sénior 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
    Points : 32 866
    Points
    32 866
    Par défaut
    Visiblement, entre tes spécifications et tes exemples, tu as inverser lignes et colonnes.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Specific project support
    Inscrit en
    Février 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Specific project support

    Informations forums :
    Inscription : Février 2014
    Messages : 6
    Points : 5
    Points
    5
    Par défaut update
    Voilà, j'ai mis à jour avec un petit fichier excel et j'ai mieux expliqué dans le texte.
    J'espere être plus clair...

  6. #6
    Membre éprouvé Avatar de keygen08
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations forums :
    Inscription : Octobre 2012
    Messages : 545
    Points : 973
    Points
    973
    Par défaut
    Bonjour
    Je susi assez d'accord avec phil'oche
    sinon comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Worksheet_Activate()
    For Each cell In Range("a1:a" & [a65000].End(xlUp).Row)
    If cell < 70 Then c1 = c1 + cell
    If cell >= 70 And cell < 90 Then c2 = c2 + cell
    If cell >= 90 Then c3 = c3 + cell
    Next cell
    [b1] = c1
    [b2] = c2
    [b3] = c3
    End Sub
    ou comme cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Worksheet_Activate()
        [b1].FormulaR1C1 = "=COUNTIF(C[-1],""<70"")"
       [b2].FormulaR1C1 = "=COUNTIF(C[-1],"">=70"";A:A;""<90"")"
       [b3].FormulaR1C1 = "=COUNTIF(C[-1],"">90"")"
    End Sub

  7. #7
    Expert éminent sénior 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
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par keygen08 Voir le message
    Je susi assez d'accord avec phil'oche
    +1
    Il vaut toujours mieux une petite fonction qu'une macro, quand c'est possible (plus souple, plus lisible, plus dynamique).
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Specific project support
    Inscrit en
    Février 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Specific project support

    Informations forums :
    Inscription : Février 2014
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Le premier fonctionne mais additionne les valeur des cellules au lieu d'effectuer un comptage lorsque la condition est remplie.
    Le deuxieme fonctionne mais countif ne prend pas deux conditions??




    Citation Envoyé par keygen08 Voir le message
    Bonjour
    Je susi assez d'accord avec phil'oche
    sinon comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Worksheet_Activate()
    For Each cell In Range("a1:a" & [a65000].End(xlUp).Row)
    If cell < 70 Then c1 = c1 + cell
    If cell >= 70 And cell < 90 Then c2 = c2 + cell
    If cell >= 90 Then c3 = c3 + cell
    Next cell
    [b1] = c1
    [b2] = c2
    [b3] = c3
    End Sub
    ou comme cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Worksheet_Activate()
        [b1].FormulaR1C1 = "=COUNTIF(C[-1],""<70"")"
       [b2].FormulaR1C1 = "=COUNTIF(C[-1],"">=70"";A:A;""<90"")"
       [b3].FormulaR1C1 = "=COUNTIF(C[-1],"">90"")"
    End Sub

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Specific project support
    Inscrit en
    Février 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Specific project support

    Informations forums :
    Inscription : Février 2014
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    J'ai trouvé la bonne manière de le formuler:

    =COUNTIFS(F2:F18;">=70";F2:F18;"<90")

    Merci

    Citation Envoyé par acipolla Voir le message
    Le premier fonctionne mais additionne les valeur des cellules au lieu d'effectuer un comptage lorsque la condition est remplie.
    Le deuxieme fonctionne mais countif ne prend pas deux conditions??

  10. #10
    Membre éprouvé Avatar de keygen08
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations forums :
    Inscription : Octobre 2012
    Messages : 545
    Points : 973
    Points
    973
    Par défaut
    effectivement, je me suis un peu emmeller entre compter les valeurs et faire la somme
    la bonne orthographe aurait été

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Worksheet_Activate()
    For Each cell In Range("a1:a" & [a65000].End(xlUp).Row)
    If cell < 70 Then c1 = c1 + 1
    If cell >= 70 And cell < 90 Then c2 = c2 + 1
    If cell >= 90 Then c3 = c3 + 1
    Next cell
    [b1] = c1
    [b2] = c2
    [b3] = c3
    End Sub

Discussions similaires

  1. Problème VBA : suppression de lignes sous conditions multiples
    Par mia73 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 17/10/2012, 19h42
  2. macro swap de colonnes sous conditions
    Par stevenP dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 20/03/2012, 18h17
  3. [XL-2007] Macro de recherche et comptage sous condition
    Par Steph843 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 18/12/2011, 21h19
  4. Macro coloration de cellules sous conditions
    Par balata9 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 20/09/2010, 21h29
  5. macro vba identifier cellule sous condition
    Par yanacrux dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 03/03/2009, 14h00

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