Recherche et Exception VBA

Résolu/Fermé
dubol - 3 nov. 2011 à 16:27
 dubol - 16 nov. 2011 à 15:21
Bonjour à tous,

Je but sur un petit problème.
Avant tout, un grand merci à tous ceux qui prendront la peine de me répondre.

Je ne comprends pas bien la fonction de cette ligne :
voici la ligne de code vba :
c = Columns(1).Find(base & "*", LookIn:=xlValues)


Cette ligne permet de stocker une valeur (ou plusieurs ?) dans "c".
Les mots stockées sont de la forme "Base" + "autre chose"

Le problème est le suivant :
Si ma base est "ONIX1"
Que j'ai dans ma colonne de recherche des mots comme : ONIX11, ONIX12, ONIX13, ONIX1.X, ONIX.Y, ONIX.X.W, ONIX.X.Y ...

Je voudrais qu'il ne prenne pas en compte ONIX11, ONIX12 et ONIX13 qui sont des intrus car la base existe dans le mot mais est utilisée pour une autre base et n'est pas séparé par un "." comme ONIX1.1

en résumé, avec ma ligne de cela donnerai quelques chose comme ceci:
c = Columns(1).Find(base & "." & "*", LookIn:=xlValues)


je garde "base" "point" "autre chose"

Je vous demande si c'est correcte car je ne peux pas tester tout de suite

2 réponses

Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 776
Modifié par Patrice33740 le 3/11/2011 à 17:11
La bonne syntaxe :
Set c = Columns(1).Find(base & ".*", LookIn:=xlValues, lookat:=xlWhole)
(Le set est obligatoire et le lookat est nécessaire pour éviter la sélection de ZONIX1.XX)
Cordialement
Patrice
0
Bonjour,

Merci Patrice33740 :D

J'ai une liste plus précise pour ma colonne de recherche :

BARRE-1
BARRE-1.1
BARRE-1.2
BARRE-11
BARRE-12

J'ai utilisé le mode de recherche de Patrice : base & ".*" mais il me les trouve tous alors que je voudrais qu'il ne trouve que (BASE = BARRE-1) :

BARRE-1
BARRE-1.1
BARRE-1.2
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 776
7 nov. 2011 à 14:31
Il faut 2 recherches
une pour la base :
base = "BARRE-1"
Set c = Columns(1).Find(base, LookIn:=xlValues, lookat:=xlWhole)

puis une autre pour les dérivés,
base = "BARRE-1"
Set c = Columns(1).Find(base & ".*", LookIn:=xlValues, lookat:=xlWhole)
0
J'ai du faire de cette manière :

Set c = .Find(base & "*", LookIn:=xlValues)
0