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
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
A voir également:
- VBA: Un textbox qui contient plusieurs informations
- Excel compter cellule couleur sans vba - Guide
- Mkdir vba ✓ - Forum VB / VBA
- L'indice n'appartient pas à la sélection vba ✓ - Forum Programmation
- Vba range avec variable ✓ - Forum VB / VBA
- Vba autofill ✓ - Forum Excel
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 757
5 sept. 2014 à 18:10
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 :
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) :
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...
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...
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
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
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
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 757
5 sept. 2014 à 20:35
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 :
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)
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
6 sept. 2014 à 12:47
ça marche très bien.
merci bcp pijaku pour l'aide
regards,
merci bcp pijaku pour l'aide
regards,
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 757
6 sept. 2014 à 17:06
6 sept. 2014 à 17:06
De rien.
N'hésite pas.
A bientôt
N'hésite pas.
A bientôt