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 :

Calcul d'occurrences uniques des valeurs dans une ou deux colonne avec nombre de lignes très importants


Sujet :

Macros et VBA Excel

  1. #41
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    1 020
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 1 020
    Points : 169
    Points
    169
    Par défaut
    Après correction:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub test()
    Dim f2 As Worksheet
    Set D = CreateObject("Scripting.Dictionary")
    Set f2 = Sheets(2)
       TblBD1 = f2.Range("A1:A" & f2.Range("A" & Rows.Count).End(xlUp).Row, "E1:E" & f2.Range("E" & Rows.Count).End(xlUp).Row)
     
        For I = 1 To UBound(TblBD1)
        clé = TblBD1(I, 1) & TblBD1(I, 2)
        D(clé) = D(clé)
        Next I
        MsgBox D.Count - 1
    End Sub
    Mais même résultat qu'avec une seule colonne.

  2. #42
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 914
    Points : 5 121
    Points
    5 121
    Par défaut
    et ma dernière réponse??
    --------------------------------------------------------------*****----------------------------------------------------------------------------
    Bonne Continuation & Plein Succès
    Notre seul pouvoir véritable consiste à aider autrui avec modestie
    ______________________________________________________
    Pour dire merci, cliquer sur et quand la discussion est résolue, penser à cliquer sur le bouton

  3. #43
    Membre éprouvé Avatar de Alex020181
    Homme Profil pro
    Prestataire informatique développeur d'application Excel, Access, VBA
    Inscrit en
    Juin 2012
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Prestataire informatique développeur d'application Excel, Access, VBA

    Informations forums :
    Inscription : Juin 2012
    Messages : 569
    Points : 1 006
    Points
    1 006
    Par défaut
    Ah c'est nettement plus simple avec des exemples concrets

    Citation Envoyé par Kestion100 Voir le message
    pour reprendre ton fichier:

    Origine:

    0
    1
    6
    0
    4
    10
    1
    .
    .
    .

    Dans cette colonne j'ai 5 valeurs différentes:

    0
    1
    6
    4
    10

    C'est ce chiffre que je cherche à obtenir
    Citation Envoyé par Kestion100 Voir le message
    Sur 2 colonnes, plus ardu:


    0 1
    3 2
    0 1
    4 1
    6 2
    .
    .
    .

    Ici, 4 couples différents:

    0 1
    3 2
    4 1
    6 2

    4 est le chiffre que je cherche
    Je t'ai modifié mon fichier. Tu as toujours le premier bouton pour le compte général et je t'ai mis un second bouton pour faire le compte précis d'élément des listes sans doublons comme demandé dans ces 2 postes.

    Pour cette nouvelle analyse je t'ai mis en B1 le compte par code et en C1 le compte par formules (idem E1 et F1).

    PS; à toi de simplifier le code car une partie de ce que j'ai fait correspond à la création de la feuille "Analyses" en plus du simple compte.
    Fichiers attachés Fichiers attachés
    C'est toujours sympa de savoir si on vous a aidé ou non. Pensez-y

    N'hésitez pas à marquer le sujet comme résolu le cas échéant.

  4. #44
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    1 020
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 1 020
    Points : 169
    Points
    169
    Par défaut
    Je crois comprendre que tu passes effectivement par une suppression des doublons:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("analyses").Range("G1:H1048576").RemoveDuplicates Columns:=VBA.Array(1, 2), Header:=xlYes
    Tu les mets dans un Array:

    C'est bien ça?


    Après, un Ubound sur cet Array serait bon pour moi si c'est possible????

  5. #45
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    1 020
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 1 020
    Points : 169
    Points
    169
    Par défaut
    En tout cas, en alimentant un array avec un remove duplicate si c'est possible.
    Mais j'ai cru comprendre que la solution proposée par THAUTHEME revient à alimenter d'abord un array puis à effectuer ce qui revient à un array, et ça à l'air de fonctionner pour une colonne mais pas pour 2.

    Ton code me paraît parfait mais si je pouvais "virtualiser" l'étape remove duplicate, et ce sur 2 colonnes, j'aurais exactement ce que je chercher

  6. #46
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    1 020
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 1 020
    Points : 169
    Points
    169
    Par défaut
    Trouvé:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Set O = Worksheets(2) 'définit l'onglet O (à adapter a ton cas)
    TV = O.Range("A2:E" & FinTab)  'définit le tableau des valeurs TV (à adapter à ton cas)
     
    Set D = CreateObject("Scripting.Dictionary") 'définit le dictionnaire D
    For i = 2 To FinTab - 1 boucle sur toutes les lignes du tableau des valeurs TV (en partant de la seconde)
        D(TV(i, 1) & TV(i, 4)) = "" 'alimente le dictionnaire D
     
    Next i 'prochaine ligne de la boucle
    TMP = D.keys 'récupère dans le tableau temporaire TMP, la liste des éléments du dictionnaire D sans doublon
     
    Range("L8") = UBound(TMP) + 1
    En à peine une seconde sur un tableau de 25000 lignes

+ Répondre à la discussion
Cette discussion est résolue.
Page 3 sur 3 PremièrePremière 123

Discussions similaires

  1. Récupérer des valeurs dans une unique variable VBA
    Par LaMite dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 28/04/2014, 12h06
  2. Réponses: 9
    Dernier message: 15/03/2013, 16h18
  3. Réponses: 13
    Dernier message: 01/02/2006, 12h00
  4. Attribuer des valeurs dans une ListBox
    Par OjBarbare dans le forum MFC
    Réponses: 5
    Dernier message: 06/12/2005, 11h28
  5. fonction récupérant des valeurs dans une fonction popup...
    Par petitsims dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 20/01/2005, 14h51

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