Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

chercher mot ds groupe de mots

  • Initiateur de la discussion odile
  • Date de début
O

odile

Guest
bonjour à toute et à tous

j'aimerais adapter la macro ci-dessous pour que le mot recherché déclenche le msgbox même si celui-ci se trouve dans une phrase. Par contre dans l'exemple ci-joint, il ne faut pas qu'un mot contenant 'PP' soit choisi.

Merci d'avance pour votre aide.

Odile

Code:
Option Compare Text
'L'Option Compare Text en Top de Module permettra de saisir indifféremment en MAJ ou en min...

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address(0, 0) = 'A1' Then
        If Target = 'PP' Then
            MsgBox 'Veuillez utiliser du PETG de préférence pour vos répartitions'
        End If
    End If
End Sub
 

pierrejean

XLDnaute Barbatruc
bonjour Odile

teste quelque chose dans le genre:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(0, 0) = 'A1' Then
If Target Like '*mot*' Then
MsgBox 'Le mot 'mot' est dans cette cellule '
End If
End If
End Sub
 
O

odile

Guest
Bonjour PierreJean

Merci pour ta réponse. J'ai testé ta modif, mais le hic c'est que si je tape motus dans la cellule, le message apparaît qd même à partir du moment ou le mot 'mot' est contenu dans un autre mot.

En fait je veux pouvoir déclencher ce message uniquement quand le mot sélectionné est compris dans une phrase mais isolé.

Odile
 
O

Odile

Guest
Pb non résolu

Bonjour à toutes et à tous

mon pb n'étant pas résolu, je relance un post dans le cas ou quelqu'un aurait une idée sur la question
amicalement
Odile
 

pierrejean

XLDnaute Barbatruc
Reb non résolu

re

je pense que comme cela ça ira mieux

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(0, 0) = 'A1' Then
If Target Like '* mot *' Then
MsgBox 'Le mot 'mot' est dans cette cellule '
End If
End If
End Sub

pas tres visibles les espaces a mettre avant et apres mot dans Like '* mot *' Then

Message édité par: pierrejean, à: 03/04/2006 15:48
 
O

odile

Guest
Reb non résolu

désolé j'ai essayé mais cela ne fonctionne plus du tout. J'entends par là que même lorsque le mot:mot est isolé rien ne se passe!

Odile
 

PascalXLD

XLDnaute Barbatruc
Modérateur
Reb non résolu

Bonjour

En fait il va falloir peut-être testé 3 conditions

1 - si le mot cherché est le premier mot
2 - si le mot cherché est le dernier mot
3 - si le mot cherché est au milieu

La macro de pierre -jean rempli la 3ème condition

je regarde pour le reste quand j'ai 5 minutes si personne ne s'y colle
 

PascalXLD

XLDnaute Barbatruc
Modérateur
Reb non résolu

RE

Essaies ceci


Bon courage

PS : J'ai supprimé ton post doublon
 
O

odile

Guest
Reb non résolu

merci à tous les 2 de vous donner tant de mal mais en ce qui concerne ta dernière macro (Pascal) apparement elle ne fonctionne pas. Si éventuellement tu peux me l'envoyer en fichier exemple ?

Merci encore
Odile
 

pierrejean

XLDnaute Barbatruc
Reb non résolu

hello Odile

Salut Pascal

@ Odile

teste cela

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(0, 0) = 'A1' Then

If LCase(Target) Like '* mot *' Then
MsgBox 'Le mot 'mot' est au milieu dans cette dans cette cellule '
End If
If Target Like 'mot *' Then
MsgBox 'Le mot 'mot' est au debut dans cette cellule '
End If
If Target Like '* mot' Then
MsgBox 'Le mot 'mot' est a la fin dans cette cellule '
End If
If Target Like 'mot' Then
MsgBox 'Le mot 'mot' est seul dans cette cellule '
End If

End If
End Sub
 
O

Odile

Guest
Reb non résolu

Merci PierreJean et Pascal

Les deux macros fonctionnent. Le seul point ainsi que je l'ai spécifié à Pascal dans mon précédent post, c'est que je ne veux pas tenir compte de la casse car l'utilisateur peut rentrer aussi bien des majuscules que minuscules.
 

pierrejean

XLDnaute Barbatruc
Reb non résolu

re

dans ma precipitation je n'ais prevu l'abscence de casse que dans le 1er cas
voila pour tous

tiens nous au courant

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(0, 0) = 'A1' Then

If LCase(Target) Like '* mot *' Then
MsgBox 'Le mot 'mot' est au milieu dans cette cellule '
End If
If LCase(Target) Like 'mot *' Then
MsgBox 'Le mot 'mot' est au debut dans cette cellule '
End If
If LCase(Target) Like '* mot' Then
MsgBox 'Le mot 'mot' est a la fin dans cette cellule '
End If
If LCase(Target) Like 'mot' Then
MsgBox 'Le mot 'mot' est seul dans cette cellule '
End If

End If
End Sub

Message édité par: pierrejean, à: 03/04/2006 17:44
 

PascalXLD

XLDnaute Barbatruc
Modérateur
Reb non résolu

RE

La macro de Pierre-Jean (qui était beaucoup plus simple que la mienne) modifiée

Private Sub Worksheet_Change(ByVal Target As Range)
Dim MonMot As String, MotCel As String

MonMot = 'EXCEL'

If Target.Address(0, 0) = 'A1' Then
MotCel = UCase(Target)
If MotCel Like '* ' & MonMot & ' *' Then
MsgBox 'Le mot ' & MonMot & ' est au milieu dans cette dans cette cellule '
ElseIf MotCel Like MonMot & ' *' Then
MsgBox 'Le mot ' & MonMot & ' est au debut dans cette cellule '
ElseIf MotCel Like '* ' & MonMot Then
MsgBox 'Le mot ' & MonMot & ' est a la fin dans cette cellule '
ElseIf MotCel Like MonMot Then
MsgBox 'Le mot ' & MonMot & ' est seul dans cette cellule '
End If

End If
End Sub


Bon courage
 

Discussions similaires

Réponses
5
Affichages
458
Compte Supprimé 979
C
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…