Utilisation chaine de caracteres

Résolu/Fermé
boborog Messages postés 38 Date d'inscription dimanche 14 janvier 2007 Statut Membre Dernière intervention 6 mars 2015 - 12 janv. 2013 à 13:51
boborog Messages postés 38 Date d'inscription dimanche 14 janvier 2007 Statut Membre Dernière intervention 6 mars 2015 - 13 janv. 2013 à 14:41


Bonjour,

Sur mon formulaire "Formulaire X" dans une procedure, j'ai ceux-ci

Private Sub Commande148_Click()
On Error GoTo Err_Commande148_Click
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = "Formulaire saisie tous timbres"
stLinkCriteria = "[Numéro YT]=" & "'" & Me![Numéro YT] & "'"
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_Commande148_Click:
Exit Sub
Err_Commande148_Click:
MsgBox Err.Description
Resume Exit_Commande148_Click
End Sub


qui me permet d'ouvrir par click sur bouton 148 le formulaire ""Formulaire saisie tous timbres" sur un enregistrement qui possede le meme Numéro YT que dans le "Formulaire X".
Je voudrais faire la meme chose mais en comparant une chaine de caractère de ce numéro YT
EX: Actuel Sur mon "formulaire X" numero YT =TI00107a,, en cliquant sur le bouton 148, cela ouvre "Formulaire saisie tous timbres" sur l'enregistrement avec Numero YT = TI00107a,,
Maintenant, je voudrais ouvrir "Formulaire saisie tous timbres" sur l'enregistrement avec Numero YT = TI00107 c'est à dire correspondant à une chaine de caractère de Numero YT sur mon "Formulaire X".


J'espere que mes explications conviendront.
A voir également:

1 réponse

Tessel75 Messages postés 192 Date d'inscription lundi 17 décembre 2012 Statut Membre Dernière intervention 19 janvier 2013 22
12 janv. 2013 à 22:25
Bonsoir,
Dans ce cas il faut utiliser la fonction Left(ChaineDeCaractère,NbCaractereARetenir)
càd dans le cas donné en exemple Left(Me![Numéro YT],7)
mais il est possible de ruser si on ignore le nombre de caractères du contrôle ou de la chaîne, mais qu'on sait celui qu'on veut exclure à la fin. Il suffit alors de lui faire calculer le nombre de caractères de la chaîne len(Chaine) et de soustraire le nbre à exclure (n): len(Chaine) - n
L'aide est correctement faite et vous en dira plus, plus en détail.
Cordialement.

NB qui me tient à coeur : Proscrivez de vos noms d'objets (tables, requêtes, champs, formulaires, etc, etc, tout) les espaces et les accents. Vous vous éviterez de très graves désagréments.

https://forums.commentcamarche.net/forum/affich-26623299-fichiers-corrompus-erreurs-lecture-seule-sur-access
0
boborog Messages postés 38 Date d'inscription dimanche 14 janvier 2007 Statut Membre Dernière intervention 6 mars 2015
12 janv. 2013 à 23:04
Merci pour votre réponse mais comme je ne suis pas du tout un expert, pourriez-vous m'indiquer comment rectifier la ligne:
stLinkCriteria = "[Numéro YT]=" & "'" & Me![Numéro YT] & "'"
Si ce n'est que cette ligne à rectifier ?
J'ai essayé mais je n'arrive pas.
0
boborog Messages postés 38 Date d'inscription dimanche 14 janvier 2007 Statut Membre Dernière intervention 6 mars 2015
13 janv. 2013 à 00:03
En fait je crois que je suis arrivé.
stLinkCriteria = "Left([Numéro YT],7)=" & "'" & Left(Me![Numéro YT], 7) & "'"
Mais j'ai mal etudier mon problème et cela resoud qu'une partie.
Donc j'ai mes differents enregistrement avec numéro YT = TI00107a,, puis TI00107b,, puis TI00107c,, ect
Mon but est donc sur le formulaire X, lorsque j'ai TI00107a.. c'est d'atteindre sur l'autre formulaire l'enregistrement qui correspond à TI00107... et uniquement celui là.
D'ailleurs peut-etre qu'avec len cela marcherais mieux sachant que je veux toujours éliminer les 3 derniers caracteres quelque soit le nombre de caracteres avant.
Finalement TI00107a.. doit retrouver TI00107...
TI00107b.. doit retrouver TI00107...
TI00107c.. doit retrouver TI00107...
ect..ect
0
Tessel75 Messages postés 192 Date d'inscription lundi 17 décembre 2012 Statut Membre Dernière intervention 19 janvier 2013 22
13 janv. 2013 à 00:13
Vous devriez avoir qqch du genre :

' Prend les 7 1er caractères
NumeroYT=left(Me![Numéro YT],7)
stLinkCriteria = "[Numéro YT]=" & "'" & NumeroYT & "'"

ou bien
' Ne prend pas le dernier caractère
NumeroYT=left(Me![Numéro YT], len(Me![Numéro YT])-1)
stLinkCriteria = "[Numéro YT]=" & "'" & NumeroYT & "'"

Le reste étant identique.
Attention: l" ' " en début de ligne signale à VBA qu'il s'agit d'un commentaire qui n'est pas pris en charge dans le déroulement de la procédure
0
boborog Messages postés 38 Date d'inscription dimanche 14 janvier 2007 Statut Membre Dernière intervention 6 mars 2015
13 janv. 2013 à 13:56
Bien on progresse sérieusement mais pour compliquer sans doute, je pense que mes trois caractères de fin après le 7ème me causent des problèmes (car après les 7 premiers caractères, il y a soit 3 points, soit une lettre et deux points, ou 2 lettres et un point, et éventuellement 3 lettres).
Ex: TI00107... ou TI00107a.. ou TI00107Aa. ou encore TI00107Aba
Peut-etre une autre solution dans tes bagages car il m'est impossible de changer mon système de numérotation ?
Encore merci et salutations
0
Tessel75 Messages postés 192 Date d'inscription lundi 17 décembre 2012 Statut Membre Dernière intervention 19 janvier 2013 22
13 janv. 2013 à 14:17
Et bien c'est pareil; au lieu de Len(???) - 1, on prend Len(???) - 2 ou -3. Mais avec Left(???, 7 ) vous aurez toujours les 7 premiers caractères.
0