Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/02/2011, 13h50   #1
Membre régulier
 
Inscription : mars 2008
Messages : 210
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 210
Points : 70
Points : 70
Par défaut instruction instr() sur me.modifiable

Bonjour,

Je cherche à connaître la position de la troisième "\" dans une chaine de caractères.

Je pensais que cela fonctionnerait en faisant :
Code :
instr(me.modifiable.x,"\")+2
Mais cela me sort toujours 1 alors que cela devrait me sortir 10 (le champs contient \\serveur\program\ ...)

Il doit y avoir un pb de guillememets.

Quelqu'un pourrait-il m'aider sur cette syntaxe ?

Merci
emulamateur est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2011, 14h18   #2
Rédacteur

 
Avatar de ClaudeLELOUP
 
Homme Claude LELOUP
Chercheur de loisirs (ayant trouvé !)
Inscription : novembre 2006
Messages : 5 242
Détails du profil
Informations personnelles :
Nom : Homme Claude LELOUP
Âge : 66
Localisation : Belgique

Informations professionnelles :
Activité : Chercheur de loisirs (ayant trouvé !)
Secteur : Finance

Informations forums :
Inscription : novembre 2006
Messages : 5 242
Points : 11 037
Points : 11 037
Bonjour,

J'ignore si une syntaxe native existe.

Voici une fonction qui devrait rencontrer ton besoin :
ClaudeLELOUP est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2011, 20h43   #3
Membre régulier
 
Inscription : mars 2008
Messages : 210
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 210
Points : 70
Points : 70
Merci, je vais tester.

Par contre, pour l'avoir testé dans access, la syntaxe suivante fonctionne :

Je veux simplement () remplacer mon "duduche" par un "me.modifiable12.column(1)" mais j'ai essayé avec les syntaxes suivantes du type """& x &"""", chr(34) & x & chr(34), etc ...

Cela ne fonctionne pas
emulamateur est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2011, 21h22   #4
Rédacteur

 
Avatar de ClaudeLELOUP
 
Homme Claude LELOUP
Chercheur de loisirs (ayant trouvé !)
Inscription : novembre 2006
Messages : 5 242
Détails du profil
Informations personnelles :
Nom : Homme Claude LELOUP
Âge : 66
Localisation : Belgique

Informations professionnelles :
Activité : Chercheur de loisirs (ayant trouvé !)
Secteur : Finance

Informations forums :
Inscription : novembre 2006
Messages : 5 242
Points : 11 037
Points : 11 037
Citation:
instr("duduche","u")+1
est une syntaxe correcte... mais ton résultat sera 3.

La traduction française est :

"la position occupée par u dans duduche" ----> 2 et, à ce résultat ajouter 1.


Et , si "duduche" est le contenu de me.modifiable12.column(1) alors

instr(me.modifiable12.column(1),"U") renvoie 3.

Avec la fonction que je t'ai proposée :
- si "duduche" est le contenu de me.modifiable12.column(1)
- et que tu cherches la position du deuxième "u"

PosDuXieme(me.modifiable12.column(1),"u",2) te renvoie 4.
ClaudeLELOUP est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2011, 21h55   #5
Membre régulier
 
Inscription : mars 2008
Messages : 210
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 210
Points : 70
Points : 70
Bonsoir (et merci)

J'ai essayé ta fonction mais elle ne fonctionne pas chez moi.

En fait, la valeur qui m'est retournée est celle juste avant la parenthèse de droite.

Ainsi, au lieu d'avoir "PosDuXieme(me.modifiable12.column(1),"u",2) te renvoie 4", cela me retourne 2 ... et pas 4...
emulamateur est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/02/2011, 05h21   #6
Rédacteur

 
Avatar de ClaudeLELOUP
 
Homme Claude LELOUP
Chercheur de loisirs (ayant trouvé !)
Inscription : novembre 2006
Messages : 5 242
Détails du profil
Informations personnelles :
Nom : Homme Claude LELOUP
Âge : 66
Localisation : Belgique

Informations professionnelles :
Activité : Chercheur de loisirs (ayant trouvé !)
Secteur : Finance

Informations forums :
Inscription : novembre 2006
Messages : 5 242
Points : 11 037
Points : 11 037
Oooops !

Il faut :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Public Function PosDuXieme(Texte As String, Signe As String, Xieme As Integer) As Integer
'    ? PosDuXieme("\\serveur\program\","\",3)  ---> 10
Dim i As Integer, j As Integer, k As Integer
i = 1
 
Do
  j = InStr(i, Texte, Signe)
    If j = 0 Then
       Exit Do
    Else
       k = k + 1
       If k = Xieme Then Exit Do
    End If
  i = j + 1
Loop
PosDuXieme = j    ' !!!!  j et non k !!!!
 
End Function
Désolé pour ce contretemps.
ClaudeLELOUP est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/02/2011, 06h43   #7
Membre régulier
 
Inscription : mars 2008
Messages : 210
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 210
Points : 70
Points : 70
Merci .... !!!!!

Cela fonctionne parfaitement ....

Et aucun problème pour le contretemps car, sans vous, je n'aurai pas avancé d'un iota sur ce problème !

Merci et une balise résolue !
emulamateur est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h19.


 
 
 
 
Partenaires

Hébergement Web