Touver un morceau de texte à l'interieur d'une cellule sous vba [Résolu]

Signaler
Messages postés
7
Date d'inscription
mercredi 16 mai 2007
Statut
Membre
Dernière intervention
29 octobre 2008
-
Messages postés
7
Date d'inscription
mercredi 16 mai 2007
Statut
Membre
Dernière intervention
29 octobre 2008
-
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

Messages postés
1229
Date d'inscription
vendredi 16 novembre 2007
Statut
Membre
Dernière intervention
16 juin 2009
1
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 -- <
Messages postés
1229
Date d'inscription
vendredi 16 novembre 2007
Statut
Membre
Dernière intervention
16 juin 2009
1
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 -- <
Messages postés
7
Date d'inscription
mercredi 16 mai 2007
Statut
Membre
Dernière intervention
29 octobre 2008

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.
Messages postés
1229
Date d'inscription
vendredi 16 novembre 2007
Statut
Membre
Dernière intervention
16 juin 2009
1
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 -- <
Messages postés
7
Date d'inscription
mercredi 16 mai 2007
Statut
Membre
Dernière intervention
29 octobre 2008

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.
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
26
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.
Messages postés
7
Date d'inscription
mercredi 16 mai 2007
Statut
Membre
Dernière intervention
29 octobre 2008

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