XL 2016 Problème avec fonction VBA

MCOTTEND

XLDnaute Nouveau
Bonsoir à Toutes et Tous,

Dans un feuille excel, je voudrai mettre en forme certaines expressions.

Le code VBA N°1 ci-dessous fonctionne parfaitement. Il me remplace bien "0000917222 PrestationsSante-" par "0000917222 PRESTATIONS SANTÉ".

A contrario, le code 2 ne fonctionne pas.. La commande " Set MaPlage = Sheets("BEC").UsedRange.Find("COTIS. SANTE")" renvoie "Nothing". Je précise que les cellulles contiennent une expression de la forme "20210715COTIS. SANTE 129446438-DC45BE40BAD44D1E94E281347574A378" De ce fait les remplacements ne s'effectuent pas.




Code 1
Set MaPlage = Sheets("BEC").UsedRange.Find("0000917222 PrestationsSante-")
If Not MaPlage Is Nothing Then
Cells.Select
Selection.Replace What:="0000917222 PrestationsSante-", Replacement:="0000917222 PRESTATIONS SANTÉ", LookAt:=xlWhole, SearchOrder:=xlByRows, _
MatchCase:=True, SearchFormat:=False, ReplaceFormat:=False
Else
GoTo Suite:
End If


Code 2 :
Set MaPlage = Sheets("BEC").UsedRange.Find("COTIS. SANTE")
If Not MaPlage Is Nothing Then
Cells.Select
Selection.Replace What:="COTIS. SANTE", Replacement:="COTISISATION SANTÉ", LookAt:=xlPart _
, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
Else
GoTo Suite:
End If


Quelqu'un pourrait-il m'aider ?

Vous en remerciant par avance,

Cordialement.

Michel
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir Mcottend,
Pour le code2 j'ai supprimé le goto suite qui créait une erreur, et ce code semble fonctionner :
20220903_214956.gif
 

TooFatBoy

XLDnaute Barbatruc
Bonjour,

A contrario, le code 2 ne fonctionne pas.. La commande
"Set MaPlage = Sheets("BEC").UsedRange.Find("COTIS. SANTE")"
renvoie "Nothing". Je précise que les cellulles contiennent une expression de la forme
"20210715COTIS. SANTE 129446438-DC45BE40BAD44D1E94E281347574A378"
De ce fait les remplacements ne s'effectuent pas.
Chez moi le code 2 fonctionne sans problème.

Il y a une espace entre le "." et le "S" dans l'expression recherchée. Est-ce normal ? Y en a-t-il vraiment une dans l'expression dans laquelle effectuer la recherche comme c'est le cas dans ton exemple ???
 

MCOTTEND

XLDnaute Nouveau
Bonsoir TooFatBoy,
Merci pour votre réponse.
Il y a bien un espace entre le point et le S.
J'ai fait un copier coller du contenu de la cellule.
Je travaille, pour info, avec excel 2016 :

1662239389323.png


Cordialement.

Michel
 

Pièces jointes

  • 1662239414679.png
    1662239414679.png
    18.8 KB · Affichages: 17

MCOTTEND

XLDnaute Nouveau
Bonsoir TooFatBoy et Cgendron,
Après une après-midi de test et recherche, je suis venu à bout de mon anomalie.
J'ai modifié mon code en

Set MaPlage = Sheets("BEC").UsedRange.Find("COTIS. SANTE", LookIn:=xlValues, LookAt:=xlPart)
If Not MaPlage Is Nothing Then
Cells.Select
Selection.Replace What:="COTIS. SANTE", Replacement:="COTISISATION SANTÉ", LookAt:=xlPart _
, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
Else
GoTo Suite_65:
End If


J'ai donc ajouté les arguments " LookIn:=xlValues" et "LookAt:=xlPart" à la fonction "Find" de ma première ligne de code et, maintenant tout fonctionne parfaitement.
J'ai absolument besoin de la fonction "if" avec "else" parce si je ne trouve pas le terme recherché dans mon fichier, le code de la première ligne me renvoie "Nothing" et je je peux pas continuer le déroulement de ma macro.

Merci à tous d'avoir essayer de m'apporter une solution.

Cette discution peut-être fermée.

Cordialement.

Michel
 

Discussions similaires

Réponses
1
Affichages
126

Statistiques des forums

Discussions
312 215
Messages
2 086 320
Membres
103 178
dernier inscrit
BERSEB50