code vba pour comparer deux feuilles

  • Initiateur de la discussion Initiateur de la discussion raniou010
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

raniou010

XLDnaute Nouveau
bonjour a vous tous , c'est ma première publication , je veux bien un code VBA pour comparer deux feuilles Excel ( si A de premier = A de deuxième et E de premier = X de deuxième et AM de premier = Y de deuxième alors je sélectionne les lignes dans la premiere feuille ou bien je mets les lignes dupliquées dans une nouvelle feuille car je vais faire des modification dans ces ligne mais au premier temps je veux les trouver .
c'est mon premier test qui n'est pas du tout bon
Code:
Sub test()
Dim w1 As Worksheet, w2 As Worksheet, w3 As Worksheet
Dim I As Long
Windows("test.csv").Activate 'Nom du classeur
Set w1 = Sheets("histo") 'Feuille qui contient les duppliques
Set w2 = Sheets("duplic") 'Feuille qui contient l'historique des vols
Set w3 = Sheets("traitement") 'Feuille qui doit faire apparaitre les vols duppliques daans histo
For I = 2 To w1.Range("c65536").End(xlUp).Row
    If Application.WorksheetFunction.CountIf(w2.Range("a:a"), w1.Range("a" & I)) = 0 Then
              w1.Range("a" & I & ":a" & I).Copy Destination:=w3.Range("a65536").End(xlUp).Offset(1, 0)
    End If
Next
MsgBox "TERMINE"
End Sub
 
Hello
ton fichier en retour avec un bouton à cliquer
dans ton fichier.. il n'y avait pas de lignes communes. donc rien à identifier et à copier dans la troisième feuille ==> j'ai donc ajouté une ligne pour le test

Fichier supprimé à la demande de l'auteur du post
 
Dernière édition:
euh.. non, ce n'est pas plus clair.. désolé..
avec ton fichier fourni
peux tu expliquer et montrer quelles lignes de quelle feuilles doivent etre recopiées dans la feuille traitement.. ??

dans l'exemple j'ai 23 lignes dans duplicates alors je doit les trouver dans histo
si tu les trouves.. alors. que fais tu..
si tu ne les trouves pas.. que fais tu?

et dans le fichier.. on ne les trouve pas non plus.. aucune ligne commune entre les deux feuilles..
 
pfffff... va vraiment falloir faire un effort pour expliquer... je ne comprend rien !

ton fichier "Trafic_histo_fevrier_2018"===> ca correspont à la feuille "Histo" du premier fichier?
les lignes jaunes sont celles qui doivent etre identifiées et donc copiées dans traitement???

tu parles de filtres..
dans la feuille "Duplic"
==> Filtre sur Colonne A : 24/02/2018 ==> UNE SEULE ligne==> colonnne X = DLH2222 - Colonne X = A

si je filtre aussi dans la feuille "HISTO"
colonne A: 24/02/2018==> 159 lignes ==>
filtre colonne E pour avoir "DLH2222" ===> AUCUNE ligne
(y aurait il une subtilité entre "DLH222 et LH222" ???)

ce que j'ai compris,jusqu'à présent c'est:
l'INFO cherchée est constituée du "Flight Date Block" ET "Flight No" ET "ARR_Dep"
cette info dans la feuille DUPLIC correspond aux colonnes A X et Y
cette info dans la feuille HISTO correspond aux colonnes A E et AM
 
peut etre ceci.. au cas ou....
Cette macro liste les DOUBLONS présents dans la feuille Histo et les mets dans la feuille Traitement...

VB:
Sub DOUBLONS()
Application.ScreenUpdating = False

Dim TabHisto() As Variant

With Sheets("Histo")
    finH = .UsedRange.Rows.Count
    TabHisto = .Range("A1:AN" & finH).Value 'on met toutes les infos de la feuille Histo dans un tablo
End With


For I = LBound(TabHisto, 1) To UBound(TabHisto, 1) - 1 'on check les doublons
    If TabHisto(I, 1) = TabHisto(I + 1, 1) And TabHisto(I, 5) = TabHisto(I + 1, 5) And TabHisto(I, 39) = TabHisto(I + 1, 39) Then
        TabHisto(I, 40) = "VRAI"
    End If
