IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

Retour de la fonction Instr() [AC-2013]


Sujet :

VBA Access

  1. #1
    Membre habitué
    Avatar de Jsiorat
    Homme Profil pro
    RETRAITE
    Inscrit en
    Juillet 2005
    Messages
    398
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : RETRAITE

    Informations forums :
    Inscription : Juillet 2005
    Messages : 398
    Points : 169
    Points
    169
    Par défaut Retour de la fonction Instr()
    Bonjour à toutes et tous,

    la fonction Instr() retourne une valeur numérique.
    J'aimerai que la fonction me retourne une valeur string
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    test = InStr(1, strNomFile, strMotCle, vbTextCompare)
    comment faire pour obtenir : strValeur = test
    merci pour réponses
    Être vieux, c'est être jeune depuis plus longtemps que les autres !

  2. #2
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    bonsoir,
    comment faire pour obtenir : strValeur = test
    rien n'empêche de récupérer une valeur numérique dans une variable de type string, c'est le contraire qui n'est pas possible si ce sont des caractères non numériques.
    Tu peux tout simplement écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strValeur = InStr(1, strNomFile, strMotCle, vbTextCompare)
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  3. #3
    Membre habitué
    Avatar de Jsiorat
    Homme Profil pro
    RETRAITE
    Inscrit en
    Juillet 2005
    Messages
    398
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : RETRAITE

    Informations forums :
    Inscription : Juillet 2005
    Messages : 398
    Points : 169
    Points
    169
    Par défaut
    Citation Envoyé par tee_grandbois Voir le message
    bonsoir,

    rien n'empêche de récupérer une valeur numérique dans une variable de type string, c'est le contraire qui n'est pas possible si ce sont des caractères non numériques.
    Tu peux tout simplement écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strValeur = InStr(1, strNomFile, strMotCle, vbTextCompare)
    Merci pour ta réponse, et désolé, mais le problème persiste !

    La valeur retournée est la position de la 1ère lettre de strMotCle dans la chaine de caractères strNomFile. (MsgBox strValeur)
    J'ai besoin du nom complet.
    Est-ce qu'il faut énuméré le mot clé lettre par lettre et le confronter à partir de la position retournée ?
    Être vieux, c'est être jeune depuis plus longtemps que les autres !

  4. #4
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    Par défaut
    Bonjour,

    Le besoin n'est pas clair.
    Qu'est-ce que tu entends par :
    J'ai besoin du nom complet.
    Cordialement.
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

  5. #5
    Membre éclairé
    Homme Profil pro
    Regisseur
    Inscrit en
    Octobre 2006
    Messages
    475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Regisseur
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Octobre 2006
    Messages : 475
    Points : 850
    Points
    850
    Par défaut
    Bonjour le forum.

    Si tu obtiens le début de la chaine voulue, il faut utiliser ensuite la fonction Mid.

    si j'ai compris ta question:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    test = InStr(1, strNomFile, strMotCle, vbTextCompare)
    strValeur = Mid(strNomFile, test)
     
    'en 1 ligne
    strValeur = Mid(strNomFile, InStr(1, strNomFile, strMotCle, vbTextCompare))
    Cdlt

  6. #6
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2013
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2013
    Messages : 328
    Points : 477
    Points
    477
    Par défaut
    Citation Envoyé par Thierry_PALLIER Voir le message
    Bonjour le forum.

    Si tu obtiens le début de la chaine voulue, il faut utiliser ensuite la fonction Mid.

    si j'ai compris ta question:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    test = InStr(1, strNomFile, strMotCle, vbTextCompare)
    strValeur = Mid(strNomFile, test)
     
    'en 1 ligne
    strValeur = Mid(strNomFile, InStr(1, strNomFile, strMotCle, vbTextCompare))
    Cdlt
    je peaufinerais un peu avec ce code ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strvaleur = Mid(strNomFile, InStr(1, strNomFile, strMotCle, vbTextCompare), Len(strMotCle))

  7. #7
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2013
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2013
    Messages : 328
    Points : 477
    Points
    477
    Par défaut
    Juste au dessus dans mon complément...

  8. #8
    Membre habitué
    Avatar de Jsiorat
    Homme Profil pro
    RETRAITE
    Inscrit en
    Juillet 2005
    Messages
    398
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : RETRAITE

    Informations forums :
    Inscription : Juillet 2005
    Messages : 398
    Points : 169
    Points
    169
    Par défaut
    Citation Envoyé par james68 Voir le message
    je peaufinerais un peu avec ce code ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strvaleur = Mid(strNomFile, InStr(1, strNomFile, strMotCle, vbTextCompare), Len(strMotCle))
    Merci à James68 et Thierry

    Ca fonctionne !
    Vous m'avez bien aidé !
    Être vieux, c'est être jeune depuis plus longtemps que les autres !

  9. #9
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2013
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2013
    Messages : 328
    Points : 477
    Points
    477
    Par défaut
    De rien c'est avec plaisir....
    Clic sur Résolu.... please... thanks

  10. #10
    Membre habitué
    Avatar de Jsiorat
    Homme Profil pro
    RETRAITE
    Inscrit en
    Juillet 2005
    Messages
    398
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : RETRAITE

    Informations forums :
    Inscription : Juillet 2005
    Messages : 398
    Points : 169
    Points
    169
    Par défaut
    Citation Envoyé par james68 Voir le message
    De rien c'est avec plaisir....
    Bonjour James68,

    je reviens vers toi pour cette ligne de code que tu m'as donné
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strValeur = Mid(strNomFile, InStr(1, strNomFile, strMotCle, vbTextCompare), Len(strMotCle))
    et qui a fonctionné une fois.

    Cette ligne me retourne, maintenant une erreur "5" ! "Argument ou appel de procédure incorrect".
    Est-ce que se serait une référence manquante ?

    Celles qui sont activées :
    - Visual Basic pour applications
    - Microsoft Access 15.0 Object Library
    - OLE Automation
    - Microsoft Office 15.0 Access Database
    - Microsoft Scripting Runtime
    - Microsoft Office 15.0 Object Library

    Merci pour ton aide.
    Être vieux, c'est être jeune depuis plus longtemps que les autres !

  11. #11
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2013
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2013
    Messages : 328
    Points : 477
    Points
    477
    Par défaut
    non je ne pense pas...
    perso suis sous ACC2000 avec uniquement ces reference de loadé et ca fonctionne tres bien.

    Nom : tempo.jpg
