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 :

Doublons sur VisualBasic


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Femme Profil pro
    gestionnaire paie et budget
    Inscrit en
    Août 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 47
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : gestionnaire paie et budget
    Secteur : Service public

    Informations forums :
    Inscription : Août 2017
    Messages : 2
    Par défaut Doublons sur VisualBasic
    Bonjour,

    je cherche à additionner le nombre d'agent qui est répertorié dans un tableau.
    LE hic c'est que certains agents sont en double car double affectation dans les services.
    Je ne veux pas les supprimer mais je voudrais qu'il ne me les comptes pas deux fois.

    j'ai réalisé un comptage mais il prend en compte mes doublons, comment faire sans me les supprimer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    'Compter le nombre d'agents'
    Dim MATRICULE As Long
    Dim Ligne As Long
     
    Ligne = 2 ' Initialise Ligne à 2
     
    While Cells(Ligne, 2) <> "" ' Boucle Tant que cellule(y,x) n'est pas vide.
        MATRICULE = MATRICULE + 1     ' Incrémente le nombre de matricule.
        Ligne = Ligne + 1       ' Passe à la ligne suivante.
    Wend
     
    MsgBox "Nous avons " & MATRICULE & " agents ! " ' Affiche le contenu de la variable MATRICULE

  2. #2
    Membre extrêmement actif
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    1 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 1 369
    Par défaut
    Bonjour,

    Utiliser un dictionnaire pour éliminer les doublons.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Sub Nb()
      Set d1 = CreateObject("Scripting.Dictionary")
      Set f1 = Sheets("BD")
      Tbl = f1.[a1].CurrentRegion
      For i = 2 To UBound(Tbl)
         d1(Tbl(i, 1)) = ""
      Next i
      MsgBox d1.Count
    End Sub
    Boisgontier
    Fichiers attachés Fichiers attachés

  3. #3
    Candidat au Club
    Femme Profil pro
    gestionnaire paie et budget
    Inscrit en
    Août 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 47
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : gestionnaire paie et budget
    Secteur : Service public

    Informations forums :
    Inscription : Août 2017
    Messages : 2
    Par défaut
    Merci j'essayera lundi au bureau et vous direz si cela fonctionne.
    Je ne veux pas qu'il me supprimé mes lignes mais seulement qu'il ne me l'a compte pas deux fois car sur les doublon g des Infos différentes à prendre en compte

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Par défaut
    Bonjour,

    sans boucle (et sans vides en B...) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim nb As Long, derlig
    derlig = Cells(Rows.Count, 2).End(xlUp).Row
    nb = Evaluate("SUMPRODUCT(1/COUNTIF(B2:B" & derlig & ",B2:B" & derlig & "))")
    eric

  5. #5
    Membre extrêmement actif
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    1 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 1 369
    Par défaut
    Bonjour,

    Sans boucle, sous-entend plus rapide.

    Pour 10.000 lignes:

    -Version dictionnaire: 0,015 sec
    -Version evaluate: 3,2 sec

    Pour 20.000 lignes:

    -Version dictionnaire: 0,023 sec
    -Version evaluate: 10,9 sec

    Boisgontier
    http://boisgontierjacques.free.fr
    Fichiers attachés Fichiers attachés

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Par défaut
    Certes, incomparable :-)
    Je prenais plutôt comme base de comparaison son code aux multiples lectures de cellules.
    C'est vrai qu'après ta proposition c'était sans doute inutile.
    eric

Discussions similaires

  1. Doublons sur requête
    Par NoBru dans le forum Access
    Réponses: 9
    Dernier message: 18/03/2006, 07h00
  2. Trouver doublons sur feuille excel
    Par taku dans le forum Langage
    Réponses: 6
    Dernier message: 27/09/2005, 11h14
  3. Réponses: 8
    Dernier message: 13/09/2005, 21h05
  4. [SQL/access] Doublon sur un champ
    Par kor dans le forum Langage SQL
    Réponses: 7
    Dernier message: 21/01/2005, 11h21
  5. Réponses: 2
    Dernier message: 19/08/2003, 18h04

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