récupérer les initiales pour faire un code
- Clique:
- 10238
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