Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Supprimer le dernier mot d'une phrase par macro

8 réponses
Avatar
Coriandre
Bonsoir,

Dans une cellule nommée (par exemple "coucou") qui contient une phrase
variable, j'aimerais par une macro supprimer le dernier mot si ce mot est
"salut" ou bien "bonjour" (par exemple).

La phrase peut contenir ces deux mots aussi à d'autres emplacements qu'en
dernier, et ils doivent alors être conservés dans la phrase.

Le résultat de la phrase dans la cellule "coucou" serait donc la phrase
initiale moins le dernier espace et moins le mot "salut" ou le mot
"bonjour".

Exemple :
"Salut c'est salut, bonjour c'est bonjour" devient "Salut c'est salut,
bonjour c'est".

Comment faire ?

Merci de votre aide.

--
Coriandre

8 réponses

Avatar
Daniel.C
Bonjour.

tablo = Split(ActiveCell)
If tablo(UBound(tablo)) = "coucou" Then
tablo(UBound(tablo)) = ""
ActiveCell = Left(Join(tablo), Len(Join(tablo)) - 1)
End If

Cordialement.
Daniel
"Coriandre" a écrit dans le message de news:
%
Bonsoir,

Dans une cellule nommée (par exemple "coucou") qui contient une phrase
variable, j'aimerais par une macro supprimer le dernier mot si ce mot est
"salut" ou bien "bonjour" (par exemple).

La phrase peut contenir ces deux mots aussi à d'autres emplacements qu'en
dernier, et ils doivent alors être conservés dans la phrase.

Le résultat de la phrase dans la cellule "coucou" serait donc la phrase
initiale moins le dernier espace et moins le mot "salut" ou le mot
"bonjour".

Exemple :
"Salut c'est salut, bonjour c'est bonjour" devient "Salut c'est salut,
bonjour c'est".

Comment faire ?

Merci de votre aide.

--
Coriandre





Avatar
Jacky
Bonjour,

'------------
Sub jj()
nom = "salut"
If Right([coucou], Len(nom)) = nom Then [coucou] = Left([coucou],
Len([coucou]) - Len(nom) - 1)
End Sub

'------------------
Ps:If.....then sur une seule ligne
--
Salutations
JJ


"Coriandre" a écrit dans le message de news:
%
Bonsoir,

Dans une cellule nommée (par exemple "coucou") qui contient une phrase
variable, j'aimerais par une macro supprimer le dernier mot si ce mot est
"salut" ou bien "bonjour" (par exemple).

La phrase peut contenir ces deux mots aussi à d'autres emplacements qu'en
dernier, et ils doivent alors être conservés dans la phrase.

Le résultat de la phrase dans la cellule "coucou" serait donc la phrase
initiale moins le dernier espace et moins le mot "salut" ou le mot
"bonjour".

Exemple :
"Salut c'est salut, bonjour c'est bonjour" devient "Salut c'est salut,
bonjour c'est".

Comment faire ?

Merci de votre aide.

--
Coriandre





Avatar
Coriandre
Bonjour,

Merci à Daniel et Jacky pour leurs codes, qui me permettent de voir un peu
les termes de la procédure.

Tous deux, cependant, me renvoient l'erreur d'exécution '5' : "Argument ou
appel de procédure incorrecte" si je n'enlève pas le "- 1" de :
Left(Join(tablo), Len(Join(tablo)) - 1)
pour l'un et le :
Left([coucou], Len([coucou]) - Len(nom) - 1)
pour l'autre.

Je suppose que le "- 1" correspond à l'espace libre en fin de cellule.

Cela fonctionne donc avec :
-----------------
nom = "salut"
If Right([coucou], Len(nom)) = nom Then [coucou] = Left([coucou], _
Len([coucou]) - Len(nom))
-----------------

