pb de conditions

pb de conditions - VB/VBA/VBS - Programmation

Marsh Posté le 25-04-2003 à 15:32:35    


J'ai un petit probleme de condition, voila mon script:
If (pos1 = Application.WorksheetFunction.Find(".", truc, 1)) Then
 
Ce que je veux c'est que si un point existe dans la chaine truc, alors il me met sa position dans pos1.
ça marche en C, mais ça veut pas marcher en VB. Comment faire?

Reply

Marsh Posté le 25-04-2003 à 15:32:35   

Reply

Marsh Posté le 25-04-2003 à 20:18:15    

Comment ça ? Tu veux rechercher un point "." dans une chaine ? mettre ensuite son emplacement ? rien de plus simple...
 
La recette elle est pas compliqué :
- une boucles
- le code ASCII
- une condition
- une variable
 

Code :
  1. dim i as integer
  2. dim nb_caractere as integer 'nombre de caractère dans la chaine
  3. dim char_retour as string 'caractère retourné
  4. dim char_position
  5. nb = len("chaine de caractère" )
  6. for i = 1 to nb
  7. char_retour = mid("chaine de caractère",i,1)
  8. if char_retour = "." then
  9. char_position = i
  10. end if
  11. next i


 
Voilà, en trés gros ton code ! Tu vérifi, simplement la fonction "mid" à partir de l'aide de VB. C'est une fonction qui permet de connaître la position d'un caractère dans une chaine.
 
Ensuite, si tu as plusieurs points, tu peux faire un tableaux dynamique et l'intégrer dans la condition...


Message édité par cvb le 25-04-2003 à 20:18:43
Reply

Marsh Posté le 27-04-2003 à 03:44:25    

cvb a écrit :

Comment ça ? Tu veux rechercher un point "." dans une chaine ? mettre ensuite son emplacement ? rien de plus simple...
 
La recette elle est pas compliqué :
- une boucles
- le code ASCII
- une condition
- une variable
 

Code :
  1. dim i as integer
  2. dim nb_caractere as integer 'nombre de caractère dans la chaine
  3. dim char_retour as string 'caractère retourné
  4. dim char_position
  5. nb = len("chaine de caractère" )
  6. for i = 1 to nb
  7. char_retour = mid("chaine de caractère",i,1)
  8. if char_retour = "." then
  9. char_position = i
  10. end if
  11. next i


 
Voilà, en trés gros ton code ! Tu vérifi, simplement la fonction "mid" à partir de l'aide de VB. C'est une fonction qui permet de connaître la position d'un caractère dans une chaine.
 
Ensuite, si tu as plusieurs points, tu peux faire un tableaux dynamique et l'intégrer dans la condition...


euh... t'as pas trouvé plus compliqué ? :lol:
 
pour retrouver l'index d'un caractères dans une chaine, c'est :
 
pos = inStr(lachaine, lachaineàtrouver)
 
Ca retourne l'index de lachauneàtrouver, ou -1 si elle n'est pas trouvée.
 
D'ailleurs, c'est inStr que tu as décrit dans ton explication.
 
Mid, ça retourne la sous-chaine de l'ongueur y en partant de l'index x
 
str = Mid(lachaine, x, y)


Message édité par MagicBuzz le 27-04-2003 à 03:46:06
Reply

Marsh Posté le 27-04-2003 à 09:48:37    

MagicBuzz a écrit :


euh... t'as pas trouvé plus compliqué ? :lol:
 
pour retrouver l'index d'un caractères dans une chaine, c'est :
 
pos = inStr(lachaine, lachaineàtrouver)
 
Ca retourne l'index de lachauneàtrouver, ou -1 si elle n'est pas trouvée.
 
D'ailleurs, c'est inStr que tu as décrit dans ton explication.
 
Mid, ça retourne la sous-chaine de l'ongueur y en partant de l'index x
 
str = Mid(lachaine, x, y)


 
 
moi ?  :whistle: non !  c'est une méthode lourde, mais qui marche... :D

Reply

Marsh Posté le 28-04-2003 à 09:30:54    

@MagicBuzz  
 
Merci, ça marche inStr. Mais j'ai encore un petit probleme, voila mon code:
 
If (InStr(formule, "." ) <> -1) Then
...            
End If
 
Le probleme est que quelque soit la chaine, qu'il y ai un "." ou pas, le programme execute ce qu'il y a dans la boucle. Alors que normalement, si la chaine ne contient pas de point, la fonction inStr retourne -1 comme tu me la dis, et donc ne devrait pas rentrer dans la boucle.
 
T'es sur que inStr retourne -1 si la chaine n'est pas trouvée?

Reply

Marsh Posté le 28-04-2003 à 09:35:19    

@ MagicBuzz  
 
Non, c'est bon, j'ai trouvé, inStr retourne 0 si la chaine n'est pas trouvée.
 
Merci :D

Reply

Marsh Posté le 28-04-2003 à 09:40:58    

Arf, oui, c'est vrai, c'est 0, puisque ça commence à 1 :D

Reply

Marsh Posté le 28-04-2003 à 09:55:44    

@MagicBuzz  
 
 
Et oui, c'est pas du C! ;)

Reply

Sujets relatifs:

Leave a Replay

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