Fonction Instr [Résolu]

manhino 63 Messages postés jeudi 30 mars 2006Date d'inscription 7 août 2008 Dernière intervention - 29 janv. 2008 à 09:22 - Dernière réponse : manhino 63 Messages postés jeudi 30 mars 2006Date d'inscription 7 août 2008 Dernière intervention
- 29 janv. 2008 à 13:57
bonjour je cherche à executer se genre de fonction (ci-dessous)mais cela ne fonctionne pas.
Je souhaite rechercher dans la chaine requete1 un chiffre qui peut etre compris entre 1 et 999, c'est sur cet argument que se porte le problème.

iLocateSecond = InStr(i, requete1, [1-999], 1)

Je ne sais pas si c'est comme cela qu'il faut exprimer cette condition.

Merci d'avance
-------
Manhino
-------
Afficher la suite 

11 réponses

Répondre au sujet
jmfmarques 7668 Messages postés samedi 5 novembre 2005Date d'inscription 22 août 2014 Dernière intervention - 29 janv. 2008 à 12:09
+3
Utile
Bon....
On va "tricoter" avec ce que tu m'as exposé (en espérant que tu as bien tout vu) ...

Vois ceci :

Private Sub Command1_Click()
  Dim toto As String
  toto = "2 ETG  APP 42"
  decortique toto
  toto = "APP 1  ETG 1"
  decortique toto
  toto = "APP 18  4eme ETG"
  decortique toto
  toto = "Ap 518"
  decortique toto
  toto = "ETG 3  APT 56"
  decortique toto
  toto = "Appartement 3  2ème étage"
  decortique toto
End Sub



Private Sub decortique(toto As String)
  titi = Split(toto, " ")
  For i = 0 To UBound(titi)
    If LCase(Left(titi(i), 3)) Like "ap*" Then
        If IsNumeric(titi(i + 1)) Then
          apt = (titi(i + 1))
          titi(i + 1) = ""
          Exit For
        End If
      End If
  Next
  For i = 0 To UBound(titi)
   If Val(titi(i)) > 0 Then
     et = Val(titi(i))
     Exit For
   End If
  Next
  MsgBox "Appartement " & apt & vbCrLf & "Etage " & et
End Sub


 
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de jmfmarques
jmfmarques 7668 Messages postés samedi 5 novembre 2005Date d'inscription 22 août 2014 Dernière intervention - 29 janv. 2008 à 09:33
0
Utile
Bonjour,

Non, Instr ne gère pas de plages...

If te faut plutôt travailler avec Mid et Isnumeric.

Mais lontre-nous une forme de chaîne à traiter (en nous précisant si le format est bien toujours le même) et tu auraus une réponse adaptée.
Commenter la réponse de jmfmarques
manhino 63 Messages postés jeudi 30 mars 2006Date d'inscription 7 août 2008 Dernière intervention - 29 janv. 2008 à 09:40
0
Utile
ok mes chaine sont de taille variable par exemple :

2 ETG APP 42
APP 1 ETG 1
APP 18 4eme ETG
APP 518

se que je veut dans ces différente donnée ces récupérer dans un premier temps le numéro de l'appartement et dans un second temps celui de l'Etage.
Jespere que c'est plus clair comme sa.

-------
Manhino
-------
Commenter la réponse de manhino
jmfmarques 7668 Messages postés samedi 5 novembre 2005Date d'inscription 22 août 2014 Dernière intervention - 29 janv. 2008 à 10:10
0
Utile
Je craignais ce genre de choses (différences de formes ....).

Bon :

If va donc te falloir procéder en 2 temps :

ainsi, par exemple :

Private Sub Command1_Click()
 titi = "APP 18  4eme ETG "
 toto = titi
 Dim apt As Integer, et As Integer
 For i = 1 To Len(toto)
   If IsNumeric(Mid(toto, i, 1)) Then pos1 = i
   If pos1 > 0 And Not IsNumeric(Mid(toto, i, 1)) Then
     et = Val(Mid(toto, pos1 + 1, i))
     toto = Left(titi, pos1)
     Exit For
   End If
 Next
 For i = 1 To Len(toto)
   If IsNumeric(Mid(toto, i, 1)) Then
     apt = Val(Mid(toto, i - 1))
   End If
 Next
 MsgBox "étage " & et & " - appartement " & apt
End Sub
Commenter la réponse de jmfmarques
manhino 63 Messages postés jeudi 30 mars 2006Date d'inscription 7 août 2008 Dernière intervention - 29 janv. 2008 à 10:17
0
Utile
je vais voir se que cela donne dans mon code.
Je te redit sa de suite.
merci d'avance pour ton aide sa va mettre precieu
-------
Manhino
-------
Commenter la réponse de manhino
manhino 63 Messages postés jeudi 30 mars 2006Date d'inscription 7 août 2008 Dernière intervention - 29 janv. 2008 à 10:33
0
Utile
merci

je n'ai pas tout compris comment cela marchait si sa te derange pas trop de commenter un peu ton code cela serai cool

-------
Manhino
-------
Commenter la réponse de manhino
manhino 63 Messages postés jeudi 30 mars 2006Date d'inscription 7 août 2008 Dernière intervention - 29 janv. 2008 à 11:13
0
Utile
cela ne marche pas par exemple pour une chaine de caractere comme ceci
2 ETG APP 42
Commenter la réponse de manhino
jmfmarques 7668 Messages postés samedi 5 novembre 2005Date d'inscription 22 août 2014 Dernière intervention - 29 janv. 2008 à 11:39
0
Utile
Ouias...

Un coup l'étage devant, un coup l'étage derrière, un coup 4ème étage, un coup ET 4, un coup ETG etc...
Voilà qui rend les choses plutôt difficiles (plus de raison certaine...)

Nous allons donc (j'ai un peu plus de temps ...) procéder autrement...pour nous donner les plus grandes chances d'aboutir.

Je reviens...
Mais toi, de ton côté, recense s'il te plait toutes les formes que tu as dans tes données pour désigner un appartement (ex App, Apt, Appartement, etc...) car je vais appuyer ma démarche sur cette forme là !!!! (pas moyen de faire autrement !!!)
Commenter la réponse de jmfmarques
manhino 63 Messages postés jeudi 30 mars 2006Date d'inscription 7 août 2008 Dernière intervention - 29 janv. 2008 à 11:47
0
Utile
oui je suis d'accord avec toi c relou d'avoir plein de facon différente de nommée les données
ca fait une semaine que je cherche comment traiter ses données.
J'ai penser tout mettre en majuscule (ou minuscule) se qui permet de reduire le nombre d'occurence que j'ai ressencer je pense que c'est une bonne idée?
APPARTEMENT
APPART
AP
APPAT
APP
APPT
APT
APTE
rien que sa!!!

Je te dit le bordel.
merci de ton aide
-------
Manhino
-------
Commenter la réponse de manhino
manhino 63 Messages postés jeudi 30 mars 2006Date d'inscription 7 août 2008 Dernière intervention - 29 janv. 2008 à 13:42
0
Utile
j'ai un petit probleme car lorsque je veut excuter decortique toto cela me met un message d'erreur
"un appel de fonction dans la partie gauche de l'affectation doit renvoyer Variant ou object"

Merci

-------
Manhino
-------
Commenter la réponse de manhino
manhino 63 Messages postés jeudi 30 mars 2006Date d'inscription 7 août 2008 Dernière intervention - 29 janv. 2008 à 13:57
0
Utile
non desoler j'ai fait une erreur ne prend pas compte du dernier message
Commenter la réponse de manhino

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.