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] Quelle méthose utiliser ?


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] Quelle méthose utiliser ?
    En fait je n'ai aucune idée de la méthode que j'ai à utiliser..
    Voila, je dois comparer la colonne A d'un fichier A, à la colonne A d'un fichier B...
    Exemple si dans la colonne A j'ai 1234 il doit rechercher 1234 dans la colonne A du fichier B. Si il trouve il la marque dans la colonne A du fichier C, si il la trouve pas, il marque ce qu'il trouve dans la colonne A du fichier B, dans C...

    Une méthode facile, et efficace à utiliser zauriez pas une idée ?

  2. #2
    Expert confirmé
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Par défaut
    Hello,

    pourquoi créer un nouveau sujet alors que tu as déjà :
    http://www.developpez.net/forums/sho...d.php?t=259062

  3. #3
    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
    parce que la question est pas tout à fait la même...

    mais j'aimerais bien des réponses ceci dit

  4. #4
    Invité
    Invité(e)
    Par défaut
    Melodyyy

    Si tu veux, tu peux faire ça comme cela :
    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
    Sub Comparaison()
        Application.ScreenUpdating = False
        Dim Collection1 As New Collection, collection2 As New Collection
        Dim Cellule1 As Range, Cellule2 As Range
        Dim Element1 As Object, Element2 As Object
        Dim Time1 As Date, Time2 As Date
        Time1 = Now()
        Workbooks("classeur1.xls").Activate
        For Each Cellule1 In Range("a:a")
            Collection1.Add Cellule1
        Next Cellule1
        Workbooks("classeur2.xls").Activate
        For Each Cellule2 In Range("a:a")
            collection2.Add Cellule2
        Next Cellule2
        For Each Element1 In Collection1
            For Each Element2 In collection2
                If Element1 <> Element2 Then
                    Element1.Font.Color = vbRed
                    Else
                    Element1.Font.Color = vbBlack
                    Exit For
                End If
            Next Element2
        Next Element1
        Time2 = Now()
        Debug.Print "Test collection :" & Format$(Time2 - Time1, "hh:mm:ss")
        Application.ScreenUpdating = True
    End Sub
    Voilà

  5. #5
    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
    c'est pas mal, bien ficelé, je vais m'en servir pour les idées
    j'avais pas trop d'idée ah y'ai j'en ai pleins

  6. #6
    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
    Sur la même idée que Bruno mais plus rapide puisque limité aux seules cellules renseignées
    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
    Sub Comparer()
        Dim Cell1 As Range, Cell2 As Range, DerLigne1, DerLigne2
        DerLigne1 = Workbooks("classeur1").Sheets(1).Range("A1").SpecialCells(xlCellTypeLastCell).Row
        DerLigne2 = Workbooks("classeur2").Sheets(1).Range("A1").SpecialCells(xlCellTypeLastCell).Row
        For Each Cell1 In Workbooks("classeur1").Sheets(1).Range("A1:A" & DerLigne1)
            For Each Cell2 In Workbooks("classeur2").Sheets(1).Range("A1:A" & DerLigne2)
                If Cell1 <> Cell2 Then
                        Cell1.Font.Color = vbGreen
                    Else
                        Cell1.Font.Color = vbRed
                        Exit For
                End If
            Next
        Next
    End Sub
    Je ne vois pas l'intérêt de passer par des collections mais s'il y en a un ici, je veux bien le connaître
    A+

    Edit
    Tu peux simplifier en supprimant deux variables en écrivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        For Each Cell1 In Workbooks("classeur1").Sheets(1).Range("A1:A" & _
     Workbooks("classeur1").Sheets(1).Range("A1").SpecialCells(xlCellTypeLastCell).Row)
    idem pour sheets(2) mais ça devient vite illisible

Discussions similaires

  1. Réponses: 5
    Dernier message: 25/08/2012, 15h09
  2. Quelles methodologie utiliser en VBA
    Par RYAN78 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 05/06/2007, 18h24
  3. [selection de fenetre] Quelle methode utiliser?
    Par -=Spoon=- dans le forum Agents de placement/Fenêtres
    Réponses: 9
    Dernier message: 04/07/2005, 14h02
  4. [persistance]Quelle méthode utiliser ?
    Par le Daoud dans le forum Persistance des données
    Réponses: 9
    Dernier message: 15/11/2004, 09h29
  5. code récurrent, quelle méthode utiliser ?
    Par khayyam90 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 10/10/2004, 15h03

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