Question

Je dois remplacer STRINGS mais jusqu'à présent, j'ai réussi à remplacer uniquement les mots.Le code passe par la colonne Description et est censé remplacer chaque séquence de la liste.L'idée est d'utiliser des abréviations (de nouvelles valeurs) plutôt que des mots complets (anciennes valeurs).

Chaque fois qu'il y a un mot, un caractère, etc. voisin (sans espace), le code échoue.Ce qui est faux?Merci!!!

Sub ReplaceWords_BUT_Need_ToReplaceStrings()

    Application.ScreenUpdating = False

    'This macro works with separated words only. Eliminate hyphens etc before applying this macro.

    Dim r As Range, A As Range
    Dim s1 As Worksheet, s2 As Worksheet, LastRow As Integer, v As String, j As Integer,      
    oldv As String, newv As String

    LastRow = Cells(Rows.count, "A").End(xlUp).row

    Set s1 = Sheets("JE_data")
    Set s2 = Sheets("ListToReplace")
    Set A = s1.Range("J:J").Cells.SpecialCells(xlCellTypeConstants)
    For Each r In A
        v = r.Value

        For j = 2 To LastRow

            oldv = s2.Cells(j, 1).text
            newv = s2.Cells(j, 2).text

'Remplacer la fonction telle que vous l'avez utilisée est sensible à la casse.« Êtes-vous sûr que tous les mots de votre facture commencent par une majuscule ?'Si ce n'est pas le cas, utilisez plutôt la fonction v = Replace(v, oldv, newv, 1, -1, vbTextCompare).D'ACCORD.

        v = Replace(v, oldv, newv, 1, -1, vbTextCompare)    
        'v = Replace(v, oldv, newv)

        Next j
        r.Value = Trim(v)

    Next r

    Application.ScreenUpdating = True

End Sub

Exemple:

ListeÀRemplacer

Left column (old)     Right column (new)
----------------------------------------
Invoice               inv 
Salary                sy 
Credit                cr 

JE_données

cr Note
cr note 
INV/2712/14RF/0229/14 
Invoice 1078 10 
TECHNOQ01SI 2014 03288

(Note de l'éditeur : Je ne sais pas si l'exemple est correct puisqu'il a été écrit dans les commentaires)

Credit a été remplacé par cr et Invoice devait être remplacé par inv mais ce n'était pas le cas

Était-ce utile?

La solution

La fonction Remplacer telle que vous l'avez utilisée est sensible à la casse.Êtes-vous sûr que tous les mots de votre facture commencent par une majuscule ?Sinon, utilisez

v = Replace(v, oldv, newv, 1, -1, vbTextCompare)

fonction à la place.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top