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 :

Detection de doublon sur 2 feuilles [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é
    Homme Profil pro
    Inscrit en
    Mars 2009
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mars 2009
    Messages : 408
    Par défaut Detection de doublon sur 2 feuilles
    Bonjour le forum,
    pouvez vous m aider sur ce problème?
    J'ai deux feuilles (distribution et rentrée), dans la colonne A de chaques feuilles un N° de référence. je voudrais quand le N° de reference se trouve dans les deux feuilles, surlignait la ligne concernée dans la feuille distribution.
    Voici mon code mais l'erreur suivante est signalée "for each ne peut iterer que sur un objet collection ou un tableau."

    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
    Sub ColorSiRentré()
     
    Dim i As Long
    Dim DerLigDistri As Integer
    Dim DerLigrentré As Integer
     
    'de A3 jusqu'a la derligne 
    DerLigDistri = Sheets("Distribution").Range("A3").End(xlDown).Row
    DerLigrentré = Sheets("Rentrée").Range("A3").End(xlDown).Row
     
    'pour chaque ligne colonne a en feuil "distribution"
    For Each C In DerLigDistri
     
        For i = 3 To DerLigrentré
    'si la reference existe dans la feuille "rentrée" et "distribution"
            If C = Sheets("Rentrée").Cells(i, 1) Then
    'alors colorie la ligne dans la feuille distribution
            EntireRow.Interior.ColorIndex = 3
            End If
     
        Next i
     
    End Sub
    Merci pour votre aide

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    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
    Dim i As Long
    Dim DerLigDistri As long
    Dim DerLigrentré As long
    dim plage as range, C as range
     
    'de A3 jusqu'a la derligne 
    DerLigDistri = Sheets("Distribution").Range("A3").End(xlDown).Row
    DerLigrentré = Sheets("Rentrée").Range("A3").End(xlDown).Row
    set plage=Sheets("Distribution").Range("A3:A" & DerLigDistri)
     
    'pour chaque ligne colonne a en feuil "distribution"
    For Each C In plage 
        For i = 3 To DerLigrentré
    'si la reference existe dans la feuille "rentrée" et "distribution"
            If C = Sheets("Rentrée").Cells(i, 1) Then
    'alors colorie la ligne dans la feuille distribution
                rows(i).Interior.ColorIndex = 3
            End If 
        Next i
    Next C
    set plage=nothing 
    End Sub

  3. #3
    Membre Expert Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Par défaut
    bonjour dodo28 l'ami mercatog le forum une autre methode

    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 Com()
      Dim c, e As Variant, m1 As Object, m2 As Object
      Application.ScreenUpdating = False
       Set m1 = CreateObject("Scripting.Dictionary")
      Set m2 = CreateObject("Scripting.Dictionary")
      Sheets("Distribution").Activate
      For Each c In Range("a3", Cells(Rows.Count, "a").End(xlUp))
        If Not m1.Exists(c.Value) Then m1.Add c.Value, c.Address
      Next
      Sheets("Rentrée").Activate
      For Each c In Range("a3", Cells(Rows.Count, "a").End(xlUp))
       If Not m2.Exists(c.Value) Then m2.Add c.Value, c.Address
      Next
      Sheets("Distribution").Activate
      For Each e In m1
      If m2.Exists(e) Then
    Range(m1.Item(e)).EntireRow.Interior.ColorIndex = 3
     Else
    Range(m1.Item(e)).EntireRow.Interior.ColorIndex = 2
     End If: Next
    End Sub

  4. #4
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mars 2009
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mars 2009
    Messages : 408
    Par défaut
    Bonsoir Mercatog et Laetitia

    Mon code revisé par Mercatog ne marche pas, il ne buggue pas (déja une bonne chose) mais ne me surligne pas les bons doublons.
    Si vous pouvez m'expliquer pourquoi?

    Celui a Laetitia marche bien.

    excusez je dois quitter je relirais le forum ce soir, je marquerai resolu aprés
    Je vous remercie tous les deux

    quand on fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.ScreenUpdating = False
    doit on pas le remettre en true à la fin du code?

  5. #5
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    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 test()
    Dim i As Long, DerLigDistri As long, DerLigrentré As long
    dim plage as range, C as range
     
    'de A3 jusqu'a la derligne 
    DerLigDistri = Sheets("Distribution").Range("A3").End(xlDown).Row
    DerLigrentré = Sheets("Rentrée").Range("A3").End(xlDown).Row
    set plage=Sheets("Distribution").Range("A3:A" & DerLigDistri)
     
    'pour chaque ligne colonne a en feuil "distribution"
    For Each C In plage 
        For i = 3 To DerLigrentré
    'si la reference existe dans la feuille "rentrée" et "distribution"
            If Sheets("Rentrée").Cells(i, 1).value=C.value Then
    'alors colorie la ligne dans la feuille distribution
                Sheets("Distribution").rows(C.row).Interior.ColorIndex = 3
            End If 
        Next i
    Next C
    set plage=nothing 
    End Sub

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.ScreenUpdating = False
    doit on pas le remettre en true à la fin du code?
    Oui et non... Si tu as à lire les données en cours de macro (situation raricime s'il en est) alors la mise à jour de l'écran s'impose. Dans tous les autres cas, la mise à jour se réalise en fin de macro.
    Bref dans ton cas, c'est inutile.
    Le seul cas que j'imagine être concerné (sans aucune certitude) serait peut-être
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set Plage = Application.InputBox("Sélection de cellules ...", Type:=8)
    sans aucune garantie.

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

Discussions similaires

  1. [XL-2003] Contrôle des doublons sur plusieurs feuilles, puis suppression
    Par DeathLighT dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 04/03/2013, 12h14
  2. chercher les doublons sur plusieurs feuilles
    Par huître dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 09/06/2011, 15h48
  3. [XL-2007] Doublons sur deux feuilles avec 26 colonnes chacunes
    Par jimmycamelon dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 04/03/2011, 16h56
  4. [XL-2003] Doublons sur plusieurs feuilles
    Par bbcancer dans le forum Macros et VBA Excel
    Réponses: 31
    Dernier message: 11/10/2010, 16h06
  5. Réponses: 3
    Dernier message: 22/03/2010, 09h14

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