Accueil Compétences Patterns Bases de données Access récupérer les initiales pour faire un code

récupérer les initiales pour faire un code

Clique:
6064

Réponse

Il est parfois utile de récupérer les initiales pour faire un abrégé de quelquechose de long.

Dans le cas qui nous intéresse, j'ai développé une petite fonction utilisant la fonction split pour arriver à mes fins

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
szChaine="voici le mois de mai ou les feuilles volent au vent"
 
pctAbrev=10 ' pourcentage abreviation pour les mots de 0 à 100
MsgBox("Abreviation de " & Chr(34) & szChaine & Chr(34) & " (" & pctAbrev & ") = " & f_getAbrev(szchaine, pctAbrev)) 
 
' si On met 0 on ne prend que les initiales
' si on met 100 la fonction renvoie la chaine sans les espaces
' entre les deux c'est de la poésie
function f_getAbrev(szchaine, pctAbrev) 
    ' on détermine la longueur de la chaine sans les blancs
    lgChaine=Len(replace(szchaine," ","")) 
    ' si il y a des apostrophe, on les remplaces par un espace
    szchaine=replace(szchaine,"'"," ") 
    ' ensuite on découpe la chaine en fonction des espaces
    tblMot=Split(szchaine) 
    ' sans parametre le séparateur est un espace
    ' détermination de la longueur moyenne de la chaine à abréger
    ' Attention UBound retourne le nombre -1, il faut donc ajouter 1 pour avoir le nombre exacte
    moyMot=lgChaine / (UBound(tblMot) +1) 
    ' On initialise la chaine de résultat
    szAbrev="" 
    ' on boucle sur les mots de la chaine
    For Each Mot In tblMot 
        If pctAbrev = 0 Then 
            szAbrev = szAbrev & Left(Mot,1)
        ElseIf pctAbrev=100 Then 
            szAbrev=szAbrev & Mot 
        Else 
            ' si le mot est au dessus de la moyenne, on récupère le pourcentage de sa longueur '
            If Len(Mot) => moyMot Then 
                lgSel = CInt((Len(Mot)*pctAbrev)/100) 
                szAbrev = szAbrev & Left(Mot, lgSel) 
            End If 
        End If 
    Next 
    ' et on renvoie le résultat
    f_getAbrev = szAbrev 
End Function