Ou bien :
---------------
tablo = Split(Range("coucou"))
If tablo(UBound(tablo)) = "salut" Then
tablo(UBound(tablo)) = ""
ActiveCell = Left(Join(tablo), Len(Join(tablo)))
End If
-----------------

mais laisse donc l'espace après le dernier mot de la cellule "coucou".

Comment résoudre le problème ?

--
Coriandre



"Daniel.C" a écrit dans le message de
news:
Bonjour.

tablo = Split(ActiveCell)
If tablo(UBound(tablo)) = "coucou" Then
tablo(UBound(tablo)) = ""
ActiveCell = Left(Join(tablo), Len(Join(tablo)) - 1)
End If

Cordialement.
Daniel


___________________________________

"Jacky" a écrit dans le message de
news:
Bonjour,

'------------
Sub jj()
nom = "salut"
If Right([coucou], Len(nom)) = nom Then [coucou] = Left([coucou],
Len([coucou]) - Len(nom) - 1)
End Sub

'------------------
Ps:If.....then sur une seule ligne
--
Salutations
JJ


__________________________________


"Coriandre" a écrit dans le message de
news:%
Bonsoir,

Dans une cellule nommée (par exemple "coucou") qui contient une phrase
variable, j'aimerais par une macro supprimer le dernier mot si ce mot est
"salut" ou bien "bonjour" (par exemple).

La phrase peut contenir ces deux mots aussi à d'autres emplacements qu'en
dernier, et ils doivent alors être conservés dans la phrase.

Le résultat de la phrase dans la cellule "coucou" serait donc la phrase
initiale moins le dernier espace et moins le mot "salut" ou le mot
"bonjour".

Exemple :
"Salut c'est salut, bonjour c'est bonjour" devient "Salut c'est salut,
bonjour c'est".

Comment faire ?

Merci de votre aide.

--
Coriandre





Avatar
Daniel.C
Bonsoir.
Quelle phrase as_tu dans la cellule coucou ?
Daniel
"Coriandre" a écrit dans le message de news:
%
Bonjour,

Merci à Daniel et Jacky pour leurs codes, qui me permettent de voir un peu
les termes de la procédure.

Tous deux, cependant, me renvoient l'erreur d'exécution '5' : "Argument ou
appel de procédure incorrecte" si je n'enlève pas le "- 1" de :
Left(Join(tablo), Len(Join(tablo)) - 1)
pour l'un et le :
Left([coucou], Len([coucou]) - Len(nom) - 1)
pour l'autre.

Je suppose que le "- 1" correspond à l'espace libre en fin de cellule.

Cela fonctionne donc avec :
-----------------
nom = "salut"
If Right([coucou], Len(nom)) = nom Then [coucou] = Left([coucou], _
Len([coucou]) - Len(nom))
-----------------

Ou bien :
---------------
tablo = Split(Range("coucou"))
If tablo(UBound(tablo)) = "salut" Then
tablo(UBound(tablo)) = ""
ActiveCell = Left(Join(tablo), Len(Join(tablo)))
End If
-----------------

mais laisse donc l'espace après le dernier mot de la cellule "coucou".

Comment résoudre le problème ?

--
Coriandre



"Daniel.C" a écrit dans le message de
news:
Bonjour.

tablo = Split(ActiveCell)
If tablo(UBound(tablo)) = "coucou" Then
tablo(UBound(tablo)) = ""
ActiveCell = Left(Join(tablo), Len(Join(tablo)) - 1)
End If

Cordialement.
Daniel


___________________________________

"Jacky" a écrit dans le message de
news:
Bonjour,

'------------
Sub jj()
nom = "salut"
If Right([coucou], Len(nom)) = nom Then [coucou] = Left([coucou],
Len([coucou]) - Len(nom) - 1)
End Sub

'------------------
Ps:If.....then sur une seule ligne
--
Salutations
JJ


__________________________________


"Coriandre" a écrit dans le message de
news:%
Bonsoir,

