Trouver un nombre avec fonction replace
Bonjour à tous,
voici ma situation : je suis en train de créer un formulaire de création de devis pour des clients potentiels et une de ses spécificités est la possibilité de choisir des accessoires à ajouter dans la commande, j'ai donc créé un userform "dans l'userform" afin de permettre au client de choisir ses accessoires qui seront ensuite notés dans l'userform principal (destiné à être imprimé quand j'aurai trouvé le moyen de le faire).
Mon problème est le suivant : si l'utilisateur veut des tourillons par exemple, il peut aussi bien choisir d'en prendre 1, 2, 12, etc...pas de problème pour noter tout ça quand c'est confirmé. Mais si l'utilisateur revient sur sa décision et décoche la case il faut que la zone de texte se mette à jour automatiquement !
J'arrive à effacer le texte avec la fonction Replace mais comme le nombre associé est variable je tombe sur un os...
Voici le code de ma macro avec la ligne problématique surlignée :
Private Sub Check_tour_Click()
Dim nbtour#, nb%
If Check_tour.Value = True Then
nb = Replace(Application.InputBox("nombre de tourillons", "quantité", 1), ".", ",")
nbtour = Sheets("accessoires").Range("F4").Value * nb
Lab_tour.Caption = nbtour
Call UserForm6.tot
UserForm5.Lab_listops.Caption = UserForm5.Lab_listops.Caption & CStr(nb) & " tourillons méla, "
Else
total = Format(CDbl(Lab_total.Caption), "#.00")
Lab_total.Caption = total - Format(CDbl(Lab_tour.Caption), "#.00")
Lab_tour.Caption = 0
UserForm5.Lab_listops.Caption = Replace(UserForm5.Lab_listops.Caption, "# tourillons méla,", " ")
End If
End SubJe joins également le fichier complet, les userform concernés sont le 5 (principal) et le 6 (choix des accessoires).
Merci d'avance pour votre aide !
Bonjour,
au lieux de utiliser replace , pourquoi ne pas tenté avec "left" ?
UserForm5.Lab_listops.Caption = Left(UserForm5.Lab_listops.Caption, Len(UserForm5.Lab_listops.Caption) - Len(CStr(nb) & " tourillons méla,"))Bonjour et merci de ta réponse,
j'avoue que je ne connais pas vraiment cette fonction mais je viens d'essayer et le problème persiste : le texte disparait bien mais pas le chiffre (la variable nb étant définie dans l'autre segment de "if" elle ne doit pas être repérée si on décoche la case...), en plus si je comprends bien comment fonctionne la fonction elle va simplement retirer un certain nombre de caractères à la fin du texte, mais si d'autres options ont été cochées après les tourillons c'est le mauvais texte qui sera effacé du coup non ?
en effet le mieux est de tout remplacer par des variable dans les "LEN" pour pouvoir s'adapter à tout type données.
je vous propose une méthode pour trouver un chiffre dans chaîne de caractère :
dim j as integer
j = 0
For i = 1 To Len(Range("B1").Value) 'ma valeur de tester se trouve dans la cellule B1 pour vous sa sera userform........ .caption
If IsNumeric(Mid(Range("B1").Value, i, 1)) Then
j = i
End If
Next i
MsgBox Left(Range("B1").Value, j - 1)sa vous retourne la chaine de caractère avant le nombre
En effet ça fonctionne, merci beaucoup !