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 :

Recherche doublons sur colonne


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    enquiquineur d'unparia
    Inscrit en
    Février 2014
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : enquiquineur d'unparia

    Informations forums :
    Inscription : Février 2014
    Messages : 82
    Par défaut Recherche doublons sur colonne
    Bonjour,
    je cherche une méthode pour vérifier si une ligne est présente en double, et si c'est le cas agir sur une case de la ligne correspondante aux deux doublons. Pour le moment j'ai fait 2 boucles imbriquées mais je ne sais pas si c'est la meilleure solution.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    For i = 2 To nb_ligne
    TMP = F1.Cells(i, col_numprod).Value
     
        For j = i + 1 To nb_ligne
        If TMP = F1.Cells(j, col_numprod).Value Then
        cmtp = cmtp + 1
        F1.Cells(j, col_solde).Value = F1.Cells(j, col_solde).Value / 2
        F1.Cells(i, col_solde).Value = F1.Cells(i, col_solde).Value / 2
        End If
     
        Next j
    Next i
    EDIT : Je viens de faire tourner mon code sur mon fichier excel (55000 lignes) et le programme vient de planter...

  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
    Peut-être pourrais-tu commencer par faire un tri sur ta liste avec la méthode Sort de l'objet Worksheet.
    Ca raccourcirait beaucoup le temps de traitement de ta seconde boucle.

  3. #3
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Bonjour,

    ou utiliser la fonction de formule de feuille de calculs NB.SI ou la fonction VBA Find ou encore un filtre …

  4. #4
    Invité
    Invité(e)
    Par défaut Bonjour,
    ça à l'air compliqué mai en réalité c'est très simple je me tien à ta disossion pour les explication.
    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
    Dim Collec As New Collection
    Dim Cls As Classe1
    Dim Clls As String
    For I = 2 To nb_ligne
    	If InStr("[;]" & Clls & "[;]", "[;]" & F1.Cells(I, col_numprod) & "[;]") = 0 Then
    		Clls = Clls & "[;]" & F1.Cells(I, col_numprod) & "[;]"
    		Set Cls = New Classe1
    		Collec.Add Cls, "Cls_ & " & F1.Cells(I, col_numprod)
    		 Set Cls = Nothing
    	End If
    	Collec("Cls_ & " & F1.Cells(I, col_numprod)).LirRange F1.Cells(I, col_solde)
    Next
    For I = 1 To Collec.Count
    	Collec(I).maj
    Next
    Code Classe1 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private TArdess() As Range
    Private I As Long
    Public Sub LirRange(R As Range)
    ReDim Preserve TArdess(I)
    Set TArdess(I) = R
    I = I + 1
    End Sub
    Public Sub maj()
    Dim L As Long
    For L = 0 To UBound(TArdess)
        TArdess(L).Value = TArdess(L) / (UBound(TArdess) + 1)
    Next
    End Sub
    Dernière modification par Invité ; 17/04/2014 à 14h47.

Discussions similaires

  1. Recherche find sur colonne masquée
    Par JYL74 dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 17/02/2021, 14h09
  2. [AC-2010] Recherche doublons sur plusieurs colonnes
    Par David_18 dans le forum Access
    Réponses: 11
    Dernier message: 19/05/2014, 19h15
  3. Réponses: 1
    Dernier message: 09/02/2012, 18h30
  4. Recherche doublons sur list
    Par rumpeballe dans le forum Windows Forms
    Réponses: 5
    Dernier message: 04/08/2008, 23h54
  5. [Oracle 8i]Recherche doublon sur une même table
    Par fmoriet dans le forum Oracle
    Réponses: 3
    Dernier message: 01/08/2006, 10h09

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