Supprimer le dernier mot d'une phrase par macro

Le
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Daniel.C
Le #5388781
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" %
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





Jacky
Le #5388621
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" %
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





Coriandre
Le #5386461
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" 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" 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" 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





Daniel.C
Le #5386421
Bonsoir.
Quelle phrase as_tu dans la cellule coucou ?
Daniel
"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" 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" 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" 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









isabelle
Le #5386381
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" 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" 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" 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









Jacky
Le #5091481
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" %
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




Coriandre
Le #5085551
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" 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" 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








Coriandre
Le #5085531
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
Publicité
Poster une réponse
Anonyme