Fonction pour afficher la partie texte qui n'existe pas dans deux cellules

Bonsoir tout le monde, je plante sur un code vba pour affichage de la partie du texte qui n'est pas présente dans deux cellules, par exemple dans la cellule R5 et S5, je dois avoir comme résultat

EXPORT REFERENCES FORWARDER REFERENCE: ME18050123 EXPORTER'S REFERENCE NUMBER: 8BR01593699100000000000000 000176470 ITN (INTERNAL TRANSACTION NUMBER) AS PROVIDED BY THE US AES: 18BR0002535156 SHIPPER'S REFERENCE NUMBER: 18/268-SC

J'ai essayé la fonction suivante mais elle ne m'affiche que le premier mot de la différence qui est export

Function CompareStrings(ByVal keyRng As Range, ByVal ansRng As Range) As String

Dim arr() As String

Dim i As Long

Dim found As Boolean

arr() = Split(ansRng.Value, " ")

For i = 0 To UBound(arr)

If InStr(keyRng.Value, Trim(arr(i))) = 0 Then

found = True

CompareStrings = arr(i)

Exit Function

End If

Next i

If Not found Then

arr() = Split(keyRng.Value, " ")

For i = 0 To UBound(arr)

If InStr(ansRng.Value, Trim(arr(i))) = 0 Then

CompareStrings = arr(i)

Exit Function

End If

Next i

End If

End Function

S'il vous plait, aidez moi

14intaud-4.xlsx (152.56 Ko)

Bonjour maha,

Ce n'est pas la seule différence :

un espace présent dans le n° RUC, la mention "CLEAN AND " absente et ce que vous citez,

01 X 20 DRY FCL CONTAINING: 80 DRUMS ON 20 PALLETS WITH 13.600,00 KG OF DIPENTENE SOLVENTE 820-T. N.C.M: 3805.90.90 / HS CODE: 3805.90 IMO CLASS 3 UN 2319 PKG III FLASH POINT 47 C 13.60 M. TONS 1 FCL DIPENTENE 93 PCT MIN (SOLVENT 820-T) CFR KARACHI, PAKISTAN PACKED IN 170 KGS NET EACH DRUM ON 20 FUMIGATED PALLET, AS PER INDENT NO.786/KBA/7420 DATED 14-06-2018 OF M/S. KHWAJA BASIR AHMED, KARACHI (H.S.CODE:2902.1920 FOR APPLICANT COUNTRY) (H.S.CODE:3805.9090 FOR BENEFICIARY COUNTRY) IMPORTERS NATIONAL TAX NO.0897153-6 LC/01/001/97805 DT 180626 NCM: 3805.90.90 / HS CODE: 3805.90 THE GOODS ARE OF BRAZIL ORIGIN. PORT OF DISCHARGE: KARACHI SEA PORT P.O. # P-126/18SC INVOICE: 18/268-SC DU-E: 18BR000253515-6 RUC: 8BR01593699100000000000000 000176470 14-DAYS FREE DETENTION TIME AT DISCHARGE PORT CLEAN AND SHIPPED ON BOARD FREIGHT PREPAID / FREIGHT AS PER AGREEMENT WOODEN PACKING: TREATED AND CERTIFIED *SHIPPER CONTINUATION: SALTO/SP - BRAZIL CONTACT: MR. MARIO SPERONI NETO PH: 55 (11) 4028-9900 *NOTIFY CONTINUATION: STREET, JODIA BAZAR KARACHI, PAKISTAN PHONE: 021-32441931 38059090 EXPORT REFERENCES FORWARDER REFERENCE: ME18050123 EXPORTER'S REFERENCE NUMBER: 8BR01593699100000000000000 000176470 ITN (INTERNAL TRANSACTION NUMBER) AS PROVIDED BY THE US AES: 18BR0002535156 SHIPPER'S REFERENCE NUMBER: 18/268-SC

