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 de données


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Dessinateur Projeteur
    Inscrit en
    Avril 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Dessinateur Projeteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2006
    Messages : 38
    Par défaut Comparaison de données
    Bonsoir à tous,

    Je m'inspire depuis deja quelque temps dans le forum pour mes divers projets informatique mais la je seche !

    Concretement je vous expose mon probleme

    Je dispose de 2 fichiers de clients à feuille unique identique par la structure.
    Ces deux fichiers correspondent à une requete de clients non rattachés sur le réseau electrique.
    Je me suis arranger pour diposer des deux fichiers dans les mm classeur Excel.

    Ma premiere feuilles excel correspond au mois de Fevrier et la deuxieme au mois d'Avril.

    Ce que je desirais c'est analyser ces réferences clients une à une pour voir si certains clients non rattachés sur la feuille de Fevrier le sont aussi sur la feuille d'Avril. Si tel est le cas, inscrire un texte ou tt autre marque sur la ligne du client concerné de la feuille de Fevrier.

    De facon pratique, j'ai une feuille nommée 'Fevrier' et un autre 'Avril', la colonne A correspond au réference en question pour les deux feuilles (Structures identiques!).

    J'aimerais avoir la structure d'une commande VBA prenant la valeur par exemple de la cellule A2 (Premiere reference car entete de colonne existante) de la feuille 'Fevrier' et la comparer au reference de la feuille 'Avril'. Et ainsi de suite pour toutes les réference de la feuille 'Fevrier' et inscrire dans la colonne K un texte du genre 'NONRATT' si la réference est bien présente dans les deux feuilles et 'VOIR' si c'est pas le cas.

    Je connais assez le VBA mais pas suffisamment dans ce cas précis car je ne maitrise pas du tout les boucles, fonction qui je pense se prete assez bien au probleme.

    Merci d'avance pour votre aide.

  2. #2
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Bonsoir,

    Je pense qu'il est judicieux de combiner une boucle et la fonction Find pour une question de rapidité d'exécution. Dans le code ci-dessous, j'ai volontairement nommé les feuilles par leurs positions 1 et 2 (1 pour Février et 2 pour Avril) de cette manière il est possible de réutiliser le code pour d'autres mois sans devoir le modifier à condition bien sûr que les feuilles se trouveront toujours en positions 1 et 2.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub test()
    Dim C As Variant, i As Integer
     
    For i = 2 To Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row
        Set C = Sheets(2).Range("A:A").Find(Sheets(1).Cells(i, 1), , , xlWhole)
            If Not C Is Nothing Then
                Sheets(1).Cells(i, 11) = "NONRATT"
            Else
                Sheets(1).Cells(i, 11) = "A VOIR"
            End If
    Next
    End Sub

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    633
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 633
    Par défaut
    Bonsoir

    j'espère avoir commenté suffisamment le code pour que tu puisse le comprendre.

    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
    Sub traitement()
      Dim R1 As Range
      Dim C As Range
     
      Worksheets("Fevrier").Select
      'boucle sur toutes les ref de Fevrier
      For Each R1 In Range("A2:A" & Range("A65535").End(xlUp).Row)
        'dans les ref d'avril
        With Worksheets("Avril").Range("A2:A" & Range("A65535").End(xlUp).Row)
          'on recherche la ref de fevrier
          Set C = .Find(R1.Value, LookIn:=xlValues, lookat:=xlWhole)
          'si on la trouve
          If Not C Is Nothing Then
            firstAddress = C.Address
            'dans fevrier col K on ecrit
            R1.Offset(0, 10) = "NONRATT"
            Do
                'dans avril on ecrit
                C.Offset(0, 10) = "NONRATT"
                'verifier si la ref est une deuxieme fois dans avril
                Set C = .FindNext(C)
            Loop While Not C Is Nothing And C.Address <> firstAddress
          Else
            'si on a pas trouvé la ref de fevrier on ecrit
            R1.Value = "VOIR"
          End If
        End With
      Next
     
    End Sub
    je n'ai pas eu le temps de le vérifier mais c'est une structure que j'utilise très souvent donc il ne devrait pas y avoir de problèmes.

  4. #4
    Membre averti
    Homme Profil pro
    Dessinateur Projeteur
    Inscrit en
    Avril 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Dessinateur Projeteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2006
    Messages : 38
    Par défaut
    Encore merci a vous pour la rapidité et la clarté des réponse.

    Je teste ca demain au boulot. Je vous tiens au courant de l'évolution.

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    633
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 633
    Par défaut
    Ah encore doublè par toi Fring , encore une fois je vois que nous avons les mêmes idées sur le "comment faire" pour traiter les problèmes , mais il faut que j'apprennes à taper un peu plus vite sur le clavier.

    Bonne journée

  6. #6
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Citation Envoyé par zyhack Voir le message
    mais il faut que j'apprennes à taper un peu plus vite sur le clavier.
    Non tu as pris la peine de commenter ton code, c'est mieux

  7. #7
    Membre averti
    Homme Profil pro
    Dessinateur Projeteur
    Inscrit en
    Avril 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Dessinateur Projeteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2006
    Messages : 38
    Par défaut
    Resultat positifs !! Merci bien ! Et au vu des resultat obtenus cela montr l'etendu de la puissance du VBA et tt cela en quelque lignes de code !!
    Du coup, je vais surement approfondir mes connaissances dans le domaine.

    Si vous avez des adresses de tuto expliquant ces diverses commande de recherche je suis preneur !!

    Merci, bonne soiré a tous !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comparaison de données dans un tableau
    Par Azertime dans le forum LabVIEW
    Réponses: 3
    Dernier message: 12/05/2007, 23h13
  2. [VBA-E] Comparaison de donnée + Msgbox
    Par GardienDuCode dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 01/03/2007, 09h55
  3. comparaison de données
    Par fbu78 dans le forum Access
    Réponses: 2
    Dernier message: 01/02/2007, 08h06
  4. Comparaison de données entre deux arrays
    Par sironimo dans le forum Général Dotnet
    Réponses: 6
    Dernier message: 20/04/2006, 17h44
  5. Comparaison des données de deux schéma de mêmes structure
    Par Moez Sokrati dans le forum Oracle
    Réponses: 1
    Dernier message: 28/03/2006, 18h24

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