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
 

pierrejean

XLDnaute Barbatruc
Re:pb 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
 

PascalXLD

XLDnaute Barbatruc
Modérateur
Re:pb 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
Re:pb non résolu

RE

Essaies ceci

Private Sub Worksheet_Change(ByVal Target As Range)
Dim monmot As String
monmot = 'Excel'
If Target.Address(0, 0) = 'A1' Then
   
If Len(Target) = Len(monmot) Then
       
If Target = monmot Then MsgBox 'Le mot 'mot' est dans cette cellule '
   
ElseIf Len(Target) > Len(monmot) Then
       
If Left(Target, Len(monmot)) = monmot And Mid(Target, Len(monmot) + 1, 1) = ' ' Then
            MsgBox 'Le mot ' & monmot & ' est dans cette cellule '
       
ElseIf Right(Target, Len(monmot)) = monmot And Mid(Target, Len(Target) - Len(monmot), 1) = ' ' Then
            MsgBox 'Le mot ' & monmot & ' est dans cette cellule '
       
ElseIf Target Like '* ' & monmot & ' *' Then
            MsgBox 'Le mot ' & monmot & ' est dans cette cellule '
       
End If
   
End If
End If
End Sub

Bon courage

PS : J'ai supprimé ton post doublon
 
O

odile

Guest
Re:pb 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
Re:pb 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
Re:pb 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
Re:pb 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
Re:pb 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
412
Compte Supprimé 979
C

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 276
Messages
2 086 714
Membres
103 378
dernier inscrit
phdrouart