VBA: Un textbox qui contient plusieurs informations

Résolu
jawja Messages postés 9 Statut Membre -  
pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   -
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

  1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    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
  2. jawja Messages postés 9 Statut Membre
     
    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
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      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
    2. jawja Messages postés 9 Statut Membre
       
      ça marche très bien.

      merci bcp pijaku pour l'aide

      regards,
      0
    3. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      De rien.
      N'hésite pas.
      A bientôt
      0