Coucou,
Mon site, comme vous pouvez le voir, est en pleine restructuration !
Ravalement de façade et un peu de lubrification dans la mécanique !
Ma dernière sauvegarde étant du mois de septembre, je remets à jour les derniers articles, mais rien n’est perdu...
En cas de besoin urgent : webmaster@patcatnats.fr
@ bientôt

PatCatNat’s
Faire de son négatif un positif !

Site personnel de Patrice MOREL.

Travail sur chaînes de caractères.
Article mis en ligne le 15 novembre 2006
dernière modification le 6 janvier 2019

par 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.
ou
StrConv([MonChamp]; 2)
Exemple : Prénom = prénom

MAJUSCULE

 La chaîne Prénom
UCase ([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.
ou
StrConv([MonChamp]; 1)
Exemple : Prénom = PRÉNOM

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]; 3)
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...