Comparaison d'un fichier Txt et d'un fichier xlsx

Bonsoir,

J'aimerais savoir si il une possibilité de comparer 2 fichiers entre eux,un et 1 fichier txt et l'autre xlsx.

Le but de la manœuvre étant de voir les différences de données entre les 2.

Merci de votre aide.

Cordialement.

Bonjour,

Pour savoir si c'est faisable il faudrait un exemple de tes 2 fichiers

Et que tu sois très précis sur ce qu'il faut comparer et comment tu veux le résultat (à fournir sur l'exemple), en mettant bien tous les cas.

Quel est le séparateur sur le fichier texte ? Absent d'un coté ou de l'autre, différent d'un coté ou de l'autre, égaux, etc

Et est-ce que c'est à faire 1 fois ou régulièrement avec les noms de fichier qui changent ?

eric

Bonsoir Eric,

Vu que c'est pour le travail,je mettrais les 2 fichiers sur une clé USB.

Comment faire pour envoyer une pj ?

C'est à faire à chaque fois avec des données différentes car je reçois un fichier de traçabilité de notre sous traitant et dois le convertir en fichier txt. L'écartement des caractères du fichier txt est important car il correspond à un code barre.

Bonne soirée.

Hervé

Comment faire pour envoyer une pj ?

Lorsque tu rédiges un message regarde plus bas un onglet 'ajouter des fichiers joints'.

Tu parlais de comparer, maintenant de convertir. Explique-toi bien lorsque tu auras les fichiers, c'est 90% du travail bien fait (dans la mesure où c'est réalisable et que ce n'est pas 2 jours de boulot).

eric

Bonjour Eric,

Voilà comme prévu voici les fichiers à comparer.Il faudrait que ça m'indique les différences de données qu'il y a entre les 2 fichiers.

Les fichiers avec un 2 devant ,sont des articles sérialisés (n° de série )tandis que ceux avec un 1 sont lotis ( n° de lot ).le chiffre final est la quantité.

ex txt:

2#392-136-905-0#12E1188#&0 1

1#327-701-660-0#0000018152#&0 1

ex xlsx:

1 12E1188 392-136-905-0

Ce qui est important pour moi c'est les données des colonnes H(1) ,I (12E1188 ou 0000018152) ,P(392-136-905-0)

L'espacement est important car il correspond à la longueur d'un code barre.

Il faudrait que ça m'indique les différences de données qu'il y a entre les 2 fichiers.

C'est le fichier txt dont je me sers dans mon ERP( SAP).

j'espère que mes explications sont claires.

Merci de ton aide.

Hervé

24em017839.zip (15.91 Ko)

Bonjour,

SAP extrait en format .csv Non ?

j'espère que mes explications sont claires.

Je ne peux pas dire qu'elles ne le sont pas, il n'y en a pas, ou si peu...

On ne sait pas s'il faut contrôler le xls par rapport au txt, ou l'inverse, ou les deux. Si c'est du ligne à ligne ou pas (bon là on se doute que c'est non)

Et on n'a pas le détail du comment, ni d'exemple précis.

Il faudrait qcq chose dans ce style :

Pour toutes les lignes du xls j'ai la ref en C. Par exemple 12345 en C2.

Cette ref je la retrouve en ligne 4 du txt, au 5ème champ, caractères 8 à 12

Si je ne la retrouve pas je fais ça ...

Si je la retrouve, comparer D2 avec le champ 3, si différent mettre D2 en rouge (ou ajouter une colonne et y mettre la valeur du txt, ou les 2, ou copier la ligne xls dans une autre feuille, ou CE QUE TU VEUX)

etc

Toi tu connais tes fichiers, tu sais où est quoi et ce que ça veux dire. Nous non.

L'espacement est important car il correspond à la longueur d'un code barre.

Sans doute, mais je ne sais même pas où il est ce code barre. J'ai un doute dans le txt mais rien dans le xls qui y ressemblerait (?). Et quelle longueur ? Y'a-t'il une caractéristique de début ou de fin ? Enfin dit tout ce qui peut aider...

