Concaténation dans format, présence de 0 génante...

baljone

XLDnaute Nouveau
Bonsoir,

J'ai créé une userform avec deux textbox. La première renvoie une valeur dans une cellule, l'autre juste une indication sur cette valeur, par exemple :

Si ma textbox1.value = 52 et ma textbox2.value = 12,
la valeur contenue dans la cellule sera 52, et il sera affiché 52 ± 12.

Je réalise cela avec la syntaxe suivante :
ActiveCell.Offset(0, 1).Range("a1") = Me.TextBox1.Value
ActiveCell.Offset(0, 1).Range("a1").NumberFormat = "0"" ± """ & TextBox2.Value

Tout cela marche très bien... jusqu'à ce que j'introduise un 0 dans la seconde textbox !!! et ça m'embete :confused:

Par exemple si textbox1.value = 5137 et textbox2.value = 100
Le résultat affiché est : 51 ± 137

Autre exemple si textbox1.value = 5137 et textbox2.value = 001
Le résultat est 51 ± 371

J'ai tenté pas mal de chose mais la syntaxe n'est jamais bonne.
Si une idée vous vient, c'est sympa ;)
 

skoobi

XLDnaute Barbatruc
Re : Concaténation dans format, présence de 0 génante...

Bonsoir baljone,

je te propose de tester ceci:

ActiveCell.Offset(0, 1).Range("a1") = Me.TextBox1.Value & " " & Chr(177) & " " & Me.TextBox2.Value

A moins que tu tiens absolument à passer par le format.
 

baljone

XLDnaute Nouveau
Re : Concaténation dans format, présence de 0 génante...

Salut et merci,

Oui en fait je tiens à passer par le format, puisque la valeur contenue dans la cellule est celle que renvoie la premiere textbox, et je me sers de cette valeur par la suite.
Si je reprends mon exemple :

Si textbox1.value = 5137 et textbox2.value = 100
Le résultat affiché est : 51 ± 137
La valeur stockée par la cellule est bien 5137 mais l'affichage déconne.
Je cherche à ce qu'il soit comme ceci : 5137 ± 100
La présence de 0 décale à l'affichage le premier chiffre autant de fois que de 0 figurant dans la seconde textbox.

une idée ?
 

baljone

XLDnaute Nouveau
Re : Concaténation dans format, présence de 0 génante...

L'interet du numberformat est tout simplement le meme que le format d'une cellule.
L'affichage est différent de la valeur stockée.
C'est comme si on choisit d'afficher 10% et que la valeur contenue dans la cellule est 10.
Mais lorque que tu choisis d'afficher 10%10 ça t'affiche 1%10 parce qu'il y a ce zero de m...
 

job75

XLDnaute Barbatruc
Re : Concaténation dans format, présence de 0 génante...

Bonsoir baljone, skooby, CB60,

Essayez :

Code:
Dim x$
x = TextBox2.Value
x = IIf(Len(x) > 0, "\" & Mid(x, 1, 1), "") & IIf(Len(x) > 1, "\" & Mid(x, 2, 1), "") & IIf(Len(x) > 2, "\" & Mid(x, 3, 1), "") & IIf(Len(x) > 3, "\" & Mid(x, 4, 1), "") & IIf(Len(x) > 4, "\" & Mid(x, 5, 1), "")
ActiveCell.Offset(0, 1).Range("A1").NumberFormat = "0"" ± """ & x

Si TextBox2 peut contenir plus de 5 caractères, rallongez la formule...

A+
 
Dernière édition:

baljone

XLDnaute Nouveau
Re : Concaténation dans format, présence de 0 génante...

Un grand merci job75, je vais potasser ça. Une chose est sûre, ça fonctionne !!
J'avais un peu peur de me lancer la-dedans, mais tu viens d'ouvrir une nouvelle voie pour moi. :)
 

job75

XLDnaute Barbatruc
Re : Concaténation dans format, présence de 0 génante...

Re,

Une solution qui s'adapte automatiquement au nombre de caractères de la TextBox2 :

Code:
Dim x$, i As Integer
x = TextBox2.Value
For i = Len(x) To 1 Step -1
x = Application.Replace(x, i, 0, "\")
Next
ActiveCell.Offset(0, 1).NumberFormat = "0"" ± """ & x

J'ai enlevé Range("A1") car il me semble qu'il est superflu, non ?

Bonne fin de soirée.
 

baljone

XLDnaute Nouveau
Re : Concaténation dans format, présence de 0 génante...

ça c'est génial. j'étais finalement passé par la fonction mid() à la place de len() n'ayant pas capté exactement cette dernière, toujours sur le meme principe de mettre un "\" devant chaque zero (qui est la solution au pb).
là ta nouvelle fonction s'adapte, plus courte et on gagne en lisibilité.
merci et... bonne nuit. :p
 

Discussions similaires

Réponses
2
Affichages
156

Statistiques des forums

Discussions
312 332
Messages
2 087 362
Membres
103 528
dernier inscrit
maro