Next I

For I = LBound(TabHisto, 1) To UBound(TabHisto, 1) 'on parcourt tout le tableau "Histo"
    If TabHisto(I, 40) = "VRAI" Then 'si c'est un doublon
        With Sheets("Traitement") 'on colle les info dans la feuille traitement
            .Range("A" & .Rows.Count).End(xlUp).Offset(1, 0) = TabHisto(I, 1)
            For j = LBound(TabHisto, 2) + 1 To UBound(TabHisto, 2)
                .Range("A" & .Rows.Count).End(xlUp).Offset(0, j - 1) = TabHisto(I, j)
            Next j
        End With
    End If
Next I

Application.ScreenUpdating = True

End Sub
 
VB:
Sub IntToHeure()
With Sheets("Duplic")
    Set ici = Application.InputBox("Sélectionnez la colonne à convertir", Type:=8)
  
    fin = .UsedRange.Rows.Count
    colonne = ici.Column
  
    For I = 2 To fin
        test = Format(.Cells(I, colonne), "0000")
        .Cells(I, colonne) = (Left(test, 2)) & ":" & Right(test, 2)
   Next I
End With
End Sub
 
Salut
Comme tu ne réponds pas aux questions que je te pose...je ne suis toujours pas sur d'avoir compris...
La question c'est : MONTRE MOI une ligne ou plusieurs qui SONT des duplicates
en attendant: Voici ce que j'ai compris pour l'instant: Regarde et corrige moi..

1) votre systeme informatique créé un fichier "Histo.csv"
2) Dans ce fichier, il y a des vols dupliqués
==>soit parce que ils ont la meme date et le meme numéro et le meme sens (Colonnes A, AM et E)
==> soit parce que il n'y a pas de numéro de vol (Colonne E = vide)
3) tu veux retrouver TOUS ces vols dupliqués pour pouvoir les modifier

la nouvelle macro que je viens de faire (dans la Pièce jointe)
fait un tri sur les colonnes A E et AM
met une formule en AN (cette formule a besoin du tri précédent)
cette formule montre les "dupliqués"
la macro fait ensuite un filtre pour ne voir QUE les dupliqués
la macro copie les Dupliqués dans la feuille que j'ai appelée "DuplicatesHisto"

Fichier supprimé à la demande de l'auteur du post
 
Dernière édition:
ouh laa... je pense avoir compris un élément important...

les duplicates sont DEJA identifiés par votre système informatique DANS le fichier duplicate !! ===> Correct??

et donc. ce que tu veux..
pour chaque duplicate, retrouver la ligne correspondante dans le fichier Histo pour pouvoir la modifier...==>Correct?
 
ok !
on progresse...
maintenant, question suivante..
Comment souhaites tu que la macro fonctionne? ==> que veux tu qu'elle fasse?

1) je suppose que tu vas modifier toutes les lignes UNE par UNE à la MAIN
2) 1er exemple de fonctionnement
==>dans une troisième feuille: tu as
la ligne duplicate, et juste en dessous la ligne Histo correspondante ==> comme ca, tu peux voir les deux lignes en meme temps
tu modifies les lignes "histo" ==> Tu valides, et les modifs sont enregistrées dans la feuille Histo d'origine

2eme exemple de fonctionnement
==> tu cliques sur une ligne duplicate ===> tu cliques sur un bouton
==> la macro t'emmene directement sur la ligne correspondante dans Histo
==> tu modifies cette ligne, et tu valides ==> la ligne duplicate disparait de la feuille duplicate..

3eme exemple..???peut etre as tu une idée précise de comment tu veux travailler pour moidifier les lignes histo?
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
332
  • Question Question
Microsoft 365 Code VBA
Réponses
7
Affichages
622
Réponses
12
Affichages
874
  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
482
Réponses
3
Affichages
518
Réponses
5
Affichages
470
  • Question Question
Réponses
6
Affichages
609
Retour