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-E comparaison colonnes


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de bernard38
    Inscrit en
    Février 2006
    Messages
    158
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 158
    Par défaut VBA-E comparaison colonnes
    Bjr,
    J'essaie de comparer les cellules de deux colonnes d'un tableau excel de sorte que:

    1 1 1
    2 3 2
    3 4 3 4

    si je trouve une égalité je copie col3,si je trouve une nouveauté je copie col5
    et si il y a une disparition (comme ici le 2) je copie col4.
    Mais j'ai des difficultés à intégrer ma troisième condition.
    Mon bout de code:

    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
    Sub ComparaisonWF()
    '
    '
        Dim PlageCriteres As Range
        Dim PlageDonnees As Range
        Dim CelDonnee As Range
        Dim CelCritere As Range
        Dim Trouve As Boolean
     
     
        Set PlageCriteres = Range("B2:B" & Range("B65536").End(xlUp).Row)
        Set PlageDonnees = Range("A2:A" & Range("A65536").End(xlUp).Row)
     
        For Each CelDonnee In PlageDonnees
            Trouve = False
            For Each CelCritere In PlageCriteres
     
                If InStr(1, CelDonnee.Value, CelCritere.Value) <> 0 Then
                    Trouve = True
                    Exit For
                End If
            Next CelCritere
     
     
            If Not Trouve Then CelDonnee.Offset(0, 3).Value = CelDonnee.Value
     
            If Trouve Then CelDonnee.Offset(0, 2).Value = CelDonnee.Value
     
     
        Next CelDonnee
     
        Set PlageCriteres = Nothing
        Set PlageDonnees = Nothing
        Set CelCritere = Nothing
        Set CelDonnee = Nothing
     
     
    End Sub

  2. #2
    Membre confirmé
    Profil pro
    Enseignant
    Inscrit en
    Août 2006
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Août 2006
    Messages : 156
    Par défaut
    Bonjour

    Si tu donnais un exemple avec toutes les données, depuis la colonne 1 jusqu'à la colonne 5, ce serait plus explicite.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    co1 co2 co3 co4 co5
     7   7   7          égal
     4           4      disp
     3   9           9  nouv
    Est-ce que cet exemple correspond à ce que tu veux obtenir? sinon apporte les modifications, et l'aide suivra.

    Cordialement

  3. #3
    Membre confirmé Avatar de bernard38
    Inscrit en
    Février 2006
    Messages
    158
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 158
    Par défaut
    Bjr,
    C'est bien ça sauf qu'il n'y a pas de trou dans la colonne 2

    Je voudrais mettre dans une nouvelle colonne les occurences qui se retrouvent dans les deux colonnes.
    Mettre celles qui ont disparues de la colonne 1 dans une nouvelle colonne.
    Mettre les nouvelles de la colonne 2 dans une nouvelle colonne.

    La difficulté c'est qu'il faut comparer une fois la première colonne par rapport à la deuxième et inversement.(Seulement ily a 2000 lignes)

  4. #4
    Membre confirmé
    Profil pro
    Enseignant
    Inscrit en
    Août 2006
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Août 2006
    Messages : 156
    Par défaut
    Bonjour

    S'il n'y a pas de trou dans la colonne 2, c'est dans la colonne 1? Si tu pouvais compléter la portion de code que j'ai envoyée ce serait mieux pour l'aide.
    Le nombre de lignes n'a aucune importance. Si le code marche pour 2 lignes, il marchera pour 2000 lignes!

    Cordialement

  5. #5
    Membre confirmé
    Profil pro
    Enseignant
    Inscrit en
    Août 2006
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Août 2006
    Messages : 156
    Par défaut
    Bonjour

    j'ai repris mon exemple avec toutes les données.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    co1 co2 co3 co4 co5
     7   7   7          égal
         4       4      disp
     3   9           9  nouv
    Est-ce que cet exemple correspond à ce que tu veux obtenir?

    Cordialement

  6. #6
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Par défaut
    pour t'aider à réfléchir
    tu nommes la colonne A ante=Feuil1!$A:$A
    la colonne B post =Feuil1!$B:$B
    dans la colonne f tu tapes la formule =SI(ESTERREUR(RECHERCHEV(ante;post;1;FAUX));"disparu";"ident")
    dans la colonne g tu tapes la formule =SI(ESTERREUR(RECHERCHEV(post;ante;1;FAUX));"nouveau";"ancien")

    le traitement de cde devrait être plus facile

  7. #7
    Membre confirmé Avatar de bernard38
    Inscrit en
    Février 2006
    Messages
    158
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 158
    Par défaut
    co1 co2 co3 co4 co5
    7 7 7 égal
    4 2 4 2 disp
    2 9 2 9 nouv

    ligne1: co3 = je trouve 7 dans co1 et co2
    ligne2: co4 = 4 a disparu de co1 et 2 est nouveau co2 donc je le mets co5
    ligne3: co3= 2 dans co1 et co2 et 9 nouveau
    (Il ne peut pas y avoir de nouveau dans co1)
    Est-ce plus compréhensible ?

    Mon tableau:
    1298099 1298099
    1449383 1449383
    1310626 1310626
    1357819 1357819
    1429414 1429414
    1433881 1433881
    1414176 1414176
    1425777 1425777
    1418306 1444380
    1444380 1436733
    1436733 1444557
    1444557 1449415
    1448648 1446176
    1448649 1446176
    1448650 1450440
    1451033 1447018
    1449415 1446739
    1446176 1446739
    1446176 1448917
    1450440 1452515

Discussions similaires

  1. comparaison colonnes VBA
    Par Ced39300 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 24/10/2011, 19h34
  2. [VBA EXCEL] Comparaison d'entête de colonne
    Par Keitarokun dans le forum Macros et VBA Excel
    Réponses: 22
    Dernier message: 26/06/2007, 16h53
  3. Macro VBA Excel : Comparaison des deux 1ères colonnes de 2 fichiers Excel
    Par techneric dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 10/01/2007, 10h00
  4. [VBA] Fusionner plusieurs colonnes en une seule
    Par brutos2 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 18/01/2006, 14h25
  5. [VBA] Trier les colonnes d'une listview
    Par alncool dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 01/09/2005, 14h12

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