Recherche et remplacement d'une chaine de caractères

Bonjour,

Je recherche une façon simple en VBA de rechercher une chaine de caractères dans une feuille Excel dans une colonne bien précise

et ensuite de la remplacer (ou + exactement d'en supprimer une partie)

Pour illustrer, ci-joint un fichier à titre d'exemple

Dans la colonne "Bref diagnostique",

je souhaite rechercher le contenu de toutes les cellules commençant par "Quel diagnostique voulez vous dérouler ?"

et éliminer tous les caractères jusqu'à "quel est le type de motorisation"

ex: la chaine de caractères initiale

Quel diagnostique voulez vous dérouler ? P12030

De quoi s'agit il? pompe injection

Id véhicule : non référencé

Quel est le type de motorisation ? CDTI

Quel est le type MINE ? non renseigné

pré diag établi ? NON

Y a t-il un message d'erreur OdB ? OUI

Type de message: error 430S

résultat souhaité:

Quel est le type de motorisation ? CDTI

Quel est le type MINE ? non renseigné

pré diag établi ? NON

Y a t-il un message d'erreur OdB ? OUI

Type de message: error 430S

je suppose que l'on peut utiliser la fonction "mid"??

35exemple.zip (8.06 Ko)

Bonjour,

Sub test()
Dim i&, iLen%, sDeb%, sFin%, replStr$
i = 1
Do While Cells(i, 5) <> ""
iDeb = InStr(1, Cells(i, 5), "Quel diagnostique voulez vous dérouler")
IFin = InStr(1, Cells(i, 5), "Quel est le type de motorisation")
iLen = IFin - iDeb
If iLen > 0 Then
replStr = Mid(Cells(i, 5), iDeb, iLen)
Cells(i, 5) = Replace(Cells(i, 5), replStr, "")
End If
i = i + 1
Loop
End Sub

A+

Merci pour cette solution

ça fonctionne

Possible d'avoir quelques explications détaillée du code?

je suis débutant en VBA

et pour progresser j'aimerais comprendre

Je comprends que 5 variables ont été déclarés:

qu'une recherche est effectuée dans la colonne 5

mais pas simple de décrypter précisément la manière de faire

A quoi correspond ces variables?

i&

iLen%

sDeb%

sFin%

replStr$

Que signifie par exemple? iDeb = InStr(1, Cells(i, 5)?

merci d'avance

Bonjour,

Le code commenté :

Sub test()
'Déclaration des variables
'Remarque : On aurait aussi pu écrire
'-> Dim i as Long, iLen as Integer, iDeb As Integer, iFin As Integer, replStr as String
'Cette déclaration est équivalente à celle-ci :
Dim i&, iLen%, sDeb%, sFin%, replStr$
'On initialise le compteur de ligne
i = 1
'On parcourt la colonne 5 tant que le contenu est non vide
Do While Cells(i, 5) <> ""
'On mémorise la position du string de début
iDeb = InStr(1, Cells(i, 5), "Quel diagnostique voulez vous dérouler")
'On mémorise la position du string de Fin
IFin = InStr(1, Cells(i, 5), "Quel est le type de motorisation")
'On en déduit la longueur de la chaine de caractère à couper
iLen = IFin - iDeb
'Si cette longueur est supérieure à zéro
If iLen > 0 Then
'On mémorise la chaine de caractère à couper dans une variable String
replStr = Mid(Cells(i, 5), iDeb, iLen)
'et on la remplace par... rien du tout
Cells(i, 5) = Replace(Cells(i, 5), replStr, "")
End If
'On incrémente le compteur de ligne
i = i + 1
'Et on examine la ligne suivante (si le contenu est non vide)
Loop
End Sub

A+

Super clair

très instructif!

merci beaucoup

je vais pouvoir l'adapter!

bon WE

Rechercher des sujets similaires à "recherche remplacement chaine caracteres"