Dans une cells, changer "M_lol______1" en "M_lol_1"

Bonjour,

Comme expliqué dans le titre, je cherche à coder une macro me permettant, sur une colonne, de rechercher dans chaque cellule le caractère "_", tester le caractère suivant, et le supprimer s'il s'agit encore d'un "_". Donc, par exemple, de passer de "M_lol______1" à "M_lol_1".

J'ai essayé en utilisant .Find("_", LookIn:=xlValues) ou bien des trucs du genre Val (Replace(Cells(i, 1), InStr(1, Cells(i, 1), "_" ...

mais je n'y arrive toujours pas, alors j'aurai bien besoin d'un petit coup de main

En vous remerciant d'avance

Bonjour,

Un code à tester en supposant que les données sont dans la colonne A :

Sub remplacer()
    Dim cel As Range
    For Each cel In Range("A1:A" & Range("A" & Rows.Count).End(xlUp).Row)
        For i = 1 To Len(cel) - Len(WorksheetFunction.Substitute(cel, "_", ""))
            cel.Value = WorksheetFunction.Substitute(cel, "__", "_")
        Next
    Next
 End Sub

Bonjour

Une autre idée (en attendant mieux)

Sub Nettoyage()
Dim Cel As Range

  Application.ScreenUpdating = False
  With Columns("A")
    Do
      Set Cel = .Find(what:="__", LookIn:=xlValues, lookat:=xlPart)
      If Cel Is Nothing Then Exit Do
      .Replace what:="__", replacement:="_", lookat:=xlPart
    Loop
  End With
End Sub

Merci, les 2 marchent très bien

Rechercher des sujets similaires à "changer lol"