Mid avec départ variable//Chaines caractères sép par des ","

Résolu/Fermé
geo3701 Messages postés 58 Date d'inscription mardi 16 avril 2013 Statut Membre Dernière intervention 8 août 2017 - 17 janv. 2014 à 16:07
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 - 20 janv. 2014 à 16:56
Bonjour,

Voici le bout de macro qui m'embète

For h = 0 To nboi - 1

r = 2 + 9 * h
lng1 = Mid(Range("G" & i).Value, r)
num= "*" & lng1 & "*"

recherche 'macro utilisant num

Next h

Mais j'ai droit à une "erreur d'exécution '13': Incompatibilité de type" au passage de la ligne lng1 = Mid(Range("G" & i).Value, r).

Le but en fait, c'est que parfois dans la cellule qui m'interesse, il peut y avoir des virgules qui séparent des chaines de caractères, et donc je veux prendre ces chaines une par une.

Avez vous des solutions simples?

Merci d'avance
A voir également:

3 réponses

Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
17 janv. 2014 à 16:33
Bonjour,

Difficile de donner une solution avec si peu d'explication et surtout trop confuse ...

Comment as-tu déclaré la variable lng1 ?

Si ton but est de chercher les chaînes séparées par une virgule, ton bout de code est à l'ouest de ce que tu veux faire !!!
0
geo3701 Messages postés 58 Date d'inscription mardi 16 avril 2013 Statut Membre Dernière intervention 8 août 2017 1
20 janv. 2014 à 16:21
Pour lng1 :
Public lng1 As Currency


En fait, certaines cellules contiennent plusieurs chaines de caractères, toutes débutant par un "N". La longueur d'une chaine est de 8 caractères.

Le contenu de cellule peut être, par ex:
N0123456
ou
N0123456,N0123457

Dans le premier cas, ça ne pose pas de pb, dans le 2nd, ce que je souhaite c'est de pouvoir récupérer dans un premier temps le N0123456 et dans un second N0123457.

Cdt
0
geo3701 Messages postés 58 Date d'inscription mardi 16 avril 2013 Statut Membre Dernière intervention 8 août 2017 1
20 janv. 2014 à 16:52
PS, le problème arrive lorsqu'il y a une virgule dans la cellule.
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
20 janv. 2014 à 16:56
Bonjour,

Public lng1 As Currency

lng1 est de type numérique.

Mid(Range("G" & i).Value, r)

Retourne une chaine de caractères ...

erreur d'exécution '13' vient de là !!!

Regarde la fonction Split() >> ici << pour récupérer des sous chaînes séparées par un délimiteur.

Il faudra, avant de passer par la fonction Split(), contrôler que la chaîne contient bien le caractère délimiteur.


;0)
0