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 sans doublon avec condition


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Femme Profil pro
    Elève-Ingénieur
    Inscrit en
    Mars 2018
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Elève-Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2018
    Messages : 15
    Par défaut Compter sans doublon avec condition
    Bonjour à tous,
    je cherche a avoir le nombre de données sans doublons dans ma colonne F. Mais je voudrais prendre en compte une condition, pour que excel compte les données en F sans doublon, si en C il y a "complet" mais je n'arrive pas a le faire soit en VBA ou en formules simples d'excel.

    Par exemple pour ce cas:

    Nom : Capture.PNG
Affichages : 1985
Taille : 3,2 Ko

    ça me retourne 2, car on a un code ayant comme état "complet" qui se répète deux fois pour le code 1234.

    Merci d'avance.

  2. #2
    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
    Solution simple à faire à la main ou en VBA :

    Tu copies l'onglet.
    Dans la copie, tu supprimes les doublons (RemoveDuplicate en VBA).
    Tu comptes les "Complets" restant avec une fonction NB.SI (COUNTIF en VBA, à utiliser avec un Evaluate ou WorksheetFunction).
    Tu supprimes l'onglet copie.

    Ca n'est pas très subtil comme solution mais c'est simple et efficace.

    En se creusant un peu la tête, il est sans doute possible de faire ça aussi avec une fonction matricielle.

  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
    Une solution en formule matricielle.
    En supposant que tes données vont de la ligne 2 à la ligne 100 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SOMME(SI((C2:C100="complet")*NB.SI(DECALER(F$2;0;0;LIGNE(F2:F100));F2:F100)=1;1;0))
    A valider avec Ctrl+Shift+Entrée comme toute formule matricielle.

  4. #4
    Membre averti
    Femme Profil pro
    Elève-Ingénieur
    Inscrit en
    Mars 2018
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Elève-Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2018
    Messages : 15
    Par défaut
    Je préfère que ça soit sur VBA mais ça ne parait pas évident vu que le nombre de ligne que j'ai est dynamique que je compte par VBA aussi (.End(xlDown).Row).
    Autrement j'aimerais bien trouver une façon plus légère que de copier les données et supprimer les doublons.
    je ne m'y connais pas en formules matricielles, je vais me documenter, or je ne crois pas que celle-ci pourra prendre en compte le fait que le nombre de ligne est indéfini, et si on veut la faire pour le maximum de ligne ça craint de prendre beaucoup de temps.
    Pourriez vous s'il vous plait m'aider sur la macro?

  5. #5
    Membre averti
    Femme Profil pro
    Elève-Ingénieur
    Inscrit en
    Mars 2018
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Elève-Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2018
    Messages : 15
    Par défaut
    Voilà j'ai fait une tentative sur VBA mais ça ne marche pas ça me retourne 0:
    voici le code
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    Sub compter_uniques()
     
    Dim unique As New Collection
    Dim lastrow As Integer
    Dim BIL As Worksheet
    Dim D As Worksheet
    Dim ArticleHB As String
     
     
    On Error Resume Next
     
    Set D = Worksheets("DATA")
    Set BIL = Worksheets("Bilancache")
     
    ArticleHB = "complet"
     
    lastrow = D.Range("F3").End(xlDown).Row
     
    For Each cel In D.Range("F3:F" & lastrow)
    'For i = 4 To lastrow
        If D.Cells(cel.Row, 7).Value = ArticleHB Then
        unique.Add cel.Value, CStr(cel.Value)
        End If
    'Next i
    Next cel
     
     
    BIL.Cells(13, 6).Value = unique.Count
     
     
    End Sub
    Help svp !

  6. #6
    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 Fayrouzam Voir le message
    je ne m'y connais pas en formules matricielles, je vais me documenter, or je ne crois pas que celle-ci pourra prendre en compte le fait que le nombre de ligne est indéfini,
    Il suffit d'inclure dans la matrice de recherche de la formule une nombre de lignes raisonnable pouvant garantir sa pérennité pour une certaine durée.
    Et si un jour ton nombre de lignes dépassent la zone prévue, il suffira d'ajuster la formule.

    Quoi que... si tu rajoutes les nouvelles lignes par insertion, la formule s'adaptera toute seule.

    et si on veut la faire pour le maximum de ligne ça craint de prendre beaucoup de temps.
    Fais un essai avant de faire ce type d'affirmation.

    Pourriez vous s'il vous plait m'aider sur la macro?
    Je l'ai déjà fait.
    Je t'ai indiquer une méthode simple qui fonctionne. Tu ne veux pas en tenir compte, c'est ton choix.

    Citation Envoyé par Fayrouzam Voir le message
    Voilà j'ai fait une tentative sur VBA mais ça ne marche pas ça me retourne 0:
    Commence par supprimer On Error Resume Next.

  7. #7
    Membre averti
    Femme Profil pro
    Elève-Ingénieur
    Inscrit en
    Mars 2018
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Elève-Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2018
    Messages : 15
    Par défaut
    Merci, ça a marché !

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

Discussions similaires

  1. [Toutes versions] Compter le nombre de cellules sans doublons avec une condition
    Par Mimita64 dans le forum Excel
    Réponses: 2
    Dernier message: 02/12/2012, 20h39
  2. [XL-2003] Créer un bouton filtre sans doublon avec cellule protégée
    Par sevy1 dans le forum Excel
    Réponses: 12
    Dernier message: 11/01/2012, 19h34
  3. Compter éléments TCD avec condition
    Par germ75 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 20/06/2011, 16h09
  4. [MySQL] listbox sans doublon avec disabled
    Par akara dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 23/03/2009, 15h17
  5. Compter sans doublons
    Par Beltegeuse dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 21/04/2008, 11h57

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