bonsor
est-ce-que quelqu'un peut me proposer une solution pour convertir une colonne de type texte en double sans perte de donnée
(mon sgbd est MS access )
merci d'avance pour l'aide
bonsor
est-ce-que quelqu'un peut me proposer une solution pour convertir une colonne de type texte en double sans perte de donnée
(mon sgbd est MS access )
merci d'avance pour l'aide









Bonjour,
Changer directement le type de données de la colonne directement dans la table ne fera que supprimer tout ce que n'est pas numérique. Il faut donc travailler avec une requête et une fonction utilisateur (aucune native n'étant disponible).
Dans un module VBA tu écris cette fonction.
Et dans la requête tu la sollicite de cette façon :
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
31
32
33
34
35
36
37
38
39
40 Function fSupprimerAlpha(mValeur As Variant) As Variant '--------------------------------------------------------------------------------------- ' Procedure : fSupprimerAlpha / Function ' Author : fabrice CONSTANS (MVP) ' Developpez.com ' Date : 03/06/2012 ' Modified : ' Description : épure une chaine de caractère pour retourner une valeur numérique ' tient compte du sép. décimal et des + et - ' Parameters : mValeur contient la valeur à transformer ' Return Value : retourne une valeur numérique valide ' '--------------------------------------------------------------------------------------- Dim i As Integer If IsNull(mValeur) Or Len(mValeur) = 0 Then fSupprimerAlpha = Null Exit Function End If mValeur = Replace(mValeur, ",", ".") ' à inverser suivant le type de séparateur utilisé ' supprime tous les caracteres alpha For i = 1 To Len(mValeur) ' tout ce qui n'est pas numérique à l'exception des séparateurs If Not IsNumeric(Mid(mValeur, i, 1)) And _ Not Mid(mValeur, i, 1) Like "*[,,.]*" And _ Not Mid(mValeur, i, 1) Like "*[+,-]*" Then ' remplace par un espace mValeur = Replace(mValeur, Mid(mValeur, i, 1), " ") End If Next ' renvoi la nouvelle valeur sans les espaces fSupprimerAlpha = Replace(mValeur, " ", "") End Function
"select ..., fSupprimerAlpha([ChampAconvertir]) as nouvelleValeur, ... FROM ...."
Cordialement,
Hello,
très bonne idée ça, en plus, on voit bien le défilement du raisonnement.
Pourrais-je ajouter que dans le cas où tu as une chaîne de caractère vide en bout de process :
devenant
Code : Sélectionner tout - Visualiser dans une fenêtre à part fSupprimerAlpha = Replace(mValeur, " ", "")
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 mValeur = Replace(mValeur, " ", "") If Len(mValeur) = 0 then fSupprimerAlpha = Null Else fSupprimerAlpha = mValeur End If
Cycle de vie d'un bon programme :
1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise
Pas de question technique par MP, je ne réponds pas
Mes ouvrages :
Migrer les applications VBA Access et VBA Excel vers la Power Platform
Apprendre à programmer avec Access 2016, Access 2019 et 2021
Apprendre à programmer avec VBA Excel (3e édition)
Prise en main de Dynamics 365 Business Central
Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
Pensez à consulter la FAQ Excel et la FAQ Access
Derniers tutos
Excel et les paramètres régionaux
Les fichiers Excel binaires : xlsb,
Autres tutos









Effectivement elle est perfectible, elle sera bientôt dans la FAQ. A voir dans la rubrique que tu sais.![]()
Partager