Condition avec recherche de mot

Condition avec recherche de mot - VB/VBA/VBS - Programmation

Marsh Posté le 27-07-2016 à 00:09:48    

Bonjour à tous,
 
Je vous expose mon problème :
 
J'ai une macro xlsx me permettant de copier plusieurs lignes provenant d'un premier fichier xlsx (fichier 1) dans un autre fichier xlsx (fichier 2).
 
Il y a quelques semaines je vous avais demandé de m’aider concernant un problème sur une double condition if :
 
Bref rappel :
Dans le premier fichier "1", j'ai une colonne B avec pour choix de valeur X ou Y, et, dans une deuxième colonne C j'ai pour choix 1, 2 ou 3.
Pour le moment ma macro copie toutes les lignes du tableau fichier "1"dans un tableau sur le fichier "2".
Je souhaiterai cependant que quand la valeur dans la colonne B est de Y et la valeur dans la colonne C est 1 ou 2, cette ligne ne soit pas copiée.
 
Et la solution :
 
If not( Cells(i, 2).Value = "y" And (Cells(i, 3).Value = 1 Or Cells(i, 3).Value = 2)) Then
 
 
Cependant , maintenant je souhaiterai que quand un certain « mot » est détecté dans la colonne D du fichier 1, la ligne correspondante ne soit pas copiée.
La colonne D peut contenir le mot « test », « test 1 », « test 2 » … « test A » … ou d’autre choses.
J’aimerai que dès que le mot « test » est détecté dans la colonne D, et même au sein d’autres mots ( ex « test unautremot » ) la ligne correspondante ne soit pas copiée.

 
 
Pourriez-vous m’aider ?
 
Je vous remercie d’avance.
 
Thomas
 
 
Version Excel : 2013 FR

Reply

Marsh Posté le 27-07-2016 à 00:09:48   

Reply

Marsh Posté le 27-07-2016 à 08:29:30    

Salut,
 
Avant la dernière parenthèse, ajoute :

Code :
  1. And (Instr(1,Ucase(Cells(i,4).Value), "TEST" ) > 0)


 
Instr(début, chaîne rechercher, expression recherchée) : fonction de recherche de chaîne dans une chaîne
 
Ucase : mise en majuscule de la chaîne où tu cherches (je le fais toujours pour éviter les problème de casse mixte)
"TEST" : le mot ou l'expression que tu cherches (peut contenir des espaces comme "TEST TOTO" )
 
Instr retourne un integer qui indique la position de l'expression trouvée, donc si c'est > 0 c'est que c'est trouvé.


Message édité par Chelmi18 le 27-07-2016 à 08:30:50
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed