Rechercher un mot au milieu d'une cellule

Bonjour,

J'ai une colonne contenant du texte dans chaque cellule comme suit :

Nom:Prénom:Poste

Je split les valeurs de ma cellule comme suit :

valeur = Split(Sheets("BaseDeDonnées").Cells(i,"A"),":")

Je cherche à trouver un MOT précis dans cette cellule pour le POSTE.

Exemple : TOTO:TOTO1:FACTEUR

j'ai donc comme code :

for i = 2 to 100
valeur = Split(Sheets("BaseDeDonnées").Cells(i,"A"),":")
if range(valeur(2)).value LIKE "*FACTEUR" then
valeur(2) = "Courrier"
end if
next i

Le problème c'est que si ma valeur(2) est différent de "FACTEUR", mon code bug, et si j'ajoute un error resume next, il rentre dans ma boucle IF meme si le mot facteur n'y est pas...

Je pense que mon if n'est pas bien correcte et je cherche le morceau de code pour cette fonction

Merci de votre aide !

Bonjour,

à tester,

If Not IsError(Application.Find("FACTEUR", range(valeur(2)))) Then 

nan la méthode range a echoué...

En fait j'ai l'impression qu'il bug car je fais un range sur une valeur et non une cellule, je tente un autre truc je vois si ca marche

Bonjour,

Si c'est un mot précis comme dit :

if valeur(2) = "FACTEUR" then

eric

re

si valeur(2) n'est pas une adresse,

If Not IsError(Application.Find("FACTEUR", valeur(2))) Then 

Hello problème réglé !

J'ai changé de méthode, j'ai collé ma valeur dans une cellule d'une feuille de test

Test = "FACTEUR"
                    Sheets("test").Activate
                    Cells(1, 1).value = valeur(2)
                    Cells(1, 1).Select
                    If ActiveCell.Text Like "*FACTEUR*" Then
                        valeur(2) = "BLABLBALBALBAL"
                    End If

Bonjour,

Je ne vois pas très bien l'intérêt du "Range" dans l'histoire ?

Tu as plusieurs possibilités pour faire ce que tu souhaites. La plus simple à mon avis, c'est de séparer tes données dans des colonnes différentes grâce à "Données" --> "Convertir" et choisir un séparateur personnalisé ":". Tu peux ensuite utiliser "Rechercher et remplacer" dans la colonne appropriée pour remplacer "FACTEUR" par "Courrier".

Une autre possibilité à tester (non exhaustive) :

Sub RemplacerMetier()

Dim i As Integer, valeur() As String

With Sheets("BaseDeDonnées")
    For i = 2 To 100
        valeur = Split(.Range("A" & i), ":")
        If valeur(2) = "FACTEUR" Then 'cas où FACTEUR n'est pas contenu dans un texte plus long, sinon utiliser Like "*FACTEUR*", qui est sensible à la casse
            valeur(2) = "Courrier"
            For j = LBound(valeur) To UBound(valeur)
                .Range("A" & i) = .Range("A" & i) & ":" & valeur(j)
            Next j
        End If
    Next i
End With

End Sub

PS : si le mot FACTEUR n'est pas présent dans les autres parties de ta cellule (Nom, Prénom), il suffit de faire :

.Range("A" & i)=Replace(.Range("A" & i), "FACTEUR", "Courrier")

Aussi possible sans VBA avec "Rechercher et remplacer"...

Aussi, avec un petit fichier exemple, je pourrais te faire des propositions pour n'utiliser que des formules, sans passer par VBA.

Rechercher des sujets similaires à "rechercher mot milieu"