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 :

VBA compare de doublons dans une autre colonne


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mars 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2016
    Messages : 16
    Points : 7
    Points
    7
    Par défaut VBA compare de doublons dans une autre colonne
    Bonjour

    J'ai un dossier avec des chiffres dans la colonne B via la requête ci-dessous j'insert une colonne en " C" et je compare les valeurs dans la colonne B afin de voir si il n'y a pas de doublons soi oui il m'indique DOUBLE si non il m'indique OK j'y arrive sur une cellule mais je n'arrive pas à le faire sur toutes les cellules de la colonne B

    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
    Sub Compare()
     
    Dim DerCel As String
    DerCel = Range("C3").End(xlDown).Address
    Columns(3).Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    Range("C3").Select
    ActiveCell.FormulaR1C1 = "Double"
    Range("C4").Select
     
    If Range("B5").Value = Range("B4").Value Then
    Range("C5").Value = "Double"
    Else
    Range("C5").Value = "OK"
    End If
     
     
    End Sub

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Une solution possible :

    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
     
    Sub Compare_EK()
     
    Dim DerniereLigne As Long
     
        With Sheets("Feuil1")  ' A adapter
     
             DerniereLigne = .Cells(.Rows.Count, 1).End(xlUp).Row
             .Columns(3).Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
             .Range("C3") = "Double"
             With .Range("C4")
                   .FormulaR1C1 = "=IF(R[1]C[-1]=RC[-1],""Double"",""OK"")"
                    .AutoFill Destination:=Sheets("Feuil1").Range("C4:C" & DerniereLigne)
             End With
     
        End With
     
    End Sub
    En utilisant l'enregistreur de macro, vous auriez eu directement la formule à appliquer en C4.

    Nb :

    - Je teste la dernière ligne à partir du bas dans la première colonne, au cas où il y aurait "des trous dans la raquette", mais ce n'est peut-être pas possible dans votre fichier.
    - Vous n'avez pas besoin de sélectionner les cellules, votre code ira plus vite.

    Cordialement.
    Dernière modification par Invité ; 30/07/2016 à 05h53.

  3. #3
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Points : 3 974
    Points
    3 974
    Par défaut
    Bonjour,

    Un autre type de solution consiste à affecter un format particulier pour repérer les doublons.
    Exemple avec un remplissage en rouge :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub Compare()
    Dim DerLigne As Long, Ligne As Long
        DerLigne = Range("C3").End(xlDown).Row
        For Ligne = DerLigne To 4 Step -1
            If Application.CountIf(Range(Cells(3, 3), Cells(Ligne - 1, 3)), Cells(Ligne, 3).Value) > 0 Then
                Cells(Ligne, 3).Interior.ColorIndex = 3
            Else
                Cells(Ligne, 3).Interior.ColorIndex = xlNone
            End If
        Next
    End Sub
    Cordialement.

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mars 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2016
    Messages : 16
    Points : 7
    Points
    7
    Par défaut Réponse
    Citation Envoyé par Eric KERGRESSE Voir le message
    Bonjour,

    Une solution possible :

    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
     
    Sub Compare_EK()
     
    Dim DerniereLigne As Long
     
        With Sheets("Feuil1")  ' A adapter
     
             DerniereLigne = .Cells(.Rows.Count, 1).End(xlUp).Row
             .Columns(3).Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
             .Range("C3") = "Double"
             With .Range("C4")
                   .FormulaR1C1 = "=IF(R[1]C[-1]=RC[-1],""Double"",""OK"")"
                    .AutoFill Destination:=Sheets("Feuil1").Range("C4:C" & DerniereLigne)
             End With
     
        End With
     
    End Sub
    En utilisant l'enregistreur de macro, vous auriez eu directement la formule à appliquer en C4.

    Nb :

    - Je teste la dernière ligne à partir du bas dans la première colonne, au cas où il y aurait "des trous dans la raquette", mais ce n'est peut-être pas possible dans votre fichier.
    - Vous n'avez pas besoin de sélectionner les cellules, votre code ira plus vite.

    Cordialement.


    Bonjour Eric

    Ca fonctionne parfaitement mais quand j'active la requête à chaque fois sur la ligne : .AutoFill il bug et je suis obliger de passer par DEBOGAGE bien qu'il ai exécuté la requête.
    Je profite pour vous demander comment puis je colorer le texte DOUBLE en rouge dans les colonnes.
    J'ai fait plusieurs tentatives en vain
    Cordialement
    Manu

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par UARG25 Voir le message
    Ca fonctionne parfaitement mais quand j'active la requête à chaque fois sur la ligne : .AutoFill il bug et je suis obliger de passer par DEBOGAGE bien qu'il ai exécuté la requête.
    Bonjour,

    Peux-tu mettre un fichier exemple (sans données confidentielles) en ligne avec ton code ?

    Cordialement.

  6. #6
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Points : 3 974
    Points
    3 974
    Par défaut
    Bonjour,

    Je cherche à comprendre pourquoi j'ai été snobé.
    Option 1 : mon propos est transparent,
    Option 2 : mon propos est sans intérêt,
    Option 3 : je sens le fuel.

    Dans le doute, je vais prendre une douche .

    Cordialement.

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mars 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2016
    Messages : 16
    Points : 7
    Points
    7
    Par défaut
    Bonjour
    Pas le moindre votre requête fonctionne mais je n'ai pas d'insertion de colonne comme dans la requête d'Eric par contre dans la requête d'Eric je n'ai pas la coloration du Double
    Avec vos aides je vais y arriver
    Merci pour tout
    Manu

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mars 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2016
    Messages : 16
    Points : 7
    Points
    7
    Par défaut
    Bonjour Eric

    Ci-joint le dossier , pas de soucis il n'y a pas de choses confidentielles.
    Manu Test 3.xls
    Encore merci pour tout
    Manu

  9. #9
    Expert confirmé
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Points : 4 174
    Points
    4 174
    Par défaut
    Bonjour,
    j'avais répondu à un post sur les doublons en utilisant les MFC, peut être que cela pourrait t'intéresser :
    Besoin d'aide pour une macro de recherche de doublon
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre en n'oubliant pas d'indiquer qu'elle est la solution finale choisie

  10. #10
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par UARG25 Voir le message
    Bonjour,

    Quel est le mot de passe VBA Project ?

    Si problème, me l'envoyer par message privé.

    Cordialement.

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mars 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2016
    Messages : 16
    Points : 7
    Points
    7
    Par défaut
    Bonsoir Eric

    Sorry ! le password est manumanu il n'y a aucun soucis car ce n'est pas du tout confidentiel

    Manu

  12. #12
    Invité
    Invité(e)
    Par défaut
    Dans ma première version, la dernière ligne du tableau était basée sur la colonne A qui est vide dans ton tableau, cela ne pouvait pas fonctionner.
    Dans cette version, la dernière ligne est basée sur la colonne B.

    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
     
    Sub Compare_EK_V2()
     
    Dim LigneTitre As Long
    Dim DerniereLigne As Long
    Dim AireDoublons As Range
    Dim CelluleDoublons As Range
     
        With Sheets("Incidents créés")
     
             LigneTitre = 3
             DerniereLigne = .Cells(.Rows.Count, 2).End(xlUp).Row ' 2 parce que la colonne A est vide
             .Columns(3).Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
             .Range("C3") = "Double"
             Set AireDoublons = .Range(.Cells(LigneTitre + 1, 3), .Cells(DerniereLigne, 3))
     
             With .Range("C4")
                  .FormulaR1C1 = "=IF(R[1]C[-1]=RC[-1],""Double"",""OK"")"
                  .AutoFill Destination:=AireDoublons
             End With
     
             For Each CelluleDoublons In AireDoublons
                 If CelluleDoublons = "Double" Then
                    With CelluleDoublons.Font
                         .Color = RGB(255, 0, 0)
                         .Bold = True
                    End With
                 End If
             Next CelluleDoublons
     
             Set AireDoublons = Nothing
     
        End With
     
    End Sub
    Sinon par rapport à la réaction de gFZT82 qui est tout à fait logique, il te faut répondre à tous ceux qui ont pris la peine de plancher sur ton problème. Si un jour, ton expérience aidant, tu réponds également aux demandes, tu seras bien content d'avoir ce signe de reconnaissance et sans doute très frustré si on ne te répond pas.

    Bon courage.

    Cordialement.
    Dernière modification par AlainTech ; 05/08/2016 à 21h31. Motif: Suppression de la citation inutile

  13. #13
    Futur Membre du Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mars 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2016
    Messages : 16
    Points : 7
    Points
    7
    Par défaut
    Bonjour Eric

    Mille mercis c'est top ça fonctionne parfaitement !!!
    Quand on est Pro on est PRO !!!

  14. #14
    Futur Membre du Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mars 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2016
    Messages : 16
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par RyuAutodidacte Voir le message
    Bonjour,
    j'avais répondu à un post sur les doublons en utilisant les MFC, peut être que cela pourrait t'intéresser :
    Besoin d'aide pour une macro de recherche de doublon
    Merci à vous pour ce petit cours de VBA

    Cordialement

  15. #15
    Expert confirmé
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Points : 4 174
    Points
    4 174
    Par défaut
    Bonjour,
    De rien, le principal c'est que cela puisse aider/faire avancer
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre en n'oubliant pas d'indiquer qu'elle est la solution finale choisie

Discussions similaires

  1. Réponses: 3
    Dernier message: 27/07/2012, 11h25
  2. Chercher un mot d'une colonne dans une autre colonne
    Par agur29 dans le forum Réplications
    Réponses: 6
    Dernier message: 17/12/2008, 16h52
  3. verifier les valeurs d'une colonne dans une autre colonne
    Par Mimosa777 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 09/04/2008, 20h24
  4. Recopier une donnée dans une autre colonne si, similitude
    Par Cyrille2766 dans le forum Access
    Réponses: 16
    Dernier message: 01/02/2007, 14h02
  5. Réponses: 2
    Dernier message: 26/07/2006, 10h03

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