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 :

Comparer 2 fichiers


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
    Assistant technique
    Inscrit en
    Février 2007
    Messages
    336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Assistant technique
    Secteur : Services à domicile

    Informations forums :
    Inscription : Février 2007
    Messages : 336
    Par défaut Comparer 2 fichiers
    Bonjour,

    J'aimerais modifier la macro ci-dessous pour qu'elle compare les deux fichiers actuellement ouvert, sans pour autant les renommer en "ancien" et "nouveau"

    Et si possible, qu'elle reconnaisse l'ordre dans lequel j'ai ouvert les fichiers
    C'est à dire, le premier fichier ouvert sera l'ancien, et le deuxième fichier sera le nouveau

    Comme ça, lorsque je veux comparer dans l'autre sens, j'ouvrirais mes fichiers dans un ordre différent

    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
    39
    40
    41
    42
    43
    44
    45
    Sub z_Comparer_2_Fichiers()
    Dim iLRA%, iLRN%, i%, j%, k%
    Dim Y As Boolean, Ys As Boolean
    Dim TabloA(), TabloN()
    Dim WbA As Workbook, WbN As Workbook
    Dim WsA As Worksheet, WsN As Worksheet
    'Détermination du nombre de ligne de Classeur "Ancien" et "Nouveau"
    Set WbA = Workbooks("ancien.xls")
    Set WbN = Workbooks("nouveau.xls")
    Set WsA = WbA.Worksheets(1)
    Set WsN = WbN.Worksheets(1)
    iLRA = WsA.Cells(65535, 1).End(xlUp).Row
    iLRB = WsN.Cells(65535, 1).End(xlUp).Row
    TabloA() = WsA.Range("A1:A" & iLRA)
    TabloN() = WsN.Range("A1:A" & iLRB)
    'Détermination des absents
    For i = 1 To UBound(TabloA)
    For j = 1 To UBound(TabloN)
    'Si égalité alors on pose un drapeau
    If TabloN(j, 1) = TabloA(i, 1) Then
    Y = True
    'et on vérifie la ligne si c'est une égalité stricte
    For k = 1 To 15
    'si différence on pose un drapeau
    If WsA.Cells(i, k) <> WsN.Cells(j, k) Then
    Ys = True
    'et on colore en orange
    WsN.Cells(j, k).Interior.ColorIndex = 45
    End If
    Next
    'sinon 1ere cellule en vert
    If Not Ys Then WsN.Cells(j, 1).Interior.ColorIndex = 4
    Ys = False
    Exit For
    End If
    Next
    'Si pas trouvé alors on colorie en rouge
    If Not Y Then WsA.Range("A" & i).Interior.ColorIndex = 3
    Y = False
    Next
    Set WbA = Nothing
    Set WbN = Nothing
    Set WsA = Nothing
    Set WsN = Nothing
    End Sub
    Merci par avance !!

  2. #2
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 68
    Par défaut
    pour l'ordre ce n'est pas compliqué,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    workbooks(1).activate 'active le premier classeur ouvert
    'le ne correspond pas au nom mais à l'index du classeur

  3. #3
    Membre éclairé
    Homme Profil pro
    Assistant technique
    Inscrit en
    Février 2007
    Messages
    336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Assistant technique
    Secteur : Services à domicile

    Informations forums :
    Inscription : Février 2007
    Messages : 336
    Par défaut
    Merci pour ta réponse

    J'ai fait la modif mais ça ne fonctionne pas

  4. #4
    Membre Expert Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Par défaut
    Bonjour,


    Peux-tu donner un peu plus de détail.
    Tu as un classeur avec des macros et tu ouvres les deux fichiers à partir de celui-ci ?

    Pourquoi ne pas faire un usf, avec ancien et nouveau ?

  5. #5
    Membre éclairé
    Homme Profil pro
    Assistant technique
    Inscrit en
    Février 2007
    Messages
    336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Assistant technique
    Secteur : Services à domicile

    Informations forums :
    Inscription : Février 2007
    Messages : 336
    Par défaut
    Salut,

    Toutes mes macros sont enregistrés dans le classeur de macros personnelles



    j'ouvre mes deux fichiers, puis je lance ma macro



    Mais je suis en train de me poser une petite question :


    Ne serait-il pas plus simple de mettre toutes les différences dans un troisième fichier ?

    Mais après faudrait garder les systèmes des couleurs pour comprendre quelle genre de différence il y a non ?

  6. #6
    Membre Expert Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Par défaut
    Ce que tu pourrai faire c'est ouvrir tes documents excel par le biais d'une macro ainsi tu saurai précisément quel est le nouveau et quel est l'ancien.


    Un exemple pour ouvrir un classeur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim wb As Workbook 
    Set wb = Workbooks.Open(Filename:=Fichier)
    Un exemple pour le selectionner :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    ' +-----------------------------------------------------------------------+ 
    ' ! Ouverture de la boite de dialogue ouvrir pour choisir le chemin       ! 
    ' +-----------------------------------------------------------------------+ 
    mychemin = Application.GetOpenFilename("Tous les fichiers, *.*,Fichiers Textes , *.txt ,Fichiers office, *.xls;*.doc;*.ppt,Fichiers Word , *.doc") 'fenetre pour selection du fichier 
    If VarType(mychemin) = vbBoolean Then ' test si on ne selectionne pas de chemin 
    ' code
    Else
    code
     End If 
    CB3.Enabled = True

Discussions similaires

  1. [File]Comparer 2 fichiers
    Par onlytoine dans le forum Entrée/Sortie
    Réponses: 8
    Dernier message: 05/12/2005, 17h24
  2. Fonction c qui compare deux fichiers ???
    Par babyface dans le forum C
    Réponses: 4
    Dernier message: 19/11/2005, 13h07
  3. Comparer 2 fichiers
    Par GuiltyX dans le forum Shell et commandes GNU
    Réponses: 6
    Dernier message: 10/11/2004, 01h35
  4. [LG][FAQ]comparer des fichiers
    Par lucke dans le forum Langage
    Réponses: 11
    Dernier message: 01/06/2003, 18h02
  5. Comparer des fichiers de données : Quel Langage ?
    Par Anonymous dans le forum Langages de programmation
    Réponses: 6
    Dernier message: 24/04/2002, 22h37

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