eric

Bonsoir Eric,

Oui,il faut comparer chaque ligne du fichier xlsx avec celui en txt .

Le code barre n'est que dans le txt ,il est de forme:

2#392-136-905-0#12E1188#&0 1 le 2 signifie que c'est un article sérialisé,ensuite le code article,le n° de série et enfin la quantité

1#327-701-660-0#0000018152#&0 1 idem que les articles sérialisés mais ils s'agit d'articles lotis.

Le fichier xlsx est envoyé par mon sous traitant et moi je dois intégrer le n° de lot et de série des composants dans le fichier txt que j'envoi dans SAP.Il faudrait qu'il apparaisse en rouge par exemple dans une colonne de mon fichier xlsx, les n° de lot ,de série différents de mon fichier txt.

Cordialement.

Hervé

Bonjour,

Je ne vais pas t'arracher tous les renseignements un par un.

le 2 signifie que c'est un article sérialisé

1 idem que les articles sérialisés mais ils s'agit d'articles lotis

Ou détecte-t-on ça dans le xls ?

D'où sort le &0 en fin de code barre ? C'est constant ? Sinon où dans le xls ?

2#392-136-905-0#12E1188#&0 1 le 2 signifie que c'est un article sérialisé,ensuite le code article,le n° de série et enfin la quantité

Tu parles de code article. Dans le xls on trouve que ça correspond au n° lot, et dans le texte tu dit que c'est la colonne I qui t'intéresse : DATE_CODE, où on retrouve presque le même code

Il faudrait qu'il apparaisse en rouge par exemple dans une colonne de mon fichier xlsx, les n° de lot ,de série différents de mon fichier txt.

Un couple lot-ref peut être présent où absent, mais pas différent, tous les autres sont différents... La quantité elle peut-être différente

Et je ne vois aucun espace dans tes codes barre...

J'aurais sans doute encore des questions mais tu n'as pas l'air décidé à faire des efforts. Je crois que je vais passer mon tour et laisser ma place à qcq'un de plus patient.

Si tes explications suivantes ne sont pas complètes (même si une question n'a pas été posées) ne soit pas surpris que je ne réponde pas.

eric

Bonsoir Eric,

Je vais essayer d'être plus clair dans mes explications:

Il s'agit du même article:

Fichier xlsx

000001030743 07/05/2013 PG 6895008300 VIS CZX M3X12 TRAITEE 18 0009 0000019240 18 0000019240

Lot ou date code Quantité

Fichier Txt

10064220 328-003-627-0-ST EM017839 19 1#689-500-830-0[/b]#0000019240#&0 18

Loti Code article Lot ou date code Quantité

Ma demande est de vérifier si le le couple code article/lot ou date code est le même dans le fichier txt et xlsx ainsi que les quantités.La taille de mon code barre est déterminé par l'espacement entre le 0 et le chiffre final (quantité).

J'espère ce coup ci que mes explications sont plus claires.Après je ne sais plus quoi dire puisque j'ai joint les 2 fichiers en pj.

Hervé

Bonjour,

J'ai failli laisser tomber au post précédent.

Malgré le Je ne vais pas t'arracher tous les renseignements un par un. j'ai quand même essayé en te posant un certain nombre de questions, renseignements que tu aurais dû fournir d'office.

Résultat :

  • 1ère question : pas de réponse
  • 2ème question : pas de réponse
Inutile d'aller plus loin, c'est se moquer du monde.

Je n'ai pas du tout envie de passer 1h sur tes fichiers pour m'entendre répondre Ah oui, mais en fait...

Il n'y aura pas de 4ème demande d'explications complètes et précises, donc bonne continuation sans moi, attend qcq'un d'autre.

eric

Bonjour

1ère étude à vérifier si le résultat est conforme

Le fichier texte et ce fichier dans le même répertoire

Bonjour Banzai 64,

Faut-il juste cliquer sur "Vérification" car si c'est bien le cas,ça demande un débogage ?

J'ai copié ton fichier dans le même répertoire que mon fichier txt,,est ce bien cela ?

Cordialement.

Hervé

Bonjour

Pas de problème lors de l'exécution

Ton fichier texte doit bien s'appeler "TRPU TT EM017839.txt" et être dans le même répertoire que le fichier xls

Marques l'erreur et sur quelle ligne

Bonsoir,

Cela marque "erreur d’exécution 1004".

Cordialement.

Hervé

Bonsoir

Ça c'est la moitié de la réponse, il manque sur quelle ligne

Il faudrait si je ne vois pas pourquoi l'erreur, que tu fournisses ton fichier en défaut

Bonjour,

Voilà ce que ça m'indique quand je clique sur "Débogage "

Mais je n'y connais rien,désolé de ne pouvoir de te donner la ligne précise.

J'ai copié ton fichier dans le même répertoire que mon fichier txt et xlsx et quand je clique sur " vérification",j'ai un message "erreur d’exécution 1004". Est ce que ça marche chez toi ?

Je clique sur "Débogage" et voici ce que ça dit:

Option Explicit

Sub Compare()

Dim Ws As Worksheet

Dim J As Long

Dim Chemin As String, Fichier As String

Dim Wb As Workbook

Dim Cel As Range

Application.ScreenUpdating = False

On Error Resume Next

Application.DisplayAlerts = False

Sheets("Txt").Delete

On Error GoTo 0

Application.DisplayAlerts = True

Chemin = ThisWorkbook.Path & Application.PathSeparator

Fichier = "TRPU TT EM017839.txt"

Workbooks.OpenText Filename:=Chemin & Fichier, _

Origin:=xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _

xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, _

Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), _

Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1)), TrailingMinusNumbers:=True

Set Wb = ActiveWorkbook

Wb.Sheets(1).Move after:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)

ActiveSheet.Name = "Txt"

Columns("E:E").TextToColumns Destination:=Range("J1"), DataType:=xlDelimited, _

TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _

Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar:="#", _

FieldInfo:=Array(Array(1, 1), Array(2, xlTextFormat), Array(3, xlTextFormat), Array(4, 1)), _

TrailingMinusNumbers:=True

Range("K2:K" & Range("K" & Rows.Count).End(xlUp).Row).Replace what:="-", replacement:="", lookat:=xlPart

With Sheets(1)

.Range("A2:O" & .Range("A" & Rows.Count).End(xlUp).Row).Interior.ColorIndex = xlNone

For J = 2 To .Range("C" & Rows.Count).End(xlUp).Row

Set Cel = Columns("K").Find(what:=Mid(.Range("C" & J), 4), LookIn:=xlValues, lookat:=xlWhole)

If Not Cel Is Nothing Then

If Cel.Offset(0, -5) = .Range("H" & J) And Cel.Offset(0, 1) = .Range("G" & J) Then

.Range("A" & J & ":O" & J).Interior.ColorIndex = 34

End If

End If

Next J

.Select

End With

On Error Resume Next

Application.DisplayAlerts = False

Sheets("Txt").Delete

On Error GoTo 0

Application.DisplayAlerts = True

End Sub

Cordialement.

Hervé

Bonjour

Quand tu cliques sur "Débogage " tu dois avoir une ligne surlignée en jaune

Lacpaisible a écrit :

Est ce que ça marche chez toi ?

Bien sur que cela fonctionne

Vérifies bien le nom de ton fichier texte

C'est avec le fichier que je t'ai envoyé ou avec ton fichier réel ?

Moi je ne vois pas comme cela

Bonjour,

Voilà la ligne surlignée en jaune

Wb.Sheets(1).Move after:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)

Les essais sont faits avec le fichier que tu m'as envoyé.

Cordialement.

Hervé

Bonjour

Comme je ne sais pas ce qui se passe

J'ai repris la macro pour traiter le problème d'une manière légèrement différente

A tester (cela fonctionne chez moi)

Rechercher des sujets similaires à "comparaison fichier txt xlsx"