Comment avoir un format nombre avec un - au milieu (502-07)

Bonjour à tous, j'ai un petit soucis.

Quand je rentre mon nom de client dans mon userform, cela me propose directement le nom des références possibles à sélectionner( je viens récupérer le nom de la référence) :

Sheets("correspondance").Activate
Dim x As Long, Y As Long, Z As Long, Q As Long
'x = Range("Tableau1[Ref]").Column
Y = Worksheets("correspondance").Range("Tableau1").Find(cboref).Row
Z = Range("Tableau1[Projet]").Column
Q = Range("Tableau1[Tolerancesup]").Column
W = Range("Tableau1[Toleranceinf]").Column
txtprojet = Cells(Y, Z)
txtnormesup = Cells(Y, Q)
txtnormeinf = Cells(Y, W)

puis je l'affiche dans ma cboref et enfin je l'ajoute dans une base de données à l'aide du code suivant :

.ListColumns("Ref").DataBodyRange.Rows(B) = Val(cboref)

cela fonctionne très bien.

Le problème est que quand j'ai une référence avec un tiret, le programme me récupère bien le 5825-02 et l'affiche dans ma cboref, mais lorsque je l'ajoute dans la base de donnée il me supprime le - et les caractères derrière probablement du au VAL(cboref).

Le problème est que je ne peux pas retirer le Val car sinon mes autres références(2, 102, 202, ...) apparaissent en format txt et j en ai absolument besoin pour pouvoir analyser mes résultats après. Merci d'avance de votre aide

image image

Bonjour,

Testez avant l'ajout si c'est une variable contenant le - ou non à l'aide de InStr puis :

If InStr(,"-",cboref) > 0 Then 
.ListColumns("Ref").DataBodyRange.Rows(B) = cboref 
Else 
.ListColumns("Ref").DataBodyRange.Rows(B) = Val(cboref)
End If

A adapter à votre classeur.

Cdlt,

Bonsoir, je ne connaissais pas cette fonction mais ca marche super bien !! Merci pour votre aide.

Belle soirée

Rechercher des sujets similaires à "comment format nombre milieu 502"