Dans une cellule nommée (par exemple "coucou") qui contient une phrase
variable, j'aimerais par une macro supprimer le dernier mot si ce mot est
"salut" ou bien "bonjour" (par exemple).

La phrase peut contenir ces deux mots aussi à d'autres emplacements qu'en
dernier, et ils doivent alors être conservés dans la phrase.

Le résultat de la phrase dans la cellule "coucou" serait donc la phrase
initiale moins le dernier espace et moins le mot "salut" ou le mot
"bonjour".

Exemple :
"Salut c'est salut, bonjour c'est bonjour" devient "Salut c'est salut,
bonjour c'est".

Comment faire ?

Merci de votre aide.

--
Coriandre









Avatar
isabelle
bonjour Coriandre,

coucou = "Salut c'est salut, bonjour c'est bonjour"
'coucou = "Salut c'est salut, bonjour c'est bonjour salut"
If Right(coucou, 7) = "bonjour" Then coucou = Left(coucou, Len(coucou) - 8)
If Right(coucou, 5) = "salut" Then coucou = Left(coucou, Len(coucou) - 6)

isabelle

Bonjour,

Merci à Daniel et Jacky pour leurs codes, qui me permettent de voir un
peu les termes de la procédure.

Tous deux, cependant, me renvoient l'erreur d'exécution '5' : "Argument
ou appel de procédure incorrecte" si je n'enlève pas le "- 1" de :
Left(Join(tablo), Len(Join(tablo)) - 1)
pour l'un et le :
Left([coucou], Len([coucou]) - Len(nom) - 1)
pour l'autre.

Je suppose que le "- 1" correspond à l'espace libre en fin de cellule.

Cela fonctionne donc avec :
-----------------
nom = "salut"
If Right([coucou], Len(nom)) = nom Then [coucou] = Left([coucou], _
Len([coucou]) - Len(nom))
-----------------

Ou bien :
---------------
tablo = Split(Range("coucou"))
If tablo(UBound(tablo)) = "salut" Then
tablo(UBound(tablo)) = ""
ActiveCell = Left(Join(tablo), Len(Join(tablo)))
End If
-----------------

mais laisse donc l'espace après le dernier mot de la cellule "coucou".

Comment résoudre le problème ?

--
Coriandre



"Daniel.C" a écrit dans le message de
news:
Bonjour.

tablo = Split(ActiveCell)
If tablo(UBound(tablo)) = "coucou" Then
tablo(UBound(tablo)) = ""
ActiveCell = Left(Join(tablo), Len(Join(tablo)) - 1)
End If

Cordialement.
Daniel


___________________________________

"Jacky" a écrit dans le message de
news:
Bonjour,

'------------
Sub jj()
nom = "salut"
If Right([coucou], Len(nom)) = nom Then [coucou] = Left([coucou],
Len([coucou]) - Len(nom) - 1)
End Sub

'------------------
Ps:If.....then sur une seule ligne
--
Salutations
JJ


__________________________________


"Coriandre" a écrit dans le message de
news:%
Bonsoir,

Dans une cellule nommée (par exemple "coucou") qui contient une phrase
variable, j'aimerais par une macro supprimer le dernier mot si ce mot est
"salut" ou bien "bonjour" (par exemple).

La phrase peut contenir ces deux mots aussi à d'autres emplacements qu'en
dernier, et ils doivent alors être conservés dans la phrase.

Le résultat de la phrase dans la cellule "coucou" serait donc la phrase
initiale moins le dernier espace et moins le mot "salut" ou le mot
"bonjour".

Exemple :
"Salut c'est salut, bonjour c'est bonjour" devient "Salut c'est salut,
bonjour c'est".

Comment faire ?

Merci de votre aide.

--
Coriandre









Avatar
Jacky
Re...
Tous deux, cependant, me renvoient l'erreur d'exécution '5' : "Argument ou
appel de procédure incorrecte"
?????

