VBA: Un textbox qui contient plusieurs informations

Résolu/Fermé
jawja Messages postés 9 Date d'inscription jeudi 4 septembre 2014 Statut Membre Dernière intervention 12 septembre 2014 - 5 sept. 2014 à 17:17
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 6 sept. 2014 à 17:06
Bonjour,

voilà mon problème:
sur un textbox j'écrit à l'aide d'une douchette(lecteur code à barres) une information comme :
"400+340+540=1280"
je veux écrire chaque nombre de la somme dans une cellule dans mon tableau excel
par exemple 44 dans C6, 340 dans D6, 540 dans E6

je n'ai aucune idée comment procéder

si vous pouvez m'aider svp

merci d'avance


2 réponses

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
5 sept. 2014 à 18:10
Bonjour,

Avec les fonctions Split, Left et Instr (cf l'aide en ligne sur le site msdn), tu peux, par l'intermédiaire d'un bouton de commande faire comme ceci :
Private Sub CommandButton1_Click()
[C6] = Split(TextBox1, "+")(0)
[D6] = Split(TextBox1, "+")(1)
[E6] = Split(TextBox1, "+")(2)
[E6] = Left([E6], InStr([E6], "=") - 1)
End Sub

Ce code fonctionne s'il n'y a que deux signes +.
Pour adapter, le cas échéant, il conviendra de boucler sur la fonction Split, grâce à LBound et UBound (cf aide en ligne) :
Private Sub CommandButton1_Click()
Dim i As Integer
For i = LBound(Split(TextBox1, "+")) To UBound(Split(TextBox1, "+"))
    Cells(6, i + 5) = Split(TextBox1, "+")(i)
Next i
Cells(6, i + 4) = Left(Cells(6, i + 4), InStr(Cells(6, i + 4), "=") - 1)
End Sub


Nota : la notation [C6] correspond à Range("C6") ou Cells(6, 3) ou Sheets("NomDeMaFeuille").Range("C6"). Après tout dépend du degré de précision souhaité, ou si l'on veut écrire dans une feuille masquée ou ... etc...
0
jawja Messages postés 9 Date d'inscription jeudi 4 septembre 2014 Statut Membre Dernière intervention 12 septembre 2014
5 sept. 2014 à 18:50
Merci!
ce code marche bien, il faut juste que je l'adapte pour mon cas :)

une remarque: dans la première cellule le " s'affiche aussi
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
5 sept. 2014 à 20:35
Tu peux donc utiliser Right et Len.
Tu veux la "partie" droite de ton texte, sans le premier caractère.
Len représente la longueur de ton texte, Right la partie à droite que tu veux isoler.
Donc :
[C6] = Right(Split(TextBox1, "+")(0), Len(Split(TextBox1, "+")(0)) - 1)
0
jawja Messages postés 9 Date d'inscription jeudi 4 septembre 2014 Statut Membre Dernière intervention 12 septembre 2014
6 sept. 2014 à 12:47
ça marche très bien.

merci bcp pijaku pour l'aide

regards,
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
6 sept. 2014 à 17:06
De rien.
N'hésite pas.
A bientôt
0