XL 2010 Cherche un texte dans une cellule avec vba

Chrystel01

XLDnaute Occasionnel
Bonjour,

Je débute sur VBA et j'aurais une question svp...
j'ai une colonne A avec en ensemble de noms xxxpommexxx, yyypoire***,xxxcarotte***
Je souhaite que lorsque la macro trouve un champ qui contient pomme ou poire, elle écrive fruit sur la ligne correspondante en colonne B ou légume si elle trouve carotte

Sachant que j'ai créé une base de correspondance sur une autre feuille
pomme = fruit
poire = fruit
carotte = légume

Si vous aviez une solution, cela m'aiderait beaucoup.
Je vous remercie !

Chrystel
 

Chrystel01

XLDnaute Occasionnel
Bonjour,

Je vous remercie énormément pour ce retour très très rapide, détaillé et tellement utile.
Cela répond entièrement à mon besoin.
Merci aussi d'avoir expliqué la macro. Elle est très courte mais jamais je n'aurais réussi à la faire...
Alors un grand merci pour votre aide.
Bonne semaine

Chrystel
 

Chrystel01

XLDnaute Occasionnel
Bonjour,

Je vous souhaite tout d'abord une excellente année 2019.
Dans la macro jointe qui permet de trouver la correspondance d'un terme inclus dans une phrase

-Comment modifier le programme pour que la macro traite de la même façon :

1-les mots avec majuscule, minuscules, accents ou non ?
Exemple : que le texte inclut "légume;"Legume"; "LEgUMES" => la classification doit être aliment sur les 3 premières liges ci-dessous

1578324925444.png

2-les mots avec un espace
Exemple : "legumes1" et "legumes 1" doivent renvoyer la catégorie aliment.

Merci de votre aide :)

Chrystel
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Chrystel
En passant par une fonction :
Code:
Function Change(Mot)
    Mot = LCase(Mot)                ' Tout le mot en minuscules
    Mot = Replace(Mot, "é", "e")    ' Remplacement lettre accentuée
    Mot = Replace(Mot, "è", "e")
    Mot = Replace(Mot, "ê", "e")
    Mot = Replace(Mot, "à", "a")
    Mot = Replace(Mot, " ", "")     ' Suppression espaces
    If Right(Mot, 1) = "s" Then
        Mot = Mid(Mot, 1, Len(Mot) - 1) ' Supprime le s
    End If
End Function
Le test semble marcher :
Code:
Sub Test()
    Change ("LéguMes")
End Sub
Le problème peut se situer si un mot "normal" au singulier se terminé par un s ( genre stress ) mais je ne le pense pas.
Par contre Choux il faudrait supprimer le X mais Houx il faudrait le garder ! A voir à l'utilisation s'il faut le rajouter.
 
Dernière édition:

Chrystel01

XLDnaute Occasionnel
Bonjour Chrystel
En passant par une fonction :
Code:
Function Change(Mot)
    Mot = LCase(Mot)                ' Tout le mot en minuscules
    Mot = Replace(Mot, "é", "e")    ' Remplacement lettre accentuée
    Mot = Replace(Mot, "è", "e")
    Mot = Replace(Mot, "ê", "e")
    Mot = Replace(Mot, "à", "a")
    Mot = Replace(Mot, " ", "")     ' Suppression espaces
    If Right(Mot, 1) = "s" Then
        Mot = Mid(Mot, 1, Len(Mot) - 1) ' Supprime le s
    End If
End Function
Le test semble marcher :
Code:
Sub Test()
    Change ("LéguMes")
End Sub
Le problème peut se situer si un mot "normal" au singulier se terminé par un s ( genre stress ) mais je ne le pense pas.
Par contre Choux il faudrait supprimer le X mais Houx il faudrait le garder ! A voir à l'utilisation s'il faut le rajouter.
 

Chrystel01

XLDnaute Occasionnel
Bonjour Sylvanu,

Merci beaucoup pour ce retour express et toujours efficace.
Je pensais mettre le texte en majuscule pour résoudre le problème des accents => on n'aurait alors qu'à remplacer le texte par un texte en majuscules. Il existe une fonction pour cela ?
D'autre part, je n'arrive pas à voir comment compiler la 1ère macro et la fonction… J'ai essayé de les mettre dans 2 macros différentes, dans 1 seule mais je n'ai jamais fait cela et il semble que je ne fasse pas cela correctement
Pourriez-vous svp m'aider ? Je vous joints le fichier excel sur lequel j'ai 2 macros.
Un grand merci !
 

Pièces jointes

  • ChercheFruitLegumev1.xlsm
    16.8 KB · Affichages: 3

sylvanu

XLDnaute Barbatruc
Supporter XLD
En PJ un essai.
En fait une fonction s'appelle comme une fonction VBA.
On l'appelle Function Toto(paramètres)
Dans le VBA on fait X=Toto(valeurs_paramètres)
C'est très utile pour rendre le code lisible et plus léger si la même fonction est appelée plusieurs fois.
 

Pièces jointes

  • Copie de ChercheFruitLegumev1.xlsm
    17.1 KB · Affichages: 5

sylvanu

XLDnaute Barbatruc
Supporter XLD
Il existe un excellent tuto :) :) concernant les fonctions personnelles.
 

Chrystel01

XLDnaute Occasionnel
C'est l' insertion dans la macro de base que je ne trouvais pas : If Change_mot([Phrase]
Merci beaucoup pour la macro avec la fonction et l'excellent tuto !!!! C'est extra !!!!
Un grand merci pour les explications détaillées, votre disponibilité et vos réponses express !!! :):)
Bonne soirée
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 338
Messages
2 087 403
Membres
103 536
dernier inscrit
komivi