Microsoft 365 plantage macro retour en arrière

FCMLE44

XLDnaute Impliqué
Bonjour

Cette macro débogue lorsque nous effectuons l'action suivante dans un fichier

"Si faute de frappe et retour arrière pour effacer"

Voici le code :
VB:
Private Sub TextBox15_Change()
Range("K2").Value = Format(CCur(Prépacourriers.TextBox15.Value), "### ##0.00 €")
End Sub

Que pourrais y rajouter pour éviter l'anomalie ?

Merci
 
Solution
en utilisant le même principe
voici le code à affecter à ton bouton, il efface le userform et les données de la feuille courriers
Sub raz()
With Sheets("courriers")
For n = 1 To UBound(mescontrols)
.Range(mesranges(n)).Value = ""
Me.Controls(mescontrols(n)) = ""
Next
End With
End Sub

fanch55

XLDnaute Barbatruc
Bonjour, à tester si cela vous convient
VB:
Dim OldVal
Private Sub TextBox15_Change()
Dim Target As Range
Set Target = Range("K2")
    If TextBox15 <> vbNullString Then
        On Error Resume Next
        Application.Evaluate (CCur(TextBox15.Value))
        If Err = 0 _
        Then Target.Value = Format(CCur(TextBox15.Value), "### ##0.00 €") _
        Else TextBox15 = OldVal
    Else
        Target.Value = vbNullString
    End If
OldVal = Empty
End Sub
Private Sub TextBox15_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    OldVal = TextBox15.Value
End Sub
 
Dernière édition:

patricktoulon

XLDnaute Barbatruc
bonjour
juste une question
mis a part l’événement peut être non approprié
personne n'a eu l'idée toute simple d’appliquer un numberformat a target sur le ccur du textbox
au lieu d'injecter un format afin d'une part de garder le target en numérique et non texte parce que c'est ce que format fait et que le job soit fait
;)
j'dis ca moi j'dis rien
bon OK je sort 🤪
 

FCMLE44

XLDnaute Impliqué
Bonjour
Ca peut dépendre de ton userform si plusieurs textbox ou pas
sinon essaie avec
Private Sub TextBox1_AfterUpdate()
Tu peux joindre le fichier!

Oui j'ai plusieurs textbox. Ceux correspondant aux userform Prépacourriers sont concernés.
J'aimerais aussi que lorsque l'on remplit, en dehors d'aller alimenter la cellule que les données que l'on arenseigné dans le userform rest même user form fermé

Voici le fichier
 

Pièces jointes

  • Maquette STC TEST.xlsm
    396.1 KB · Affichages: 17

patricktoulon

XLDnaute Barbatruc
re
VB:
Private Sub TextBox14_AfterUpdate()
With Sheets("DSN"): Range("F26").Value = CDbl(TextBox14): .NumberFormat = "### ##0.00 €": End With
End Sub
si tu n'utilise pas la virgule comme séparateur décimal il te faut faire un replace
et fait pareil pour les autres textboxS concernéS
une erreur c'est déclenchée après dans la fonction nombre en lettre
et il y en a bien d'autre encore
 

FCMLE44

XLDnaute Impliqué
Merci
Débogage même en mettant le End With à la ligne
1608565988879.png


Cordialement
 

FCMLE44

XLDnaute Impliqué
Bo
Bonjour, à tester si cela vous convient
VB:
Dim OldVal
Private Sub TextBox15_Change()
Dim Target As Range
Set Target = Range("K2")
    If TextBox15 <> vbNullString Then
        On Error Resume Next
        Application.Evaluate (CCur(TextBox15.Value))
        If Err = 0 _
        Then Target.Value = Format(CCur(TextBox15.Value), "### ##0.00 €") _
        Else TextBox15 = OldVal
    Else
        Target.Value = vbNullString
    End If
OldVal = Empty
End Sub
Private Sub TextBox15_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    OldVal = TextBox15.Value
End Sub
Bonjour

Le Old Val se met dans une ligne de code déja existante
Voici en pièce jointe mon fichier
Feuille "Courriers"
Userform Prépacourriers
Toutes les données. Je souhaiterais pouvoir faire des retours en arrière et que lorsque j'ai saisi quelquechose, en dehors du fait d'alimenter les cellules, si j'ouvre a nouveau le userform les données soient toujours apparente

Merci
 

FCMLE44

XLDnaute Impliqué
Bonjour as-tu essayer
comme ceci:
Private Sub TextBox15_change()
If TextBox15 <> "" And IsNumeric(TextBox15) = True Then
Range("K2").Value = Format(CCur(Prépacourriers.TextBox15.Value), "### ##0.00 €")
End If
End Sub
Je vais abuser encore un peu
Qu'est ce que je peux rajouter aux codes figurant sur mon userform Prépacourriers pour que une fois les données saisies les textbox restent remplis lorsque par mégarde je sors du userform
Merci