Affichages : 1267
Taille : 72,1 Ko
    tu dois avoir un Pb ailleurs dans ton code ...
    En mode pas à pas ca fonctionne ??... Apres recompilation du projet ??
    ++
    et bon WE

  12. #12
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    Citation Envoyé par james68
    tu dois avoir un Pb ailleurs dans ton code ...
    En mode pas à pas ca fonctionne ??... Apres recompilation du projet ??
    bonjour,
    également, pourrait-on voir le contenu des variables: strNomFile et strMotCle
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  13. #13
    Membre habitué
    Avatar de Jsiorat
    Homme Profil pro
    RETRAITE
    Inscrit en
    Juillet 2005
    Messages
    398
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : RETRAITE

    Informations forums :
    Inscription : Juillet 2005
    Messages : 398
    Points : 169
    Points
    169
    Par défaut
    Citation Envoyé par tee_grandbois Voir le message
    bonjour,
    également, pourrait-on voir le contenu des variables: strNomFile et strMotCle
    Bonjour, et merci pour la réponse ;

    un exemple :
    - strNonFile = "Exemples de code WLangage.docx"
    - strMotCle = "code"

    Avec ce mot clé, je voudrais rechercher tous les noms de fichiers sur un disque dur externe dont le mot clé est inclus dans le nom.

    Une GED perso sur mon ordinateur !
    Être vieux, c'est être jeune depuis plus longtemps que les autres !

  14. #14
    Membre habitué
    Avatar de Jsiorat
    Homme Profil pro
    RETRAITE
    Inscrit en
    Juillet 2005
    Messages
    398
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : RETRAITE

    Informations forums :
    Inscription : Juillet 2005
    Messages : 398
    Points : 169
    Points
    169
    Par défaut
    Citation Envoyé par james68 Voir le message
    non je ne pense pas...
    perso suis sous ACC2000 avec uniquement ces reference de loadé et ca fonctionne tres bien.

    tu dois avoir un Pb ailleurs dans ton code ...
    En mode pas à pas ca fonctionne ??... Apres recompilation du projet ??
    ++
    et bon WE
    Au cas ou, vois ma sub :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     Private Sub btnSearch_Click()
    Dim strMotCle As String
    Dim strNomFile As String
    Dim strValeur As Variant
     
    Dim db As Database
    Dim rst As DAO.Recordset
     
        strNomFile = Me.FName
        strMotCle = Me.Texte28
     
    Set db = CurrentDb
    Set rst = db.OpenRecordset("tblFiles", DB_OPEN_SNAPSHOT)
     
    Do Until rst.EOF
    ' ici le traitement
        If strValeur = Mid(strNomFile, InStr(1, strNomFile, strMotCle, 1), Len(strMotCle)) Then
            Debug.Print strNomFile
        End If
     
        rst.MoveNext
    Loop
    rst.Close
    Set rst = Nothing
     
    End Sub
    Être vieux, c'est être jeune depuis plus longtemps que les autres !

  15. #15
    Membre éclairé
    Homme Profil pro
    Regisseur
    Inscrit en
    Octobre 2006
    Messages
    475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Regisseur
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Octobre 2006
    Messages : 475
    Points : 850
    Points
    850
    Par défaut
    @james68 , dans ton premier message : Mid(……,...,Len(strMotCle)) , dans ce cas ton 3° argument ne sert à rien.
    Si tu l'omets ,il prendra la chaine jusqu'à la fin.
    Len(strMotCle) te donnes le nombre de lettre de ton mot clé, donc le résultat final redonnera … le mot clé !

    Cdlt

  16. #16
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    bonsoir,
    pourquoi parcourir un RecordSet alors qu'il n'est pas utilisé ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    ...
    strNomFile = Me.FName
    strMotCle = Me.Texte28
    ...
    Do Until rst.EOF
    ' ici le traitement
        If strValeur = Mid(strNomFile, InStr(1, strNomFile, strMotCle, 1), Len(strMotCle)) Then
            Debug.Print strNomFile
        End If
    ...
    si on se réfère à ton exemple :
    - strNomFile = "Exemples de code WLangage.docx"
    - strMotCle = "code"

    Avec ce mot clé, je voudrais rechercher tous les noms de fichiers sur un disque dur externe dont le mot clé est inclus dans le nom.
    et que tu parcours la table tblFiles via le RecordSet, je pense que le code devrait être:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ...
    Do Until rst.EOF
        If InStr(1, rst.NomduChamp, strMotCle) > 0 Then strValeur = rst.NomduChamp
        rst.MoveNext
    Loop
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. PL/SQL retour d'une fonction
    Par aaronw dans le forum PL/SQL
    Réponses: 2
    Dernier message: 13/12/2005, 13h25
  2. Réponses: 2
    Dernier message: 05/12/2005, 12h16
  3. [Oracle 9.1] Types de retour d'une fonction PL/SQL
    Par ftrifiro dans le forum PL/SQL
    Réponses: 8
    Dernier message: 12/10/2005, 16h54
  4. valeur de retour de la fonction "system" en C
    Par benhoeil dans le forum C
    Réponses: 14
    Dernier message: 16/09/2005, 11h30
  5. Pourquoi une seule valeur de retour pour les fonctions ?
    Par Bruno75 dans le forum Langages de programmation
    Réponses: 33
    Dernier message: 18/01/2004, 13h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo