Touver un morceau de texte à l'interieur d'une cellule sous vba

Résolu
sinxay Messages postés 7 Date d'inscription mercredi 16 mai 2007 Statut Membre Dernière intervention 29 octobre 2008 - 28 oct. 2008 à 14:59
sinxay Messages postés 7 Date d'inscription mercredi 16 mai 2007 Statut Membre Dernière intervention 29 octobre 2008 - 29 oct. 2008 à 11:39
Bonjour,

Voila je souhaite inclure une vérification avant de copier une ligne en VBA.
Le but est de copier la ligne uniquement si le code "blabla" est présent à l'intérieur de la cellule qui sert de référence.

Mes recherches m'ont dirigé vers la fonction EVAL mais elle n'existe pas en VB.
Puis la fonction SWITCH, mais là je ne dois pas comprendre comment m'en servir.

J'ai donc pour l'instant un truc du genre:

Dim recherche   As String
Dim eval            As Boolean

recherche = "blabla"
eval = Switch(recherche, Value - Cells(1, 1))
if eval = true then .....copie

Il peut bien évidement y avoir quelque chose avant "blabla" ou pas et quelque chose après "blabla" ou pas.

Merci d'avance pour votre aide.

7 réponses

lillith212 Messages postés 1229 Date d'inscription vendredi 16 novembre 2007 Statut Membre Dernière intervention 16 juin 2009
28 oct. 2008 à 15:04
Bonjour,
la fonction instr ne fonctionne pas en vba???

S.L.B.
<hr />-- Le règlement tu liras -- Des recherches tu feras -- Le style SMS tu banniras --
-- De la validation pertinente tu feras -- Du respect tu auras -- <
3
lillith212 Messages postés 1229 Date d'inscription vendredi 16 novembre 2007 Statut Membre Dernière intervention 16 juin 2009
28 oct. 2008 à 15:06
Pardon tu es en vb donc tu peux utiliser instr
InStr, fonction, exemple
Cet exemple utilise la fonction InStr pour renvoyer la position de la première occurrence d'une chaîne dans une autre chaîne.

Dim SearchString, SearchChar, MyPos
SearchString = "XXpXXpXXPXXP"   ' Chaîne dans laquelle s'effectue la 
' recherche.
SearchChar = "P"   ' Recherche la chaîne "P".

' Une comparaison sans respect des majuscules et des minuscules commence ' à la position 4 et renvoie 6.
MyPos =  Instr( 4, SearchString, SearchChar, 1)   

' Une comparaison avec respect des majuscules et des minuscules commence ' à la position 1 et renvoie 9.
MyPos  = Instr(1, SearchString, SearchChar, 0)

' Par défaut (lorsque le dernier argument est omis),la recherche respecte ' les majuscules et les minuscules.
MyPos =   Instr( SearchString, SearchChar)   ' Renvoie 9.

MyPos  = Instr(1, SearchString, "W")   ' Renvoie 0.


(extrait de msdn library)

S.L.B.
<hr />-- Le règlement tu liras -- Des recherches tu feras -- Le style SMS tu banniras --
-- De la validation pertinente tu feras -- Du respect tu auras -- <
3
sinxay Messages postés 7 Date d'inscription mercredi 16 mai 2007 Statut Membre Dernière intervention 29 octobre 2008
28 oct. 2008 à 15:54
Moi administrateur,...---... faire développement avec feu fumée et couverture. (Cause mission de M...)

Merci beaucoup je crois que j'ai pigé comment ça marchait.
Pour ce qui est du raisonnement biblique de l'info-bulle MS, ben si t'as pas payé ta formation tu rame.
3
lillith212 Messages postés 1229 Date d'inscription vendredi 16 novembre 2007 Statut Membre Dernière intervention 16 juin 2009
28 oct. 2008 à 16:09
Re:

Désolée pour la mise en forme mais si tu as des questions n'hésite pas....

Bon courage

S.L.B.
<hr />-- Le règlement tu liras -- Des recherches tu feras -- Le style SMS tu banniras --
-- De la validation pertinente tu feras -- Du respect tu auras -- <
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
sinxay Messages postés 7 Date d'inscription mercredi 16 mai 2007 Statut Membre Dernière intervention 29 octobre 2008
28 oct. 2008 à 16:52
J'ai un petit soucis.

J'ai fais trouner ta commande, j'ai comme résultat 6, 9, 9, 0.

Hors je cherche un truc du genre "deux mots" ou "DEUX MOTS" et des fois "Deux Mots" dans "blablabla Deux motS blablabla"

si j'utilise InStr(4, SearchString, SearchChar, 1), mon resultat est 0
si j'utilise InStr(SearchString, "deux mots"), mon resultat est 1
si j'utilise InStr(SearchString, "DEUX MOTS"), mon resultat est 1

Je n'ai pas réussi à ignorer les majuscules et ninuscules.
3
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
28 oct. 2008 à 19:10
Bonsoir,

Intéresse-toi à la fonction UCASE (ou LCASE) et applique la même tant à la chaîne cherchée qu'à celle dans laquelle tu cherches.
3
sinxay Messages postés 7 Date d'inscription mercredi 16 mai 2007 Statut Membre Dernière intervention 29 octobre 2008
29 oct. 2008 à 11:39
Merci à vous.

Pour ceux qui passeria dans le coin voici le petit bout de code qui marche:
Initialise tout en majuscule et verifie à l'interieur de la cellule.

Sub test()
col = "h"
For i = 2 To 20
verif = "DEUX MOTS"
cel = UCase(Cells(i, col).Value)
eval = InStr(cel, verif)
If eval > 0 Then MsgBox ("ligne " & i & " eval est " & eval)
Next
End Sub
3
Rejoignez-nous