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 08/03/2011, 23h54   #1
Candidat au titre de Membre du Club
 
Roger
Inscription : mars 2007
Messages : 49
Détails du profil
Informations personnelles :
Nom : Roger

Informations forums :
Inscription : mars 2007
Messages : 49
Points : 13
Points : 13
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
rogerfon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/03/2011, 10h23   #2
Rédacteur/Modérateur
 
Avatar de jpcheck
 
Jean-Philippe ANDRÉ
Inscription : juillet 2007
Messages : 7 863
Détails du profil
Informations personnelles :
Nom : Jean-Philippe ANDRÉ
Âge : 28
Localisation : France

Informations forums :
Inscription : juillet 2007
Messages : 7 863
Points : 10 742
Points : 10 742
Envoyer un message via MSN à jpcheck
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
__________________
Pas de question technique par MP, je ne réponds pas

Mon perso ? Une vraie brute

Tutos Access, Tâches planifiées et Batch,Tables de Paramètres sous Access, Excel et Batch, Tâches planifiées et Access
jpcheck est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/03/2011, 00h00   #3
Candidat au titre de Membre du Club
 
Roger
Inscription : mars 2007
Messages : 49
Détails du profil
Informations personnelles :
Nom : Roger

Informations forums :
Inscription : mars 2007
Messages : 49
Points : 13
Points : 13
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 :
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
rogerfon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2011, 09h53   #4
Candidat au titre de Membre du Club
 
Roger
Inscription : mars 2007
Messages : 49
Détails du profil
Informations personnelles :
Nom : Roger

Informations forums :
Inscription : mars 2007
Messages : 49
Points : 13
Points : 13
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
rogerfon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2011, 10h47   #5
Rédacteur/Modérateur
 
Avatar de jpcheck
 
Jean-Philippe ANDRÉ
Inscription : juillet 2007
Messages : 7 863
Détails du profil
Informations personnelles :
Nom : Jean-Philippe ANDRÉ
Âge : 28
Localisation : France

Informations forums :
Inscription : juillet 2007
Messages : 7 863
Points : 10 742
Points : 10 742
Envoyer un message via MSN à jpcheck
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 ?
__________________
Pas de question technique par MP, je ne réponds pas

Mon perso ? Une vraie brute

Tutos Access, Tâches planifiées et Batch,Tables de Paramètres sous Access, Excel et Batch, Tâches planifiées et Access
jpcheck est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 12/03/2011, 14h42   #6
Membre actif
 
Homme Dominique
Gestion parc machine, assistance informatique, développement Access, Excel...
Inscription : février 2007
Messages : 130
Détails du profil
Informations personnelles :
Nom : Homme Dominique
Âge : 56
Localisation : France, Puy de Dôme (Auvergne)

Informations professionnelles :
Activité : Gestion parc machine, assistance informatique, développement Access, Excel...
Secteur : Service public

Informations forums :
Inscription : février 2007
Messages : 130
Points : 161
Points : 161
Bonjour.
Après avoir déclaré les variables de pointage des balises en long, il faut juste utiliser la fonction Mid$ comme suit
Code :
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 :
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.
PapouDomi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/03/2011, 23h36   #7
Candidat au titre de Membre du Club
 
Roger
Inscription : mars 2007
Messages : 49
Détails du profil
Informations personnelles :
Nom : Roger

Informations forums :
Inscription : mars 2007
Messages : 49
Points : 13
Points : 13
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
rogerfon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2011, 16h52   #8
Candidat au titre de Membre du Club
 
Roger
Inscription : mars 2007
Messages : 49
Détails du profil
Informations personnelles :
Nom : Roger

Informations forums :
Inscription : mars 2007
Messages : 49
Points : 13
Points : 13
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
rogerfon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/04/2011, 12h15   #9
Membre éclairé
 
Homme Michel
Développeur informatique
Inscription : février 2008
Messages : 261
Détails du profil
Informations personnelles :
Nom : Homme Michel
Localisation : France, Hérault (Languedoc Roussillon)

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

Informations forums :
Inscription : février 2008
Messages : 261
Points : 304
Points : 304
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 :
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
Orion34080 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/05/2011, 12h35   #10
Candidat au titre de Membre du Club
 
Roger
Inscription : mars 2007
Messages : 49
Détails du profil
Informations personnelles :
Nom : Roger

Informations forums :
Inscription : mars 2007
Messages : 49
Points : 13
Points : 13
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
rogerfon 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 18h00.


 
 
 
 
Partenaires

Hébergement Web