Utilisation de la fonction InStr

Résolu
cs_Taeris Messages postés 14 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 29 octobre 2008 - 29 oct. 2008 à 13:37
cs_Taeris Messages postés 14 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 29 octobre 2008 - 29 oct. 2008 à 15:13
Bonjour a tous.

Je me retrouve un peu coince avec la fonction ci dessous.

Function TransfoTaxon(Taxon As String) As String

Dim LengthTaxon As Long
Dim WorNot As Integer

LengthTaxon = Len(Taxon)
WorNot = InStr(Taxon, " ", 1)

If WorNot <> 0 Then 'If there is at least a Space in the Taxon Name
    TransfoTaxon = Left(Taxon, 1) & ". " & Right(Taxon, LengthTaxon - WorNot)
Else
    TransoTaxon = Left(Taxon, 4)
End If

End Function

Mon but est de transformer une chaine de caracteres de la facon suivante : si elle est composee d'un seul mot, on prend les 4 premieres lettres de ce mot, si la chaine est composee de deux mots, on prend la premiere lettre du premier mot, suivie d un point et d un espace, puis le deuxieme mot.

Je pense que mon probleme vient de l utilisation de la fonction InStr, puisque pour etre honnete, je n'arrive meme pas a m'en servir dans une feuille de calcul. Je suis plutot curieux de savoir ce qui cloche ici !

Merci beaucoup pour votre aide !

3 réponses

lillith212 Messages postés 1229 Date d'inscription vendredi 16 novembre 2007 Statut Membre Dernière intervention 16 juin 2009
29 oct. 2008 à 13:46
Bonjour,

Function TransfoTaxon(Taxon As String) As String

Dim LengthTaxon As Long
Dim WorNot As Integer

LengthTaxon = Len(Taxon)
WorNot = InStr(Taxon, " ")

If WorNot > 0 Then           'If there is at least a Space in the Taxon Name
    TransfoTaxon = Left(Taxon, 1) & ". " & Right(Taxon, LengthTaxon - WorNot)  '--> tu prends pas le second mot, il faut utiliser la fonction mid je pense.
    TransfoTaxon = Left(Taxon,1) & ". " & Mid(Taxon,WorNot +1, LengthTaxon - WorNot)
Else
    TransoTaxon = Left(Taxon, 4)
End If

End Function

Essaie ca

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
cs_Taeris Messages postés 14 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 29 octobre 2008
29 oct. 2008 à 15:13
Probleme resolu en faisant TransfoTaxon = Left(Taxon,4) avant d'entrer dans la premiere boucle if, et en supprimant la deuxieme.

merci beaucoup pour ton aide :)
3
cs_Taeris Messages postés 14 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 29 octobre 2008
29 oct. 2008 à 15:03
Merci, ca me fait deja une partie du probleme de regle !

Ceci
dit il reste un probleme avec les strings d'un seul mot (sans espace
donc) : Il n'affiche rien du tout. J'ai essaye de lui faire afficher la
valeur de WorNot dans une cellule a cote, mais si je rajoute la ligne
Worksheets(1).Range("P2").Value = WorNot
 il me renvoie l'erreur #VALUE! ... J'ai un peu de mal a saisir. Est ce que c'est parceque WorNot = Null ?
0
Rejoignez-nous