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 :

supprimer doublon suivant 2 critères [XL-97]


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juin 2016
    Messages
    306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Juin 2016
    Messages : 306
    Par défaut
    bonjour au forum.

    Je suis confronter au problème de supprimer un doublon selon 2 critères choisit par l'utilisateur.

    mon premièr critère est déterminé par une combobox2 dans un userform (dont les valeurs à trouver sont dans la colonne J9 à la dernière ligne détectée non vide)
    mon deuxième critère est donné par une textbox8 également dans le userform (dont les valeurs à trouver sont dans la colonne H9 à la dernière ligne détectée non vide)

    je cherche l'unique élément dans colonne J9:J????? ET dans colonne H9:H????? selon combobox2 et textbox8

    je pensais que ce bout de code marcherait mais il ne comprends ma syntaxe, qui peut m'aider sur ce problème SVP ? merci.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    With Sheets(1).[A9].Resize(Feuil1.Cells(Feuil1.Rows.Count, 2).End(xlUp).Row - 8, 10).Columns
             ticket& = .Parent.Evaluate(IF(" & .Item(8).Address & "=" & Val(TextBox8.Value) & ",IF(" & .Item(10).Address & "=""" & ComboBox2.Value & """," & .Item(2).Address & "))")
         End With
     Set cell = Sheets(1).Columns(2).Find(ticket, , , xlWhole)
    j'ai tenté ceci mais cela ne marche pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim mec, ser, x As Long
     
        With Sheets(1)
            mec = Application.Match(ComboBox2.Value, Sheets(2).Range("J9:J67"), 0)
            ser = Application.Match(Val(TextBox8.Value), Sheets(2).Range("H9:H67"), 0)
            x = Application.Index(Sheets(1).Range("B9:B67"), mec, ser)
        End With

  2. #2
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut, à consulter peut-être : La gestion des doublons dans Excel

  3. #3
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juin 2016
    Messages
    306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Juin 2016
    Messages : 306
    Par défaut
    Je ne trouve pas mon bonheur

  4. #4
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juin 2016
    Messages
    306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Juin 2016
    Messages : 306
    Par défaut
    Bon,

    comme j'ai peu d'aide je le mets sur le compte des congés ou alors un sujet pas très passionnant pour les pros , donc je m'auto-aide
    par ceci, je filtre suivant mes critères du combobox et textbox

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sheets(1).Range("B8", Sheets(1).Range("J" & Rows.Count).End(xlUp)).Select
        Selection.AutoFilter
        chaine1 = ComboBox2.text
        chaine2 = TextBox8.text
        ActiveSheet.Range("B8", Sheets(1).Range("J" & Rows.Count).End(xlUp)).AutoFilter Field:=9, Criteria1:=chaine1
        ActiveSheet.Range("B8", Sheets(1).Range("J" & Rows.Count).End(xlUp)).AutoFilter Field:=7, Criteria1:=chaine2
     
        For Each cell In ActiveSheet.AutoFilter.Range.Columns(1).SpecialCells(xlCellTypeVisible)
        ligne = cell.Row
        Next cell
    je trouve mon doublon et je peux connaître sa ligne pour ensuite la supprimer

    maintenant quelqu'un a-t-il mieux, SVP ? parce que dans ma boucle each ... il boucle en 2 coups c'est à dire :
    il fait ligne = cell.row au 1er coup comme elle est vide (entête du filtre) il fait next cell
    il fait ligne = cell.row au 2eme coup et obtient l'information.

  5. #5
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    comme j'ai peu d'aide je le mets sur le compte des congés ou alors un sujet pas très passionnant pour les pros
    peut être devrait tu laisser plus de temps au lecteurs de tomber sur ton post et surtout être plus patient surtout sachant que c'est du 100% bénévolat

    A méditer
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  6. #6
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Voilà ce que j'ai compris de ta demande :
    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    Sub Test()
     
        Dim Plage As Range
        Dim Cel As Range
        Dim Adr As String
        Dim Texte1 As String
        Dim Texte2 As String
     
        Texte1 = "Mot 1"
        Texte2 = "Mot 2"
     
        'défini la plage sur la feuille active en colonne H à partir de H9
        With ActiveSheet
     
            Set Plage = .Range(.Cells(9, 8), .Cells(.Rows.Count, 8).End(xlUp))
     
        End With
     
        'recherche le mot dans la plage...
        Set Cel = Plage.Find(Texte1, , xlValues, xlWhole)
     
        'si trouvé...
        If Not Cel Is Nothing Then
     
            Adr = Cel.Address
     
            'boucle pour voir si correspondance en colonne J
            Do
     
                If Cel.Offset(, 2).Value = Texte2 Then
     
                    MsgBox "Le doublon est en ligne '" & Cel.Row & "' !"
                    Exit Sub
     
                End If
     
                Set Cel = Plage.FindNext(Cel)
     
            Loop While Adr <> Cel.Address
     
        End If
     
        MsgBox "Aucun doublon !"
     
    End Sub

  7. #7
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juin 2016
    Messages
    306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Juin 2016
    Messages : 306
    Par défaut
    Patricktoulon, pas de problème je comprend et pour le bénévolat, superclasse !

    Theze, cette routine me convient aussi je regarderai le délai de traitement, mais ton code répond à mon besoin, j'ai donc 2 méthodes.

    Merci,


    Je clôture ce post.

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

Discussions similaires

  1. [XL-2013] Macro pour supprimer des lignes suivant des critères données
    Par Malick dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 09/07/2014, 14h35
  2. [XL-2010] Supprimer plusieurs lignes suivant 2 critères
    Par scotop dans le forum Excel
    Réponses: 2
    Dernier message: 19/12/2013, 16h21
  3. Supprimer doublons (suivant conditions)
    Par natus dans le forum Requêtes
    Réponses: 1
    Dernier message: 28/03/2012, 17h03
  4. [AC-2003] Enlever doublons suivant critère
    Par LYPACAN dans le forum Access
    Réponses: 1
    Dernier message: 12/03/2010, 16h56
  5. [VTemplate] Choix suivant des critères comme le support Php5, code Xhtml compliant ?
    Par El Riiico dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 05/12/2005, 10h28

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