Bonjour,
Je voudrais savoir si une sous-chaîne se trouve en entier dans une chaîne
Les instructions du genre' inst'r ne conviennent pas.
Merci si vous pouvez m'aider.
Bonjour,
Je voudrais savoir si une sous-chaîne se trouve en entier dans une chaîne
Les instructions du genre' inst'r ne conviennent pas.
Merci si vous pouvez m'aider.
Bonjour,
Une solution par formule :
la Bretagne, ça me faisait plaisir
Code : Sélectionner tout - Visualiser dans une fenêtre à part =SI(ESTERREUR(TROUVE("ddDd";A1))=FAUX;"la sous chaine est présente";"pas de sous-chaine en bretagne")![]()
Cordialement,
Dom
_____________________________________________
Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
pensez à cliquer sur :resolu: si votre problème l'est
Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)
Merci casefayere,
Mais c'est du langage macro et pas du VBA.
Comment le mettre en VBA ?
... er vivent,les Bretons !
Tu as plusieurs solution, avec VBA :
- tu peux inserer la formule, toujours avec VBA, soit
avec formulaR1C1
si je reprends mon exempleou avec formulaLocal ou formula, là il faut que je regardes
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 range("B2").FormulaR1C1 = _ "SI(ESTERREUR(TROUVE(""ddDd"";A1))=FAUX;""la sous chaine est présente"";""pas de sous-chaine en bretagne"")"
-tu peux demander une réponse directe, soit dans une formule, soit dans un message ou autre, idem il faut que je regardes mais dis-en plus
Quelle option t'interesse ?
Excuses-moi, trop de chouchen, la formule
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 range("B1").FormulaR1C1 = _ "=IF(ISERROR(FIND(""ddDd"",RC[-1]))=FALSE,""la sous chaine est présente"",""pas de sous-chaine en bretagne"")"
Cordialement,
Dom
_____________________________________________
Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
pensez à cliquer sur :resolu: si votre problème l'est
Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)
Je veux savoir, si après avoir activé une cellule, sa valeur se trouve dans une liste donnée.
Donc t ne cherches pas un bout de texte à l'intérieur d'un autre texte, tu veux savoir si le contenu d'une cellule se trouve parmi une liste.
Si c'est ça, ou se trouve ta liste ?
Donc avec l'évènement "change", faire un "find" ?...si après avoir activé une cellule...
Cordialement,
Dom
_____________________________________________
Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
pensez à cliquer sur :resolu: si votre problème l'est
Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)
Voici, par exemple, ce que j'ai essayé, mais ça ne donne que l'existence du premier caractère et pas du tout l'ensemble de la chaîne.
etc.
Code : Sélectionner tout - Visualiser dans une fenêtre à part If InStr("GrisRougeVertBleuCyanMagentaJaune", xCamaieu)
si xCamaieu = "Vert", ou "Magenta ", c'est bon, etc., autrement c'est faux.
Je n'ai pas à savoir l'emplacement, mais si seulement ça existe.
En VBA, il n'y a pas d'instruction du genre 'contain' ?
Bonjour.
L'instruction Instr devrait convenir, mais avec tous ces argumentsCordialement,
Code : Sélectionner tout - Visualiser dans une fenêtre à part If InStr(1,"GrisRougeVertBleuCyanMagentaJaune", xCamaieu) Then
PGZ
Sinon, je pensai à une autre solution, à adapter bien sur, juste pour se servir de "like"
Re, je viens de revoir un excellent tuto, a relire flamel :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 Sub Macro3() Dim xcamaieu As String xcamaieu = "Vert" Range("A1") = "GrisRougeVertBleuCyanMagentaJaune" If Range("A1") Like "*" & xcamaieu & "*" Then MsgBox "la sous chaine est présente" Else MsgBox "pas de sous-chaine" End If End Sub
http://silkyroad.developpez.com/VBA/...racteres/#LI-D
dont ceci
La recherche est sensible à la casse si le dernier argument "compare" (facultatif) est égal à 0, ou omis.
(Casse: Signifie que la recherche n'est pas sensible aux majuscules et aux minuscules)
VB6-VBA
MsgBox InStr(1, "Developpez", "Z", 0) 'renvoie 0
MsgBox InStr(1, "Developpez", "z", 0) 'renvoie 10
La recherche n'est pas sensible à la casse si le dernier argument "compare" est égal à 1
VB6-VBA
MsgBox InStr(1, "Developpez", "z", 1) 'renvoie 10
MsgBox InStr(1, "Developpez", "Z", 1) 'renvoie 10
Cordialement,
Dom
_____________________________________________
Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
pensez à cliquer sur :resolu: si votre problème l'est
Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)
Bonjour,
Si Instr ne convient pas, regarde du coté de "Like" (voir dans l'aide). Pour une recherche en tenant compte ou non de la casse, définir en tête de module "Option Compare" (Binary ou Text) :
Hervé.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Sub RechercherChaine() Dim Texte As String Dim Chaine As String Texte = "Ici, c'est ma chaîne principale où doit s'effectuer la recherche du mot" 'les astérisques permettent la chaîne dans le texte, en ôtant l'un 'ou l'autre la chaîne est recherchée soit en dédut soit en fin du texte Chaine = "*doit s'effectuer*" MsgBox Texte Like Chaine End Sub
Oups,
désolé, je n'ai pas fait attention à la réponse donné par casefayere avec Like
Bonne journée à toutes et tous.
Hervé.
Bonjour.
La solution avec LIKE fonctionne bien. Mais Instr aussi, la preuveon obtient dans la fenêtre d'exécution
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 Sub Flamel() Dim sCouleur As String, sListe As String sListe = StrConv("GrisRougeVertBleuCyanMagentaJaune", vbUpperCase) sCouleur = "BLeU" Debug.Print sCouleur & " : " & IIf(InStr(1, sListe, StrConv(sCouleur, vbUpperCase)) > 0, "OK", "KO") sCouleur = "VertDeGris" Debug.Print sCouleur & " : " & IIf(InStr(1, sListe, StrConv(sCouleur, vbUpperCase)) > 0, "OK", "KO") End Sub
Le pb est que si l'on teste sCouleur = "VertBleu", la réponse sera OK. Pour éviter ce pb,BLeU : OK
VertDeGris : KOOn obtient alors
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 Sub Flamel2() Dim sCouleur As String, sListe As String sListe = StrConv("|Gris|Rouge|Vert|Bleu|Cyan|Magenta|Jaune|", vbUpperCase) sCouleur = "BLeU" Debug.Print sCouleur & " : " & IIf(InStr(1, "|" & sListe, StrConv(sCouleur, vbUpperCase) & "|") > 0, "OK", "KO") sCouleur = "VertBleu" Debug.Print sCouleur & " : " & IIf(InStr(1, "|" & sListe, StrConv(sCouleur, vbUpperCase) & "|") > 0, "OK", "KO") End SubOn peut bien-sûr adopter le même amendement pour la solution LIKE.BLeU : OK
VertBleu : KO
Bon dimanche, et, comme dirait casefayere, doucement sur la sous-chaîne!
PGZ
Merci à tous.
Problème résolu.
Tout est bien.
Cordialement.
Partager