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 :

Erreur sur extraction chaîne caractères [AC-2007]


Sujet :

VBA Access

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 90
    Points : 59
    Points
    59
    Par défaut Erreur sur extraction chaîne caractères
    Bonsoir,
    J'ai besoin de l'aide de personnes bcp plus compétentes que moi . Je deviens fou. J'ai ajouté du code VBA pour extraire d'un champ commentaire une chaîne de caratère entre deux balises >texte(date)< .
    ça marche... mais quand j'ouvre la requête et que je commence à faire des tris etc. je me ramasse le message 'Erreur d'excécution 5 ,argument ou appel de procédure incorrecte. Je ne comprends pas ! Ceci étant j'ai remarqué un indice (sur la ligne indiquée par le débug) : sur la fonction RIGHT ; je fais une soustraction RIGHT (chaine, toto-toto2) et quand pour test je remplace toto-toto2 par une valeur ex : RIGHT (chaine,6), alors ça marche très bien. j'ai loupé un épisode.... Qui peut m'aider à régler ce truc qui m'ennuie bcp ? MErci d'avance, Bien à vous,
    Laurent

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 653
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 653
    Points : 34 365
    Points
    34 365
    Par défaut
    Salut,

    peut-on avoir le bloc de code incrimine stp ?

    Tes variables toto et toto2 sont-elles declarees correctement ?

    Ayant laisse ma boule de cristal dans ma chaumiere, je n'ai pas assez d'elements de ta part pour l'instant pour apporter une reponse correcte, merci de nous en dire un peu plus

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 90
    Points : 59
    Points
    59
    Par défaut merci
    Bonjour,
    tout d'abord un grand merci de votre aide !
    voici le code complet ; j'ai mis des variables variant partout , je me suis dit que c'était peut-être cela :-) ben non
    le problème est au niveau d'Etape2 (commentaire en rouge)
    c'est un peu différent que ce que j'avais expliqué (toto, etc.) car j'avais résumé ;

    Le code :

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    'Extraire nom partenaire dans commentaire
    Option Explicit
    Dim Identifiesignezero As Variant
    Dim Identifiesigne As Variant
    Dim Identifiesigne2 As Variant
    Dim Etape1 As Variant
    Dim Etape2 As Variant
    Dim Resultat As Variant
    Dim Longueuretape1 As Variant
    
    Function Extrairenompartenaire(Commentaire)
    
    If IsNull(Commentaire) Then
    Extrairenompartenaire = "vide"
    Else
    If InStr(Commentaire, ">") <> 0 And InStr(Commentaire, "<") <> 0 Then
    Identifiesigne = InStr(Commentaire, "<")
    
    Identifiesigne = Identifiesigne
    Etape1 = Left(Commentaire, Identifiesigne)
    Longueuretape1 = Len(Etape1) 'mesure longueur étape1
    
    Identifiesigne2 = InStr(Commentaire, ">")
    Resultat = (Longueuretape1) - (Identifiesigne2)
    ' c'est ici que ça ne va plus ; si je remplace Resultat par un chiffre ça marche 
    Etape2 = Right(Etape1, Resultat)
    Etape2 = Replace(Etape2, "<", " ")
    
    
    Extrairenompartenaire = UCase(Etape2)
    Else
    
    If InStr(Commentaire, "<") <> 0 And InStr(Commentaire, ">") = 0 Then
    Extrairenompartenaire = "vérifier >"
    Else
    If InStr(Commentaire, "<") = 0 And InStr(Commentaire, ">") <> 0 Then
    Extrairenompartenaire = "vérifier <"
    Else
    
    Extrairenompartenaire = "------"
    End If
    End If
    End If
    End If
    End Function
    Merci beaucoup,
    Bien à vous,
    Roger

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 90
    Points : 59
    Points
    59
    Par défaut autopsie
    Bonjour,
    Avez-vous eu l'occasion de jeter un petit coup d'oeil sur ce code ? J'essaye tjrs en vain :-). Merci, rOger

  5. #5
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 653
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 653
    Points : 34 365
    Points
    34 365
    Par défaut
    salut,

    en commencant par remettre des type de variable pertinents, en les basculant en Integer voire Double.

    en fait tu cherches a recuperer le contenu entre deux balises ?

  6. #6
    Membre habitué
    Homme Profil pro
    Activités informatiques diverses
    Inscrit en
    Février 2007
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Activités informatiques diverses
    Secteur : Service public

    Informations forums :
    Inscription : Février 2007
    Messages : 153
    Points : 188
    Points
    188
    Par défaut
    Bonjour.
    Après avoir déclaré les variables de pointage des balises en long, il faut juste utiliser la fonction Mid$ comme suit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    lngId1 = InStr(Commentaire, "<")
    lngId2 = InStr(Commentaire, ">")
    Extrairenompartenaire = UCase(Mid$(Commentaire, lngId1 + 1, lngId2 - lngId1 - 1))
    De plus, il y a une erreur dans le traitement d'un commentaire ne comportant aucune balise => résultat "vérifier >" au lieu de "------"
    Le code suivant devrait être plus fonctionnel
    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
    If InStr(Commentaire, ">") <> 0 And InStr(Commentaire, "<") <> 0 Then
        lngId1 = InStr(Commentaire, "<")
        lngId2 = InStr(Commentaire, ">")
        Extrairenompartenaire = UCase(Mid$(Commentaire, lngId1 + 1, lngId2 - lngId1 - 1))
    Else
      If InStr(Commentaire, ">") = 0 And InStr(Commentaire, "<") = 0 Then
        Extrairenompartenaire = "------"
      Else
        If InStr(Commentaire, ">") = 0 Then
          Extrairenompartenaire = "vérifier >"
        Else
          Extrairenompartenaire = "vérifier <"
        End If
      End If
    End If
    Cordialement, Dominique.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 90
    Points : 59
    Points
    59
    Par défaut merci
    Bonsoir Jean-Philippe et Dominique,
    Bonsoir à tous,
    Merci bcp de ta réponse Jean-Philippe. J'ai essayé avec d'autres types. Rien à faire ça coince tonjours.
    Merci bcp de ta réponse Dominique.
    Je vais essayer cela ce lundi matin, la piste est vraiment très intéressante ;

    Merci bcp,
    Je reviens dès que j'ai essayé cela,
    Bien à vous,
    Roger

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 90
    Points : 59
    Points
    59
    Par défaut retour
    Bonjour,
    Voici (enfin :-) mon retour.
    ça marche ! J'ai trouvé le vrai coupable .... c'était moi : un problème de conception de ma requête : la colonne B avait une fonction qui faisait référence au résultat de la fonction de la colonne A (pour faire court car il y avait une colonne C. J'ai réécrit la fonction pour avoir directement le résultat dans la colonne A.
    Merci à tous pour votre soutien moral et technique.
    Roger

  9. #9
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2008
    Messages : 286
    Points : 383
    Points
    383
    Par défaut Extraction de chaine
    Bonjour,

    A tout hasard, si le but est d'extraire la chaine que est entre "<" et ">", la solution la plus simple me semble ressembler à ceci :

    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
    'Extraire nom partenaire dans commentaire
    Option Explicit
    '-----------------------------------------------------------------------
    Function Extrairenompartenaire(commentaire As String)
     
    If IsNull(commentaire) Then
        Extrairenompartenaire = "vide"
    Else
        If InStr(commentaire, ">") <> 0 And InStr(commentaire, "<") <> 0 Then
            Extrairenompartenaire = Mid(commentaire, 2, Len(commentaire) - 2)
        Else
            If InStr(commentaire, "<") <> 0 And InStr(commentaire, ">") = 0 Then
                Extrairenompartenaire = "vérifier >"
            ElseIf InStr(commentaire, "<") = 0 And InStr(commentaire, ">") <> 0 Then
                Extrairenompartenaire = "vérifier <"
            Else
                Extrairenompartenaire = "------"
            End If
        End If
    End If
    End Function
    Et si j'ai mal compris la question, toutes mes excuses

    Michel

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 90
    Points : 59
    Points
    59
    Par défaut merci Michel
    Cher Michel,
    Je te remercie de ton regard. Je ne savais pas c'était possible de cette manière. Un très Merci pour ce tuyau.
    roger

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

Discussions similaires

  1. Erreur sur chaîne de caractères
    Par Masmeta dans le forum C++/CLI
    Réponses: 5
    Dernier message: 23/04/2013, 17h43
  2. [AC-2007] Extraction chaîne caractère depuis requête paramètre
    Par Alucardbert dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 18/12/2009, 13h55
  3. [Shell] Extraction chaîne caractère
    Par tonio45312 dans le forum Linux
    Réponses: 4
    Dernier message: 29/05/2008, 09h45
  4. Réponses: 9
    Dernier message: 16/02/2007, 21h37
  5. Problème sur des chaînes de caractères
    Par Anonymous dans le forum Access
    Réponses: 9
    Dernier message: 16/09/2005, 08h21

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