01 X 20 DRY FCL CONTAINING: 80 DRUMS ON 20 PALLETS WITH 13.600,00 KG OF DIPENTENE SOLVENTE 820-T. N.C.M: 3805.90.90 / HS CODE: 3805.90 IMO CLASS 3 UN 2319 PKG III FLASH POINT 47 C 13.60 M. TONS 1 FCL DIPENTENE 93 PCT MIN (SOLVENT 820-T) CFR KARACHI, PAKISTAN PACKED IN 170 KGS NET EACH DRUM ON 20 FUMIGATED PALLET, AS PER INDENT NO.786/KBA/7420 DATED 14-06-2018 OF M/S. KHWAJA BASIR AHMED, KARACHI (H.S.CODE:2902.1920 FOR APPLICANT COUNTRY) (H.S.CODE:3805.9090 FOR BENEFICIARY COUNTRY) IMPORTERS NATIONAL TAX NO.0897153-6 LC/01/001/97805 DT 180626 NCM: 3805.90.90 / HS CODE: 3805.90 THE GOODS ARE OF BRAZIL ORIGIN. PORT OF DISCHARGE: KARACHI SEA PORT P.O. # P-126/18SC INVOICE: 18/268-SC DU-E: 18BR000253515-6 RUC: 8BR01593699100000000000000 000176470 14-DAYS FREE DETENTION TIME AT DISCHARGE PORT CLEAN AND SHIPPED ON BOARD FREIGHT PREPAID / FREIGHT AS PER AGREEMENT WOODEN PACKING: TREATED AND CERTIFIED *SHIPPER CONTINUATION: SALTO/SP - BRAZIL CONTACT: MR. MARIO SPERONI NETO PH: 55 (11) 4028-9900 *NOTIFY CONTINUATION: STREET, JODIA BAZAR KARACHI, PAKISTAN PHONE: 021-32441931 38059090 EXPORT REFERENCES FORWARDER REFERENCE: ME18050123 EXPORTER'S REFERENCE NUMBER: 8BR01593699100000000000000 000176470 ITN (INTERNAL TRANSACTION NUMBER) AS PROVIDED BY THE US AES: 18BR0002535156 SHIPPER'S REFERENCE NUMBER: 18/268-SC

Bonjour maha,

je te retourne ton fichier Excel modifié :

8intaud.xlsm (160.35 Ko)

fais Ctrl e ; sans l'espace en trop dans le RUC (puis sans le "CLEAN AND " en trop), tu aurais eu le résultat que tu as indiqué :

EXPORT REFERENCES FORWARDER REFERENCE: ME18050123 EXPORTER'S REFERENCE NUMBER: 8BR01593699100000000000000 000176470 ITN (INTERNAL TRANSACTION NUMBER) AS PROVIDED BY THE US AES: 18BR0002535156 SHIPPER'S REFERENCE NUMBER: 18/268-SC

regarde ci-dessous ma citation fluorée pour mieux voir les différences


@njhub : pour ta citation fluorée, tu as répété en bas le même texte qu'en haut ! aussi, je propose cette autre citation fluorée :

01 X 20 DRY FCL CONTAINING: 80 DRUMS ON 20 PALLETS WITH 13.600,00 KG OF DIPENTENE SOLVENTE 820-T. N.C.M: 3805.90.90 / HS CODE: 3805.90 IMO CLASS 3 UN 2319 PKG III FLASH POINT 47 C 13.60 M. TONS 1 FCL DIPENTENE 93 PCT MIN (SOLVENT 820-T) CFR KARACHI, PAKISTAN PACKED IN 170 KGS NET EACH DRUM ON 20 FUMIGATED PALLET, AS PER INDENT NO.786/KBA/7420 DATED 14-06-2018 OF M/S. KHWAJA BASIR AHMED, KARACHI (H.S.CODE:2902.1920 FOR APPLICANT COUNTRY) (H.S.CODE:3805.9090 FOR BENEFICIARY COUNTRY) IMPORTERS NATIONAL TAX NO.0897153-6 LC/01/001/97805 DT 180626 NCM: 3805.90.90 / HS CODE: 3805.90 THE GOODS ARE OF BRAZIL ORIGIN. PORT OF DISCHARGE: KARACHI SEA PORT P.O. # P-126/18SC INVOICE: 18/268-SC DU-E: 18BR000253515-6 RUC: 8BR01593699100000000000000000176470 14-DAYS FREE DETENTION TIME AT DISCHARGE PORT CLEAN AND SHIPPED ON BOARD FREIGHT PREPAID / FREIGHT AS PER AGREEMENT WOODEN PACKING: TREATED AND CERTIFIED *SHIPPER CONTINUATION: SALTO/SP - BRAZIL CONTACT: MR. MARIO SPERONI NETO PH: 55 (11) 4028-9900 *NOTIFY CONTINUATION: STREET, JODIA BAZAR KARACHI, PAKISTAN PHONE: 021-32441931 38059090

01 X 20 DRY FCL CONTAINING: 80 DRUMS ON 20 PALLETS WITH 13.600,00 KG OF DIPENTENE SOLVENTE 820-T. N.C.M: 3805.90.90 / HS CODE: 3805.90 IMO CLASS 3 UN 2319 PKG III FLASH POINT 47 C 13.60 M. TONS 1 FCL DIPENTENE 93 PCT MIN (SOLVENT 820-T) CFR KARACHI, PAKISTAN PACKED IN 170 KGS NET EACH DRUM ON 20 FUMIGATED PALLET, AS PER INDENT NO.786/KBA/7420 DATED 14-06-2018 OF M/S. KHWAJA BASIR AHMED, KARACHI (H.S.CODE:2902.1920 FOR APPLICANT COUNTRY) (H.S.CODE:3805.9090 FOR BENEFICIARY COUNTRY) IMPORTERS NATIONAL TAX NO.0897153-6 LC/01/001/97805 DT 180626 NCM: 3805.90.90 / HS CODE: 3805.90 THE GOODS ARE OF BRAZIL ORIGIN. PORT OF DISCHARGE: KARACHI SEA PORT P.O. # P-126/18SC INVOICE: 18/268-SC DU-E: 18BR000253515-6 RUC: 8BR01593699100000000000000 000176470 14-DAYS FREE DETENTION TIME AT DISCHARGE PORT SHIPPED ON BOARD FREIGHT PREPAID / FREIGHT AS PER AGREEMENT WOODEN PACKING: TREATED AND CERTIFIED *SHIPPER CONTINUATION: SALTO/SP - BRAZIL CONTACT: MR. MARIO SPERONI NETO PH: 55 (11) 4028-9900 *NOTIFY CONTINUATION: STREET, JODIA BAZAR KARACHI, PAKISTAN PHONE: 021-32441931 38059090 EXPORT REFERENCES FORWARDER REFERENCE: ME18050123 EXPORTER'S REFERENCE NUMBER: 8BR01593699100000000000000 000176470 ITN (INTERNAL TRANSACTION NUMBER) AS PROVIDED BY THE US AES: 18BR0002535156 SHIPPER'S REFERENCE NUMBER: 18/268-SC

dhany

Salut Maha,

premier jet imparfait et à la mécanique semi-aléatoire mais qui a le mérite d'exister. C'est déjà ça de pris!

La mise en forme des caractères d'une cellule étant manifestement impossible lorsqu'ils proviennent d'une formule, je reporte les deux textes de deux cellules à droite pour traitement.

Un double-clic démarre la macro.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'
Dim tData1, tData2, iStart%, iFlag%, iIdx%
Cancel = True
'
Columns("R:U").Font.Color = RGB(0, 0, 0)
Columns("R:U").ColumnWidth = 45
For iRow = 5 To Range("R" & Rows.Count).End(xlUp).Row
    sData1 = Replace(Replace(Replace(Range("R" & iRow).Value, "  ", " "), Chr(10), " "), Chr(160), " ")
    sData2 = Replace(Replace(Replace(Range("S" & iRow).Value, "  ", " "), Chr(10), " "), Chr(160), " ")
    tData1 = Split(sData1, Chr(32))
    tData2 = Split(sData2, Chr(32))
    Range("T" & iRow).Value = sData1
    Range("U" & iRow).Value = sData2
    '
    For k = 1 To 2
        iStart = 1: iFlag = 0: iIdx = 0
        If k = 1 Then
            For x = 0 To UBound(tData1)
                If x > 0 Then iStart = iStart + Len(tData1(x - 1)) + 1
                iOK = 0
                For Z = iFlag To UBound(tData2)
                    If tData1(x) = tData2(Z) Then
                        If iIdx = 0 Then iFlag = Z
                        iOK = 1: Exit For
                    End If
                Next
                If iOK = 0 Then
                    If iIdx = 0 Then iFlag = x: iIdx = 1
                    Range("T" & iRow).Characters(iStart, Len(tData1(x))).Font.Color = RGB(255, 0, 0)
                End If
            Next
        Else
            For x = 0 To UBound(tData2)
                If x > 0 Then iStart = iStart + Len(tData2(x - 1)) + 1
                iOK = 0
                For Z = iFlag To UBound(tData1)
                    If tData2(x) = tData1(Z) Then
                        If iIdx = 0 Then iFlag = Z
                        iOK = 1: Exit For
                    End If
                Next
                If iOK = 0 Then
                    If iIdx = 0 Then iFlag = x: iIdx = 1
                    Range("U" & iRow).Characters(iStart, Len(tData2(x))).Font.Color = RGB(255, 0, 0)
                End If
            Next
        End If
    Next
Next
'
End Sub

A+

8intaud.xlsm (148.01 Ko)
Rechercher des sujets similaires à "fonction afficher partie texte qui existe pas deux"