Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

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,

Arffff, j'ai compris l'inverse de la question, c'est à dire remplacé SAINT par ST, donc effectivement, il doit y avoir un petit soucis de code que je regarderai apès mangé.

Bon ap,

@+
 

digitman

XLDnaute Nouveau
Re : Macro Chercher remplacer

porcinet82 à dit:
re,

Arffff, j'ai compris l'inverse de la question, c'est à dire remplacé SAINT par ST, donc effectivement, il doit y avoir un petit soucis de code que je regarderai apès mangé.

Bon ap,

@+

merci encore
moi je souhaite remplacer ST par SAINT (ou STE par SAINTE)
 

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

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 ???
 

porcinet82

XLDnaute Barbatruc
Re : Macro Chercher remplacer

re,

Arfff, j'ai oublié de remodifier le code apres avoir effectué le test sur mon fichier excel. Modifie les lignes suivantes Cells(i, 2).Value = dep & ... par Cells(i, 1).Value = dep & ...

@+
 

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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…