Macro Chercher remplacer

digitman

XLDnaute Nouveau
Bonjour tout le monde,
je souhaite creer une macro excel pour les besoin d'un client, qui parcoure une colonne quelquonque et remplace dans les chaines de caractètres qui s'y trouvent le mot 'ST' par 'SAINT' et le mot 'STE' par 'SAINTE', j'ai pas pu automatiser ce rechercher remplacer à cause du cas suivant :
le mot ST ou STE se trouvant dans un mot de la chaine de caractère exemple : ST CHRISTOPHE

Merci d'avance
 

porcinet82

XLDnaute Barbatruc
Re : Macro Chercher remplacer

Salut,

Une solution par macro pour la colonne A, donc a adapter ensuite selon tes besoins :
Code:
Sub test()
Dim i&, dep$, fin$
For i = 1 To Range("A65536").End(xlUp).Row
    cellule = Cells(i, 1).Value
    If InStr(1, cellule, "SAINT") <> 0 Then
        dep = Left(cellule, InStr(1, cellule, "SAINT") - 1)
        fin = Mid(cellule, InStr(1, cellule, "SAINT") + 5, Len(cellule))
        Cells(i, 1).Value = dep & "ST" & fin
    End If
Next i
End Sub

@+
 

digitman

XLDnaute Nouveau
Re : Macro Chercher remplacer

porcinet82 à dit:
Salut,

Une solution par macro pour la colonne A, donc a adapter ensuite selon tes besoins :
Code:
Sub test()
Dim i&, dep$, fin$
For i = 1 To Range("A65536").End(xlUp).Row
    cellule = Cells(i, 1).Value
    If InStr(1, cellule, "SAINT") <> 0 Then
        dep = Left(cellule, InStr(1, cellule, "SAINT") - 1)
        fin = Mid(cellule, InStr(1, cellule, "SAINT") + 5, Len(cellule))
        Cells(i, 1).Value = dep & "ST" & fin
    End If
Next i
End Sub

@+
Merci porcinet82
j'ai fait ça :
Code:
Sub replacesaint()
Dim i&, dep$, fin$
For i = 1 To Range("A65536").End(xlUp).Row
    cellule = Cells(i, 1).Value
    If InStr(1, cellule, "ST") <> 0 Then
        dep = Left(cellule, InStr(1, cellule, "ST") - 1)
        fin = Mid(cellule, InStr(1, cellule, "ST") + 5, Len(cellule))
        Cells(i, 1).Value = dep & "SAINT" & fin
    End If
Next i
End Sub
voici quelques resultats
ST JULIEN DU TOURNEL --> SAINTLIEN DU TOURNEL
ST AMANS --> SAINTANS
ST GAL --> SAINTL

Esque j'ai fait une mauvaise manip ??
 

porcinet82

XLDnaute Barbatruc
Re : Macro Chercher remplacer

re,

Voici le code modifié qui fonctionne au moins pour les exemples de ton précédents posts :
Code:
Sub test()
Dim i&, dep$, fin$
For i = 1 To Range("A65536").End(xlUp).Row
    cellule = Cells(i, 1).Value
    If InStr(1, cellule, "STE") <> 0 Then
        dep = Left(cellule, InStr(1, cellule, "STE") - 1)
        fin = Mid(cellule, InStr(1, cellule, "STE") + 3, Len(cellule))
        Cells(i, 2).Value = dep & "SAINTE " & fin
    ElseIf InStr(1, cellule, "ST") <> 0 Then
        dep = Left(cellule, InStr(1, cellule, "ST") - 1)
        fin = Mid(cellule, InStr(1, cellule, "ST") + 3, Len(cellule))
        Cells(i, 2).Value = dep & "SAINT " & fin
    End If
Next i
End Sub

@+
 

digitman

XLDnaute Nouveau
Re : Macro Chercher remplacer

porcinet82 à dit:
re,

Voici le code modifié qui fonctionne au moins pour les exemples de ton précédents posts :
Code:
Sub test()
Dim i&, dep$, fin$
For i = 1 To Range("A65536").End(xlUp).Row
    cellule = Cells(i, 1).Value
    If InStr(1, cellule, "STE") <> 0 Then
        dep = Left(cellule, InStr(1, cellule, "STE") - 1)
        fin = Mid(cellule, InStr(1, cellule, "STE") + 3, Len(cellule))
        Cells(i, 2).Value = dep & "SAINTE " & fin
    ElseIf InStr(1, cellule, "ST") <> 0 Then
        dep = Left(cellule, InStr(1, cellule, "ST") - 1)
        fin = Mid(cellule, InStr(1, cellule, "ST") + 3, Len(cellule))
        Cells(i, 2).Value = dep & "SAINT " & fin
    End If
Next i
End Sub

@+
C bon ça fonctionne merci, mais pourquoi la macro me copie chaque cellule modifié dans la celle de la mme ligne dans la colonne B et elle ne le modifie pas sur place ???
 

digitman

XLDnaute Nouveau
Re : Macro Chercher remplacer

porcinet82 à dit:
re,

Il y a une question la ?
Je ne vois pas ce que ca change, la macro doit fonctionner de la même manière, que le ST soit au début, au milieu ou a la fin.

@+
ça n'a pas marché pour les mots qui contiennent ST à la fin et pour tester j'ai crée un mot par hasard qui contient un ST a la fin et la macro l'a remplacé par SAINT.
Exemple : DigitmanST --> digitmanSAINT
 

porcinet82

XLDnaute Barbatruc
Re : Macro Chercher remplacer

re,

Voici un nouveau code qui a l'air de fontionner pour tes noms farfellus ;)
Code:
Sub test()
Dim i&, dep$, fin$
For i = 1 To Range("A65536").End(xlUp).Row
    cellule = Cells(i, 1).Value
    If InStr(1, cellule, "STE") <> 0 Then
        If Mid(cellule, InStr(1, cellule, "STE") - 1, 1) = " " Then
            dep = Left(cellule, InStr(1, cellule, "STE") - 1)
            fin = Mid(cellule, InStr(1, cellule, "STE") + 3, Len(cellule))
            Cells(i, 2).Value = dep & "SAINTE " & fin
        End If
    ElseIf InStr(1, cellule, "ST") <> 0 Then
        If Mid(cellule, InStr(1, cellule, "ST") - 1, 1) = " " Then
            dep = Left(cellule, InStr(1, cellule, "ST") - 1)
            fin = Mid(cellule, InStr(1, cellule, "ST") + 3, Len(cellule))
            Cells(i, 2).Value = dep & "SAINT " & fin
        End If
    End If
Next i
End Sub

@+
 

Discussions similaires

Statistiques des forums

Discussions
312 215
Messages
2 086 330
Membres
103 188
dernier inscrit
evebar