PatCatNat’s, site de Patrice MOREL
Vous êtes ici : Accueil » Inform@tic » Access » Travail sur chaînes de caractères.

Travail sur chaînes de caractères.

D 15 novembre 2006     H 14:32     A Patrice MOREL    


Access 97 Access 97 | Compatible |
Access 2003 Access 2003 | Compatible |

Nombre de caractères

- La chaîne Humanité Dimanche
Len ([mon contrôle])
renvoie le nombre 17

- 17 est le nombre d’octets (appelé aussi "caractères" ou "signes"). Attention : les espaces comptent !

Limiter le nombre de caractères d’un champ mémo :
Il faut renseigner les propriétés "Valide Si" et "Message Erreur" pour le champ concerné dans la table :

- Valide Si : Len([MonChamp])<=500
- Message Erreur : "Trop long, vous êtes limités à 500 caractères"

minuscule

- La chaîne Prénom
LCase ([mon contrôle])
est transformée en prénom

- Le symbole < dans la propriété Format d’un contrôle
ou =Format([Prenom];"<") comme formule permet de visualiser la chaine de caractère en minuscule.
Exemple : Prénom = prénom

MAJUSCULE

- La chaîne Prénom
UCase ([mon contrôle])
est transformée en PRENOM

- Le symbole > dans la propriété Format d’un contrôle
ou =Format([Prenom];">") comme formule permet de visualiser la chaine de caractère en minuscule.
Exemple : Prénom = PRENOM

Met la première lettre en majuscule [1]

[mon contrôle] = ucase(left([mon contrôle],1)) & mid([mon contrôle],2)
ou
StrConv([MonChamp], vbProperCase)
Exemple : prénom = Prénom

Mois


Mettre en toute lettre le mois à partir d’uniquement le N° de mois :

- à partir d’une fonction :


A l’appel, il suffit d’écrire :
=fmonthname MinDom("LeMois";"T_Date")

- à partir d’un contrôle :


A l’appel, il suffit de faire :
=fmonthname MinDom("LeMois";"T_Date")

Exemple "Le Mois" en Access 97 en téléchargement ici.

Extractions

- Exemple 1 :

15468927 devient 4689
Communistes devient mmun


ou dans vba

3 c’est le caractère de départ pour l’extraction de chaîne
4 c’est la longueur à extraire

- Exemple 2 :

15468927 devient 154
Communistes devient Com


ou dans vba

3 c’est la longueur à extraire

- Exemple 3 :

15468927 devient 927
Communistes devient tes


ou dans vba

3 c’est la longueur à extraire

Récupération de valeurs dans un contrôle avec séparateur non défini

Renvoie une valeur de type Variant (Long) indiquant la position de la première occurrence d’une chaîne à l’intérieur d’une autre chaîne.

=InStr(start ;string1 ;string2 ; compare)

Start : Correspond au nbre de signe à partir on fait la recherche (Numérique)
String1 : est le nom du champ dans laquelle la recherche est faite
String2 : est l’occurrence recherchée (dans l’exemple : " - ")
Compare : facultatif. Indique le type de comparaison de chaînes.
L’argument compare peut être omis ou prendre la valeur 0, 1 ou 2. Indiquez la valeur 0 (valeur par défaut) pour effectuer une comparaison binaire. Indiquez la valeur 1 pour effectuer une comparaison de texte, sans différenciation des majuscules et des minuscules. Dans Microsoft Access, indiquez la valeur 2 pour effectuer une comparaison basée sur les informations contenues dans votre base de données. Si l’argument compare est de type Null, une erreur se produit. Si l’argument compare est omis, la valeur de l’instruction Option Compare détermine le type de comparaison.


Exemple :

01 - Frank Zappa - Baby snake.mp3

Val3 : Baby snake.mp3

Val3 : ExtracChaîne([NomMorceau] ;DansChaîne(DansChaîne([NomMorceau] ;" - ")+3 ;[NomMorceau] ;" - ")+3)

Start : Nbre de signes avant le 1er séparateur (" - ") + 3 qui est le nbre de signes du séparateur pour pouvoir dépasser le premier séparateur

String1 : Nombre de signe jusqu’à la première occurrence (" - ") + 3 qui est le nbre de signes du séparateur


Exemple :
Champ possédant la chaîne de caractère : 01 - Frank Zappa - Baby snake.mp3 ou 01 - Baby snake.mp3
Quelque soit le séparateur (sauf le point réservé à l’extension), le résultat sera :

- Numéro : 01
- Auteur : FrankZappa
- Titre : Baby snake
- Extension : mp3

Le code est très "barbare", mais présente l’avantage de bien fonctionner...

Fichier "Extraction" à télécharger ici pour le code et les explications.


Voir aussi dans l’aide Access :

=InStrB(start ;string1;string2; compare)

La fonction InStrB est utilisée pour traiter sous forme d’octets les données d’une chaîne. Au lieu de renvoyer la position de caractère de la première occurrence d’une chaîne dans une autre, la fonction InStrB renvoie la position de l’octet.


Récupération de valeurs dans un contrôle avec séparateur défini

Imaginez faire un copier/coller du net dans un contrôle de votre base Access2003 avec des noms d’acteurs jouant dans un film et ayant comme séparateur une virgule et un espace...

Exemple :
Dans le film "American History X" les Acteurs sont : Edward Norton, Edward Furlong, Fairuza Balk, Beverly D’Angelo, Avery Brooks, Stacy

Et vous voulez entrer chaque acteur dans un enregistrement spécifique à chacun suivant le film...

Créer :

- Une table "T_Cine" avec comme champs :
NumFilm (NumAuto)
Acteurs (Mémo)
- Une table "T_Acteurs" avec comme champs :
NomActeurs (Texte)
- Une table "T_ActeurFilm" avec comme champs :
NomActeur (Texte)
NumFilm (Numérique)

- Un formulaire "F-Cine" basé sur "T_Cine" avec comme contrôles :
Acteurs
NumFilm
ListeActeurs (Zone de liste) :


BtnTrier (Bouton) avec en code évènement sur Click :

Le tour est joué grâce à ce groupe de News d’access et pas mal de participants et la précieuse collaboration de Raymond pour le final...
A faire partager...


Voir d’autres fonctions sur le site à Raymond


[1La fonction format permettant d’afficher le mois
d’une date mais pas d’un chiffre représentant le mois...il faut faire une date bidon...

Dans la même rubrique

18 février 2010 – Liste déroulante

26 janvier 2010 – Requête croisée

5 mars 2008 – Evènement sur Onglet

7 février 2008 – Astuces et pièges VBA

8 décembre 2007 – Envoi de mails