comment comparer les données de 2 fichiers xls - Logiciels - Windows & Software
Marsh Posté le 18-05-2006 à 21:19:50
Bonsoir, 
Les adresses ont-elles été écrites de la même façon dans les deux tableaux? 
sont-elles normalisées? 
Les clients ont-ils un identifiant? 
Quelle est la structure du tableau? 
Si un meilleur client est dépassé par l'un des 7000, faudra-t-il les changer de fichier? 
Sinon un petit programme en VB devrait pouvoir faire l'affaire. 
A la main je propose: ajouter une colonne au fichier 1000  avec un flag pour les repérer au moment des éliminations. 
ajouter par copie le tableau des 1000 à celui des 8000 
trier selon le critère qui permet de dire que deux lignes sont identiques, 
supprimer les lignes doubles 
sécurité: ne travailler que sur des copies des fichiers  
Cordialement
Marsh Posté le 18-05-2006 à 23:02:16
| seniorpapou a écrit :   | 
 
 
Merci de votre aide 
@+
Marsh Posté le 19-05-2006 à 13:45:32
Bonjour, 
Normalisé par exemple: 
 Madame -> Mme pour toutes et non:Me pour l'une Mme Pour l'autre etc... 
 Mademoiselle-> Mlle 
 Monsieur->Mr 
 Les adresses au format mailing (si je me souviens les majuscules sont obligatoires dans certains champs ...) 
 Est-ce urgent (ou en retard)? 
Cordialement 
  
Marsh Posté le 19-05-2006 à 19:24:07
Bonjour,
les champs sont bien normalisés et tout est écrit en majuscule (mailing oblige!)
Il faudrait que ce soit fait pour lundi ou mardi ...
Donc si je n'ai pas de solution en automatique pour lundi, je ferai le tout manuellement mardi en ajoutant un flag.
Merci
Marsh Posté le 19-05-2006 à 19:34:46
ReplyMarsh Posté le 19-05-2006 à 20:26:34
Bonsoir, 
pour complèter la réponse sur la normalisation: 
http://www.laposte.fr/sna/rubrique.php3?id_rubrique=88 
si je joins une ou deux macros sauriez-vous les copier et les lancer? 
cordialement 
Marsh Posté le 19-05-2006 à 20:47:58
ReplyMarsh Posté le 19-05-2006 à 21:05:18
| sidney4 a écrit : As-tu regardé du côté de la fonction EQUIV()  | 
 
 
Mon fichier excel ne ressemble plus à rien dans ultraedit...  
   
je trouve pas la fonction EQUIV...  
  
merci quand même 
Marsh Posté le 19-05-2006 à 21:20:58
Pour uedit, il faut faire une macro mais il faut bien connaitre uedit et ce n'est pas évident à expliquer sans avoir les fichiers en question. 
Pour la fonction EQUIV d'Excel, c'est une fonction que tu dois paramétrer dans le champ des formules. 
Je pense que Google pourrait être ton ami dans ce cas ci.
Marsh Posté le 19-05-2006 à 21:40:32
| bdv68 a écrit : Bonsoir,  | 
 
 
  
Je propose cette bidouille 
    
1) Faire une copie des deux fichiers et travailler sur les copies. 
 
A)Introduire la macro "cherche" dans le fichier 8000 
remplacer le 999 de la ligne   For n = 0 to 999   par le nombre exact des 1000  
 
Sub cherche() 
' 
' cherche Macro 
' Macro enregistrée le 08/04/2006 par PAPOU 
' 
 
' 
     
    Range("A1" ).Activate 
    ActiveCell.CurrentRegion.Select 
    'MsgBox ActiveCell.CurrentRegion.Rows.Count 
    nombrel = ActiveCell.CurrentRegion.Rows.Count 
   For n = 0 To 999 
    Range("J1" ).Offset(n, 0).Select 
     
    nbachercher = Selection.Value 
    If (Not IsNull(nbachercher)) And (Not IsEmpty(nbachercher)) And Not nbachercher = "" Then 
    Range("h:h" ).Select 
    With Selection 
    Set c = .Find(nbachercher, LookIn:=xlValues) 
    If Not c Is Nothing Then 
        firstAddress = c.Address 
        Do 
            c.Offset(0, 1).Value = n + 1 
            'c.Interior.ColorIndex = 4 
            Set c = .FindNext(c) 
        Loop While Not c Is Nothing And c.Address <> firstAddress 
    End If 
    End With 
    End If 
    Next n 
    
    
End Sub 
 
B)Pour concaténer voir 2) et 3) plus bas: soit le faire à la main soit : 
        a)introduire la macro concat dans le fichier 1000 et remplacer H29 dans les deux dernières lignes par H1000 (s'il y a 1000 lignes). Executer la macro 
        b)introduire la macro concat dans le fichier 8000 et remplacer H29 dans les deux dernières lignes par H8000 (s'il y a 8000 lignes). Exécuter la macro 
 
Sub concat() 
' 
' concat Macro 
' Macro enregistrée le 19/05/2006 par PAPOU 
' 
 
' 
    Range("H1" ).Select 
    ActiveCell.FormulaR1C1 = "=RC[-7]&RC[-6]&RC[-5]&RC[-4]&RC[-3]&RC[-2]&RC[-1]" 
    Range("H1" ).Select 
    Selection.AutoFill Destination:=Range("H1:H29" ), Type:=xlFillDefault 
    Range("H1:H29" ).Select 
End Sub 
 
2)Concaténer dans le fichier 1000 les 7 colonnes A B C D E F G dans la colonne H (à la main ou par concat) 
3)Concatener dans le fichier 8000 les 7 colonnes A B C D E F G dans la colonne H  (à la main ou par concat) 
 
4) copier la colonne H du fichier 1000 dans la colonne J du fichier 8000 
5) executer la macro "cherche" que vous aurez introduite au niveau du fichier 8000 
6) la colonne I aura dans ses cellules le numéro de la ligne identique  des 1000 (si tout va bien version excel etc..) 
7) trier le tableau sur le contenu de I (ordre au choix). 
8)Toutes les lignes ayant un numéro dans I seront regroupées vous pourrez les traiter ( couper etc) 
9) Dans le fichier 8000 toujours, supprimer les colonnes H  I  et  J 
10) après vous être assuré que cela vous convient, mettre en réserve votre fichier 8000 d'origine et renommer le nouveau 8000 avec le bon nom 
Cordialement 
 
 
 
Marsh Posté le 21-05-2006 à 17:37:01
Pour seniorpapou: 
Bonjour, 
  
J'ai fait un test de votre solution à la maison...je vais m'empresser de l'appliquer au boulot lundi... 
Tout est OK.   
  
Merci pour votre aide. 
  
  
Pour Sidney4: 
La solution de seniorpapou règle parfaitement mon problème...mais je ne manquerai pas de me pencher sur ultraedit...  
  
merci de votre participation à mon topic
Marsh Posté le 18-05-2006 à 18:57:59
Bonjour,
 
  
J'ai un fichier excel comportant l'ensemble des adresses clients (8000 clients) et un autre avec 1000 adresses des meilleurs clients (donc déjà compris dans la liste des 8000)
je veux pour pouvoir supprimer automatiquement ces 1000 adresses qui sont déjà dans les fichier client complet afin d'obtenir au final 1 fichier avec mes 1000 meilleurs clients et un autre avec les 7000 autres.
Si quelqu'un a une solution pour m'éviter de tout pointer manuellement....
Merci
@+
Message édité par bdv68 le 18-05-2006 à 18:58:43