Bonjour,
j'ai une requête Access contenant 3 colonnes avec des descriptifs (du texte avec ou sans balises html), qui peuvent varier en longueur. Je voulais faire un tri pour récupérer le plus grand. j'ai donc fait une fonction VBA que j'appelle dans Access : LongDesc(texte1;texte2;texte3).
Je précise qu'il n'y a pas de champs NULL dans ces 3 colonnes.
J'ai opté pour du VBA car il y a d'autres critères que je souhaite ajouter par la suite et je ne voulais pas avoir trop de colonnes dans Access. Et également par souci de lisibilité je trouve le code VBA plus facile à lire après 1 mois sans y avoir touché.
Mon code vba est ci-dessous. les variables définies par 4096 et 16580 me permettront de contrôler la longueur des champs par la suite mais pour l'instant elles ne servent pas. Je précise que les variables text1;text2 ont l'air de s'afficher correctement dans ma requête Access (j'ai fait des tests). En revanche text3 me retourne du vide à priori lorsque c'est la plus petite valeur des trois descriptifs. Je sens que la solution est toute bête mais pour l'instant je ne comprends pas et j'ai les yeux qui piquent...
Si d'ailleurs une âme charitable avait une solution pour faire un code plus simple ou plus rapide, je suis preneur également
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 Public Function LongDesc(prmText1 As String, prmText2 As String, prmText3 As String) As String Dim Text1 As String Dim Text2 As String Dim Text3 As String MaxShortDesc = 4096 MaxLongDesc = 16580 If Len(prmText1) >= Len(prmText2) Then Text1 = prmText1 Text2 = prmText2 Else Text1 = prmText2 Text2 = prmText1 End If If Len(prmText3) >= Len(Text1) Then Text3 = Text2 Text2 = Text1 Text1 = prmText3 Else If Len(prmText3) >= Len(Text2) Then Text3 = Text2 Text2 = prmText3 End If End If LongDesc = Text3 End Function
Partager