Voir ici
http://cjoint.com/?mfaiDDxF7d
--
Salutations
JJ


"Coriandre" a écrit dans le message de news:
%
Bonjour,

Merci à Daniel et Jacky pour leurs codes, qui me permettent de voir un peu
les termes de la procédure.

Tous deux, cependant, me renvoient l'erreur d'exécution '5' : "Argument ou
appel de procédure incorrecte" si je n'enlève pas le "- 1" de :
Left(Join(tablo), Len(Join(tablo)) - 1)
pour l'un et le :
Left([coucou], Len([coucou]) - Len(nom) - 1)
pour l'autre.

Je suppose que le "- 1" correspond à l'espace libre en fin de cellule.

Cela fonctionne donc avec :
-----------------
nom = "salut"
If Right([coucou], Len(nom)) = nom Then [coucou] = Left([coucou], _
Len([coucou]) - Len(nom))
-----------------

Ou bien :
---------------
tablo = Split(Range("coucou"))
If tablo(UBound(tablo)) = "salut" Then
tablo(UBound(tablo)) = ""
ActiveCell = Left(Join(tablo), Len(Join(tablo)))
End If
-----------------

mais laisse donc l'espace après le dernier mot de la cellule "coucou".

Comment résoudre le problème ?

--
Coriandre




Avatar
Coriandre
Bonjour,

D'abord merci à Isabelle pour son aide.

Jacky : j'ai trouvé l'origine du message d'erreur que je recevais.

Je faisais l'essai sur une ligne ne contenant que le mot "salut", sans
espace devant.
Or ta macro et celle de Daniel effacent non seulement le mot, mais aussi un
espace devant, exactement comme je l'avais demandé.

Au total, les 3 macros proposées fonctionnent, à condition qu'effectivement,
il y ait un espace avant le mot à enlever.

Si on veut supprimer le mot avec ou sans espace devant, il suffit, même si
ce n'est pas très élégant, de faire la macro avec plusieurs "if", l'un avec
le mot à supprimer
= "salut", l'autre avec le mot à supprimer = " salut" (espace devant).

Merci encore à tous.

--
Coriandre

-----------------------------

"Jacky" a écrit dans le message de
news:
Re...
Tous deux, cependant, me renvoient l'erreur d'exécution '5' : "Argument
ou appel de procédure incorrecte"
?????

Voir ici
http://cjoint.com/?mfaiDDxF7d
--
Salutations
JJ


"Coriandre" a écrit dans le message de
news: %
Bonjour,

Merci à Daniel et Jacky pour leurs codes, qui me permettent de voir un
peu les termes de la procédure.

Tous deux, cependant, me renvoient l'erreur d'exécution '5' : "Argument
ou appel de procédure incorrecte" si je n'enlève pas le "- 1" de :
Left(Join(tablo), Len(Join(tablo)) - 1)
pour l'un et le :
Left([coucou], Len([coucou]) - Len(nom) - 1)
pour l'autre.

Je suppose que le "- 1" correspond à l'espace libre en fin de cellule.

Cela fonctionne donc avec :
-----------------
nom = "salut"
If Right([coucou], Len(nom)) = nom Then [coucou] = Left([coucou], _
Len([coucou]) - Len(nom))
-----------------

Ou bien :
---------------
tablo = Split(Range("coucou"))
If tablo(UBound(tablo)) = "salut" Then
tablo(UBound(tablo)) = ""
ActiveCell = Left(Join(tablo), Len(Join(tablo)))
End If
-----------------

mais laisse donc l'espace après le dernier mot de la cellule "coucou".

Comment résoudre le problème ?

--
Coriandre








Avatar
Coriandre
Bonjour,

Comment exprime-t-on par macro :
si le formulaire (userform) "zaza" est activé, alors... (par exemple, alors
la valeur de la cellule A1 est "oui") ?

Merci de votre aide.

--
Coriandre