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 :

Macro comparer cellule de 2 colonnes [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 56
    Par défaut Macro comparer cellule de 2 colonnes
    Bonjour,

    J'ai essayé pas mal de truc mais la je sèche

    Le principe est simple, j'ai 2 colonnes

    2 1
    3 2
    5 9
    6 11
    9 14


    Il faut savoir si chaque valeur de la cellule de la colonne 1 est contenu dans la colonne 2, si ce n'est pas dans la colonne 2 alors supprimé la ligne, le résultat que ça doit me donner pour l'exemple est le suivant

    2 1
    9 14

    Voila ce que j'ai essayé


    Private Sub Comparer2()

    NbLigne1 = Sheets("Feuil1").UsedRange.Rows.Count
    Nb = NbLigne1
    Nb2 = Nb
    For k = Nb To 1 Step -1
    ValeurA = Cells(k, 1).Value
    a = 0
    For g = 1 To Nb
    ValeurB = Cells(g, 2).Value
    If ValeurA <> ValeurB Then
    a = a + 1
    End If
    Next g
    If a = Nb2 Then
    Rows(k).Delete
    Nb2 = Nb2 - 1
    End If
    Next k



    End Sub

  2. #2
    Membre émérite Avatar de sabzzz
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 748
    Par défaut
    bonjour Shikam,

    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 Comparer2()
    Dim tb(), i As Integer, x As Integer, y As Integer, a As Integer
    x = Range("A65536").End(xlUp).Row
     
      For i = 1 To x
        If IsError(Application.Match(Range("A" & i), Range("B:B"), 0)) Then
          ReDim Preserve tb(y)
          tb(y) = i
          y = y + 1
        End If
     Next
     
     For a = UBound(tb) To LBound(tb) Step -1
        Rows(tb(a)).Delete
     Next
     
    End Sub

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 56
    Par défaut
    Merci ça marche niquel, par contre je comprend pas trop, est -il possible de commenter ce bout de codes?

  4. #4
    Membre émérite Avatar de sabzzz
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 748
    Par défaut
    bonjour Shikam,

    voilà,

    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
    Sub Comparer2()
    Dim tb(), i As Integer, x As Integer, y As Integer, a As Integer
    'x sera = au numéro de ligne de la derniere cellule renseigné de la colonne A
    x = Range("A65536").End(xlUp).Row
     
      For i = 1 To x
    'Match est l'équivalent vba  de la fonction EQUIV de la feuille de calcul
    'on vérifie que la fonction ne retourne pas une valeur d'erreur
    'exactement comme le fait la fonction ESTERREUR de la feuille de calcul
        If IsError(Application.Match(Range("A" & i), Range("B:B"), 0)) Then
    'redimentionner le tableau tb à la valeur y, le premier item d'un tableau de
    ' variable commence toujours à 0, si on prévoi 10 items ce sera de 0 à 9
          ReDim Preserve tb(y)
    'inscrire dans le tabeau le numéro de ligne i trouvé
          tb(y) = i
          y = y + 1
        End If
     Next
     'pour toutes les valeurs du tableau tb en commancant par la derniere jusqu'a la premiere 
    'U pour "Up" et L pour "Low" donc borne supérieur et borne inférieur
     For a = UBound(tb) To LBound(tb) Step -1
    'effacer le numéro de ligne inscrit dans le tableau
        Rows(tb(a)).Delete
     Next
     
    End Sub

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 56
    Par défaut
    Merci c'est parfait

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

Discussions similaires

  1. Macro pour recherche valeur dans plage de cellules sur 2 colonnes.
    Par bipol51430 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 06/05/2014, 10h43
  2. Macro qui modifie une cellule dans une colonne fixe
    Par nyto35 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 16/04/2013, 12h48
  3. [XL-2007] Comparer cellules d'une même colonne une à une
    Par flo1411 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 26/03/2013, 15h23
  4. Réponses: 2
    Dernier message: 17/03/2011, 21h45
  5. [E-03] comparer cellules de 2 colonnes
    Par Hombe dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 17/02/2009, 17h42

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