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 :

Selection multi colonne pour une variable [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Octobre 2006
    Messages
    316
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 316
    Par défaut Selection multi colonne pour une variable
    Bonjour,

    J'ai piqué un bout de code sur le NET pour retrouver des doublons dans une feuille Excel.
    Mais ce code ne prends en compte qu'une seule colonne..
    J'ai besoin de vous car je ne parviens pas à faire une multi selection de colonne (A, B et D).

    Si quelqu'un à la solution...
    Merci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    rngMyData As Range
    Set rngMyData = Range("A1:A" & Cells(Rows.Count, "A").End(xlUp).Row)

  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
    Le code que tu présentes ne recherche pas les doublons. Il se contente de donner une référence aux cellules non vide de la colonne A.

  3. #3
    Membre éclairé
    Inscrit en
    Octobre 2006
    Messages
    316
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 316
    Par défaut
    Ok, ca j'avais bien compris.
    Donc voici le code en entier.

    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
     
     
    Dim rngCell As Range, _
        rngMyData As Range
        Dim strMyDupList As String
        Dim intMyCounter As Integer
        Dim objMyUniqueList As Object
     
        Set rngMyData = Range("A1:A" & Cells(Rows.Count, "A").End(xlUp).Row)
        Set objMyUniqueList = CreateObject("Scripting.Dictionary")
     
        Application.ScreenUpdating = False
     
        strMyDupList = "": intMyCounter = 0
     
        For Each rngCell In rngMyData
            If rngCell <> "V" And rngCell <> "R" Then
                If Evaluate("COUNTIF(" & rngMyData.Address & "," & rngCell.Address & ")") > 1 Then
                    rngCell.Interior.Color = RGB(255, 255, 204)
                    If objMyUniqueList.exists(CStr(rngCell)) = False Then
                        intMyCounter = intMyCounter + 1
                        objMyUniqueList.Add CStr(rngCell), intMyCounter
                        If strMyDupList = "" Then
                            strMyDupList = rngCell
                        Else
                            strMyDupList = strMyDupList & vbNewLine & rngCell
                        End If
                    End If
                Else
                    rngCell.Interior.ColorIndex = xlNone
                End If
            End If
        Next rngCell
     
        Set rngMyData = Nothing: Set objMyUniqueList = Nothing
     
        Application.ScreenUpdating = False
     
        If strMyDupList <> "" Then
            MsgBox "Présence de doublon, merci de vérifier!" & vbNewLine & strMyDupList
        Else
            MsgBox "There were no duplicates found in " & rngMyData.Address
        End If

  4. #4
    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,

    Pour une union de plage, utiliser la propriété "Union" de Application :
    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
     
    Sub UnionDePlages()
     
        Dim PlageA As Range
        Dim PlageB As Range
        Dim PlageD As Range
        Dim PlageTotale As Range
     
        With Worksheets("Feuil1")
     
            Set PlageA = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp))
            Set PlageB = .Range(.Cells(1, 2), .Cells(.Rows.Count, 2).End(xlUp))
            Set PlageD = .Range(.Cells(1, 4), .Cells(.Rows.Count, 4).End(xlUp))
     
        End With
     
        Set PlageTotale = Union(PlageA, PlageB, PlageD)
     
        MsgBox PlageTotale.Address(0, 0)
     
    End Sub
    Hervé.

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

Discussions similaires

  1. [XL-2010] Selection de colonne avec une variable
    Par eric4459 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/07/2015, 13h46
  2. 2 valeurs possibles pour une variable : méthode Seek
    Par Corinne4775 dans le forum Access
    Réponses: 8
    Dernier message: 12/02/2007, 19h00
  3. selection de colonne dans une base 9i
    Par ktano dans le forum Administration
    Réponses: 9
    Dernier message: 12/02/2007, 14h54
  4. nom de colonne dans une variable
    Par cyclone_yas dans le forum SQL
    Réponses: 12
    Dernier message: 27/12/2006, 10h41
  5. Réponses: 6
    Dernier message: 08/06/2004, 14h22

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