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 de ligne et copie


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de melodyyy
    Inscrit en
    Octobre 2006
    Messages
    401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 401
    Par défaut [VBA-E] Comparaison de ligne et copie
    Je suis sur une macro de comparaison de fichier, et je la fais par étape. La je cherche à dire "Si j'ai pas la même ligne dans la colonne alors, je copie la ligne qui diffère dans un autre fichier"

    Je sais presque tout dire, sauf le je copie la ligne qui diffère...

    Quelqu'un aurait une idée ?

  2. #2
    Membre éclairé Avatar de melodyyy
    Inscrit en
    Octobre 2006
    Messages
    401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 401
    Par défaut
    et ça peut marcher pour genre...30 lignes ?
    Si je met uen recherche de fin de fichier et que je précise que la 1ere ligne est particulière et qu'il faut prendre exemple, ça marcherais ?

    en fait ce que je pensais mettre pour si j'ai pas la même ligne ça marche pas..

    Alors toi comment tu dirais le tout "si j'ai pas la même ligne alors copier la ligne qui diffère (ça je sais je m'inspire de ta macro) dans un autre fichier" ?

  3. #3
    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
    Précise ta demande. Quelle comparaison effectues-tu ? Qu'est-ce qui est censé différer dans ta ligne ? Une seule cellule ? Plusieurs cellules ? Elles ont forcément une donnée commune si tu souhaites faire des comparaisons
    Bref, quelles sont les structures de tes lignes dans Fich1 et Fich2 ?
    A+

  4. #4
    Membre éclairé Avatar de melodyyy
    Inscrit en
    Octobre 2006
    Messages
    401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 401
    Par défaut
    ouai je suis d'accord...
    En fait j'ai environ 30 ligne dans la colonne A, la même chose dans la colonne B.
    Je dois comparer chaque ligne entre colonne A et B, et si ça diffère je dois copier la ligne qui diffère dans un fichier C..
    Tu vois ? donc je m'inspire certe, j'ai un truc pas mal, mais ça merde à fond et je trouve pas le probleme...donc je me dis autant tout recommencer...

    si tu veux j'ai ça mais ça me copie bien la celulle qui diffère, mais pas au bon endroit et je comprends pas pourquoi...Je faisais juste un essai pour que ça le copie en face de la ligne qui est différente et ça copie bien le différent mais au début jamais en face de la ligne..
    Alors j'ai pas essayé, mais peut etre que si je demande à copier dans un autre fichier ça le fera...mais t'as une astuce pour pas qu'il me le copie au début tout le temps et qu'il poursuive sa logique ? Si je dis que dans le 3eme fichier la 1ere ligne est spéciale et qu'il faut suivre sa "directive" ça le ferait tu crois ? En fait je pogresse en VBA, j'ai quelques bonnes notion (merci à vous ) mais quelques incertitudes aussi et des doutes mais bon ça fait que 2 mois et demi que je suis dessus hein
    je te montre mon code dit moi ce que tu modifierais toi:

    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
     
    'Tom Ogilvy, mpep
    Dim rngA As Range
    Dim rngB As Range
    Dim rw As Long
     
    Set rngA = Range(Cells(1, 1), Cells(Rows.Count, 1).End(xlUp))
    Set rngB = Range(Cells(1, 2), Cells(Rows.Count, 2).End(xlUp))
     
    rw = 1
    For Each cell In rngB
    If Application.CountIf(rngA, cell.Value) = 0 Then
    Cells(rw, 3).Value = cell.Value
    rw = rw + 1
    End If
    Next
    End Sub

  5. #5
    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
    Dans Classeur1 tu parcours ta colonne A et pour chaque ligne, tu compares avec ce qui a dans colonne b
    Si c'est différent tu copies dans classeur2
    Pour ça tu établis la plage de données de la colonne A (recherche de la dernière ligne... tu devrais connaître)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub ComparerCopierColler()
    Dim DernièreLigne As Integer, LaPlage As String, NoLigneCollage As Integer
        DernièreLigne = Workbooks("Classeur1.xls").Worksheets("Feuil1").Range("A1").SpecialCells(xlCellTypeLastCell).Row
        LaPlage = Workbooks("Classeur1.xls").Worksheets("Feuil1").Range("A1:A" & DernièreLigne).Address
        For Each Cellule In Workbooks("Classeur1.xls").Worksheets("Feuil1").Range(LaPlage)
             If Cellule.Value <> Workbooks("Classeur1.xls").Worksheets("Feuil1").Cells(Cellule.Row, 2) Then
                NoLigneCollage = NoLigneCopie + 1
                Workbooks("Classeur1.xls").Worksheets("Feuil1").Cells(Cellule.Row, 1).EntireRow.Copy _
                Destination:=Workbooks("Classeur2.xls").Worksheets("Feuil1").Rows(NoLigneCollage & ":" & NoLigneCopie)
             End If
        Next
    End Sub
    Si tu fais un essai sur deux nouveaux classeurs, Classeur1 et Classeur2 par exemple, soit tu les enregistres pour qu'ils aient l'extension .xls, soit tu supprimes cette extension dans le code ci-dessus (on ne sait jamais...)
    A+

  6. #6
    Membre éclairé Avatar de melodyyy
    Inscrit en
    Octobre 2006
    Messages
    401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 401
    Par défaut
    yes recherche de fin de lignes je connaissais
    en revanche il me dit imcompatibilité de type la:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Workbooks("Classeur1.xls").Worksheets("Feuil1").Cells(Cellule.Row, 1).EntireRow.Copy _
                Destination:=Workbooks("Classeur2.xls").Worksheets("Feuil1").Rows(NoLigneCollage & ":" & NoLigneCopie)
    je sais que c'est à cause de cellule, mais je sais pas quoi mettre à la place...

    vivement le repos de ce soir

    et à la fin je dois dire que si il a trouvé les même valeurs alors il soustrait la ligne avec l'autre fichier
    Si le résultat est sup à 0 alors il l'écrit.

    Je sais soustraire 2 cellules mais 2 lignes ça marche comment ?

Discussions similaires

  1. [XL-2003] VBA comparaison de lignes avec plusieurs critères
    Par klissou69 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 05/07/2013, 10h49
  2. [XL-2003] VBA - Problème d'insertion de ligne avec copie de formules
    Par oracle7556 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 04/06/2010, 15h22
  3. [VBA-E] Descendre de ligne apres une copie de cellules
    Par prog974 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 08/06/2007, 08h54
  4. [VBA-E]Comparaison du contenu de cellules ligne à ligne
    Par frederic.go dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 05/04/2006, 16h02
  5. [VBA][Excel]Insérer une ligne
    Par loverdose dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/02/2005, 16h27

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