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 :

Comparaison d'une colonne de deux classeurs


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 20
    Par défaut Comparaison d'une colonne de deux classeurs
    totre

  2. #2
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Bonjour
    Est ce normale que ton test en if soit en dehors de ta boucle en j?
    Car là tu ne testera que la dernière valeur de ancien

    J'aurais plutôt vu quelque chose comme ca dans le principe, sans passer par les tableaux (mais ca peut être une très bonne idée les tableaux c'est juste que j'ai pas envie de me prendre la tête avec )

    a adapter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    For i = 3 To iLRBE
        flag=false
        For j = 3 To iLRAncien
            if   WsAncien.Cells (j, 4).Value = WsBE.Cells (i, 12).Value then
               flag=true
           end if
       next j
       if not flag then
          msgbox "la valeur " & WsBE.Cells (i, 12).Value & " de nouveau n'existe pas dans ancien"
          'tu remplaces la message box par ce que tu veux faire : copier, colorier,etc
      end if
    next i

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 20
    Par défaut comparaison colonnes classeur
    Bonjour Krovax, le forum,

    merci pour ta réponse précieuse,
    j'ai testé le bout de code que tu m'as passé, je l'ai adapté, ça à l'air de marcher mais ça me copie pas le contenu des cellules, et ça m'insère pas la même couleur lorsqu'il y a égalité entre les contenues des cellules dans ancien.xls et noveuau.xls.
    La macro me copie un contenu bizarre sous la forme #N/A et marque en rouge tout le contenu de la colonne code filiaire en rouge dans ancien.xls.
    Or, il me faut les vraies valeurs de nouveau.xls copiée dans ancien.xls ou s'il y a égalité entre les contenues de ancien.xls et nouveau.xls, on garde les mêmes contenus des cellules. Où s'il y a des nouvelles valeurs dans nouveau.xls, on les rajoute à la suite de ancien.xls.

    J'espère que je me suis fais comprendre Krovax,
    Merci pour ta contribution Krovax,

    Je te colle la macro modifiée si tu veux!

    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
    For i = 3 To iLRBE
        flag = False
        For j = 3 To iLRAncien
            If WsAncien.Cells(j, 5).Value = WsBE.Cells(i, 12).Value Then
            ' on garde la même couleur
              WsInna.Cells(i, 5).Interior.ColorIndex = 0
               flag = True
           End If
       Next j
       If Not flag Then
     
          'MsgBox "la valeur " & WsBE.Cells(i, 12).Value & " de nouveau n'existe pas dans ancien"
          'tu remplaces la message box par ce que tu veux faire : copier, colorier,etc
     
           WsInna.Range("E1:E" & i).Value = WsBE.Range("L1:L" & j).Value
                   ' insertion de la couleur rouge
           WsInna.Cells(i, 5).Interior.ColorIndex = 3
     
      End If
    Next i

    A bientôt,

    Bonanos

  4. #4
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WsInna.Range("E1:E" & i).Value = WsBE.Range("L1:L" & j).Value
    Pourquoi tu copie TOUTES les valeurs de la ligne 1 à i???
    C'est pas ca que tu devrais utiliser?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WsInna.Range("E" & i).Value = WsBE.Range("L" & j).Value
    Mais même la ce que tu ecrit na pas de sens tu utilise la variable j alors que tu es sortie de la boucle j!!!

    On reprend
    Tu as deux classeur ancien et nouveau dans chacun une colonne avec des valeurs(un code filaire je ne sais pas ce que c'est et je t'avoue je m'en balance un peu )

    Quest ce que tu veux faire? Soit clair.
    Exemple ce que fait le code que tu a donné
    Il regarde pour chaque valeur de nouveau si elle existe dans ancien. Si ce n'est pas le cas tu veux faire quoi?
    Ajouter la valeur dans ancien? a la suite?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    WsAncien .Range("E" & iLRAncien
    +n).Value = WsBE.Range("L" & i).Value
    n=n+1 'initialise n a 1
    Si tu veux comparer si les valeur de ancien sont dans nouveau il faut que tu relance les deux boucle dans l'autre sens. Tester chaque valeur de ancien voir si elle est dans nouveau

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 20
    Par défaut Comparaison d'une colonne de deux classeurs
    titi

  6. #6
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    200 lignes c'est pas grand chose ne t'inquiète pas
    Par contre j'ai pas très envie de réfléchir a ton exemple, je préfère faire travailler ton cerveau plutôt que le mien. Toute ma vie j'ai été un Partisan du Moindre Effort .

    Alors regarde le code que je t'ai donnée les remarques faites essaye de comprendre et adapte le a ton problème. Si ca coince, tu reviens tu explique ce qui coince (de manière précise et après avoir testé le programme en mode pas a pas avec des espion et tout)

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 20
    Par défaut Comparaison classeurs
    good!

Discussions similaires

  1. [XL-2003] Remplissage d'une colonne d'un classeur après comparaison
    Par olivier777 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 08/02/2013, 14h53
  2. Réponses: 2
    Dernier message: 13/12/2007, 16h56
  3. Séparer une colonne en deux dans excel
    Par bibi5883 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 11/04/2007, 12h43
  4. resultat d'une colonne en deux colonne
    Par Challenger dans le forum Langage SQL
    Réponses: 3
    Dernier message: 03/11/2005, 08h23

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