Remplacer le resultat d'une formule par un texte

Bonjour à tous,

Débutant dans VBA, je recherches un code qui puisse remplacer le contenu d'une cellule si elle est égale à un resultat précis.

Par exemble dans le fichier ci joint, si le resultat de la formule =Droite(Gauche(cellule à verifier;5);3) est égale à "'CAR" alors remplacer la cellule par le mot "carburant"

Voici ce à quoi j'avais penser mais cela ne fonctionne pas...

Sub Test()

Dim Test As Long

Dim nb_lig2 As Integer

Test = Range("F" & i).FormulaR1C1 = "=RIGHT(LEFT(RC[1],5),3)"

nb_lig2 = Application.CountA(Columns("E"))

For i = nb_lig2 To 2 Step -1

If Test.Value = "CAR" Then Range("G" & i).Value = "Carburant"

Next

End Sub

Je pense ne pas être tres loin de la solution, ou completement à coté de la plaque ^^

Pouvez vous me venir en aide svp ? Je vous joins le fichier.

Merci pour votre aide,

Guillaume

11carburant.xlsm (18.30 Ko)

Bonjour,

La ligne d'attribution de ta variable test ne peut fonctionner, car elle est hors de ta boucle, et donc la variable i est par défaut égale à 0. Sauf que la cellule "F0" n'existe pas.

Ensuite, il est possible de simplifier, par exemple sans passer par une formule Excel inscrite dans une cellule, mais en évaluant directement le résultat :

Sub Test()

Dim nb_lig As Integer, i As Integer

nb_lig = Application.CountA(Range("E:E"))
For i = 2 To nb_lig
    If Mid(Range("G" & i), 3, 3) = "CAR" Then Range("G" & i) = "Carburant"
Next i

End Sub

BOnjour

voici une proposition

Sub test2()
Dim i As Integer
For i = 2 To [E65536].End(xlUp).Row
    If Mid(Cells(i, "G"), 3, 3) = "CAR" Then Cells(i, "G") = "Carburant"
Next i
End Sub

Fred

Edit :

Bonjour Pedro... j'avais pas vue que tu avais déjà répondu....

bonne journée

Fred

Bonjour fred2406 et Pedro22,

Vos deux solutions sont parfaites pour moi merci, je m'étais compliqué la vie à vouloir integrer absolument une formule alors qu'en isolant grâce à Mid(Cells(i, "G"), 3, 3) cela fonctionne. D'ailleurs pouvez vous m'expliquer comment cela fonctionne ? Comment cela arrive à identifier le "CAR" de la cellule grace au ",3,3)" svp ?

MERCI

Re bonjour

mid fonctionne de la manière suivante :

'5 est la position du caractère qui marque le début de la partie à extraire

'et 2 correspond au nombre de caractères à renvoyer)

Mid("Vendredi", 5, 2) ' renvoie "re"

Fred

Bonjour fred2406 et Pedro22,

Vos deux solutions sont parfaites pour moi merci, je m'étais compliqué la vie à vouloir integrer absolument une formule alors qu'en isolant grâce à Mid(Cells(i, "G"), 3, 3) cela fonctionne. D'ailleurs pouvez vous m'expliquer comment cela fonctionne ? Comment cela arrive à identifier le "CAR" de la cellule grace au ",3,3)" svp ?

MERCI

Salut Fred, pas de soucis, ta solution est encore plus light.

Mid est l'équivalent VBA de la fonction Excel STXT(). Ca t'évite d'utiliser une combinaison de GAUCHE et DROITE pour isoler des caractères au milieu d'un texte.

Le principe est le suivant (pour l'une comme pour l'autre) :

Mid(MonTexte,CaractèreDeDébut,NombreDeCaractèresAIsoler)

Ok super vous êtes au top j'ai bien compris le fonctionnement !

Merci à vous deux et bonne journée !

Guillaume

Rechercher des sujets similaires à "remplacer resultat formule texte"