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 :

compter avec des boucles


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    233
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 233
    Points : 92
    Points
    92
    Par défaut compter avec des boucles
    Bonjour,

    Dans le cadre de mon travail, je travaille sur 2 feuilles Excel: Feuil1 et Récap.

    Je souhaite passer en revue toutes les cellules de la colonne B de la Feuil1, puis s'il y a écrit 1995 dedans, alors que je regarde si la cellule de la même ligne et de la colonne J contient AAA. Si c'est le cas, je souhaite additionner 1 à la cellule B2 de ma feuille récap pour compter le nbre de fois que cela s'est produit.

    Voila le bout de code que j'ai écrit jusqu'à mnt mais il ne fonctionne pas. Pouvez-vous m'indiquer les qqes erreurs svp?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    Sub Compte()
     
    Dim i As Integer
    Dim j As Integer
     
    j = 0
     
    For i = 2 To 4001
     
    If Feuil1.Cells(i, "B") = 1995 Then
        If Feuil1.Cells(i, "L") = "AAA" Then
        Récap.Cells(2, "B").Value = j
        j = j + 1
        End If
    End If
     
     
     
    Next
     
    End Sub
    Merci d'avance

  2. #2
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 200
    Points : 14 346
    Points
    14 346
    Par défaut
    Bonsoir,

    En conservant ta logique :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    Sub Compte()
     
    Dim i As Integer
    Dim j As Integer
     
    j = 0
    With Sheets("Récap").Cells(2, "B")
        For i = 2 To 4001
     
            If Sheets("Feuil1").Cells(i, "B") = 1995 Then
                If Sheets("Feuil1").Cells(i, "J") = "AAA" Then
                .Value = .Value + 1
                End If
            End If
     
        Next
        End With
    End Sub
    Tu peux également filtrar les données et compter les lignes visibles, ce qui évite une boucle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub Compte2()
        With Sheets("Feuil1")
            .AutoFilterMode = False
            .[B1:J4001].AutoFilter 1, 1995
            .[B1:J4001].AutoFilter 9, "AAA"
            Sheets("Récap").[B2] = .AutoFilter.Range.SpecialCells(xlCellTypeVisible).Rows.Count - 1
        End With
    End Sub
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    233
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 233
    Points : 92
    Points
    92
    Par défaut
    Super et merci Daniel!

  4. #4
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    Bonjour,

    Pourquoi n'utilises tu pas les formules ?

    A mettre dans la cellule B2 de l'onglet RECAP
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SOMMEPROD((Feuil1!B2:B4001=1995)*(Feuil1!J2:J4001="AAA"))
    Ou en VBA en une seule ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("RECAP").Range("B2").Value = Evaluate("SumProduct((Feuil1!B3:B40 = 1995) * (Feuil1!J3:J40 = ""AAA""))")
    Jérôme

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

Discussions similaires

  1. Problème avec des boucles while/for imbriquées
    Par Nico820 dans le forum Général Python
    Réponses: 12
    Dernier message: 14/12/2012, 17h24
  2. download de plusieurs fichiers avec des boucles
    Par rvm31 dans le forum Langage
    Réponses: 11
    Dernier message: 26/01/2012, 17h23
  3. Bug Maple avec des boucles simples ?
    Par redvivi dans le forum Maple
    Réponses: 0
    Dernier message: 04/01/2011, 17h06
  4. [PHP-JS] Optimisation du code avec des boucles
    Par jiojioforever dans le forum Langage
    Réponses: 3
    Dernier message: 15/06/2007, 17h02
  5. compter avec des lettres
    Par Décibel dans le forum Access
    Réponses: 2
    Dernier message: 19/04/2006, 09h33

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