code vba pour comparer deux feuilles

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
 

vgendron

XLDnaute Barbatruc
Hello
au faite y'a un truc qu'il faut savoir , on met un num de vol bidon quand le champs number Flight est vide
ca aurait été cool de le dire dès le début....

voir le code ci dessous avec des commentaires explicatifs


VB:
Sub ModifierVol()
Dim tabMod() As Variant

With Sheets("Modification")
    fin = .Range("A" & .Rows.Count).End(xlUp).Row 'dernière ligne non vide de la colonne A
    tabMod = .Range("A2:F" & fin).Value 'récupère tout le tableau
    For i = LBound(tabMod, 1) + 1 To UBound(tabMod, 1) Step 2 'on parcourt les lignes du tableau de 2 en 2
        If tabMod(i, 3) = "" Then 'si Flight_No vide
            tabMod(i, 3) = "AF" & Format(i / 2, "0000") 'on place un numéro de vol bidon avec la compagnie AF
            tabMod(i, 5) = Format(i / 2, "0.000")
        Else
            If IsNumeric(Mid(tabMod(i, 3), 3, 1)) Then 'si c'est un nom de compagnie sur 3 caractères
                NomCompagnie = Left(tabMod(i, 3), 2)
            Else
                NomCompagnie = Left(tabMod(i, 3), 3)
            End If
            Numvol = CInt(WorksheetFunction.Substitute(tabMod(i, 3), NomCompagnie, "")) + 20 'on remplace le numéro de vol par Num+20
            tabMod(i, 5) = Numvol
        End If
    Next i
    .Range("A2:F" & fin) = tabMod 'on colles les résultats dans la feuille
    .Range("E2:E" & fin).NumberFormat = "00000" 'on applique un format pour afficher les numéros sur 5 caractères
End With


End Sub
 

raniou010

XLDnaute Nouveau
bonjour , oui c'est ma tutrice qui m'a expliqué ca hier en essayant de savoir pourquoi il reste toujours des duplications , sinon t'as pu voir stp le code que j'ai poster hier pour automatiser le choix de fichier duplicates et histo quelque soit l'année et enregistrer le résultat final de fichier histo modifier sous le nom histo_(année)_final.csv dans le fichier racine , pour mieux expliquer , quand j'ouvre histo_2015 par exemple , j'exécute une macro qui récupère le fichier duplicat_2015 et le met dans une feuille et elle crée la feuille modification , elle fait les modification nécessaires , puis elle enregistre le nouveau fichier sous le nom histo_(année)_final.csv , pour l'enregistrement de résultat j'ai eu cette idée je sais pas si c'est correcte ou pas :
Code:
'pour sauvegarder le fichier en csv
chemin = ActiveWorkbook.Path
    ActiveSheet.Copy
    With ActiveWorkbook
    .Title = ActiveSheet.Name
     .Subject = ActiveSheet.Name
    .SaveAs Filename:=chemin + "\" + ActiveSheet.Name + "_FINAL.csv"
  End With
 

vgendron

XLDnaute Barbatruc
Bonjour

toujours très difficile de comprendre ce que tu veux...

quand j'ouvre histo_2015 par exemple , j'exécute une macro qui récupère le fichier duplicat_2015 et le met dans une feuille et elle crée la feuille modification , elle fait les modification nécessaires , puis elle enregistre le nouveau fichier sous le nom histo_(année)_final.csv , pour l'enregistrement de résultat j'ai eu cette idée je sais pas si c'est correcte ou pas :

Où est la macro qui récupère le fichier.....fait les modif et enregistre??

pour le bout de code que tu as posté.. si il fait ce que tu veux. c'est qu'il est correct ..non?
 

raniou010

XLDnaute Nouveau
pour le code que j'ai posté oui il est correcte pour l'enregistrement , pour la récupération de fichier j'ai cru que j'ai posté le code l'autre fois j'ai fait un essaye , je le posterais apres demain car il est dans l'ordi de travail .. mercii
 

raniou010

XLDnaute Nouveau
salut , ca marche pas encore au faite , le but cette fois est de faire une macro tout d'abord qui vérifie s'il y a des duplication sur histo , si on a deux (ou +) lignes avec les meme (Vol : Code compagnie IATA + Numero de vo) le même (Vol : Code sens) et la même (Loc : Date block (HMS))c'est des dupliquées , et l'ensemble des lignes trouvées va nous faire un fichier duplicates . aprées on fait les changement comme avant :)
 

Discussions similaires

Réponses
7
Affichages
540
Réponses
12
Affichages
811
Réponses
6
Affichages
525
Réponses
4
Affichages
419

Statistiques des forums

Discussions
314 655
Messages
2 111 601
Membres
111 216
dernier inscrit
mauphico