Effacer des données des valeurs de textbox
Bonsoir à tous,
Je souhaite avec une macro effacer les valeurs (numériques et texte) dans des textbox. J'ai certaines textbox (ceux sont des valeurs calculées) qui ne s'effacent pas.
J'ai également un problème c'est quand je lance la macro, j'ai des msgbox qui apparaissent (des msgbox qui sont relatives à mes macro dans les textbox).
voici le code pour effacer les valeur dans mes textbox :
Private Sub EFFACER_change()
CP.Value = ""
VILLE.Value = ""
LOCSPE.Value = ""
DPT.Value = ""
MONACO.Value = False
POIDS.Value = ""
NBPALETTES.Value = ""
HAYON.Value = False
TRANCHEPOIDS.Value = ""
CtAFFRET.Value = "0.00€"
CtMess.Value = "0.00€"
COMPARATIF.Value = ""
End SubCi-dessous un des codes de la msgbox qui se déclenche :
Private Sub COMPARATIF_Change()
'on compare quel est le type de transport (affret ou Mess) le plus avantageux si le nombre de palettes n'excède pas 3
If NBPALETTES.Value >= 4 Then
COMPARATIF.Value = "AFFRETEMENT"
MsgBox "La messagerie ne peut être utilisée au-delà de 3 palettes pour un même destinataire. Vous êtes obligé de choisir l'affretement pour cet envoi."
ElseIf CtMess.Value < CtAFFRET.Value And NBPALETTES.Value > 0 And NBPALETTES.Value <= 3 Then
COMPARATIF.Value = "MESSAGERIE"
ElseIf CtMess.Value > CtAFFRET.Value And NBPALETTES.Value > 0 And NBPALETTES.Value <= 3 Then
COMPARATIF.Value = "AFFRETEMENT"
End If
End SubAvez-vous une astuce pour bien effacer dans les textbox et pour que les msgbox n'apparaissent plus.
Avez-vous besoin d'autres informations?
Hello,
Oui effectivement, il vaudrait mieux que tu déposes le fichier en question, sans données confidentielles.
Dans l'attente.
Bonsoir
Bonsoir Hulk
La méthode la plus simple
Dans le code de l'Userform tu déclares une variable publique
Avant la 1ère macro (en haut de la page - en principe après les Option Explicit ou autre)
Exemple
Dim Encours as BooleanEnsuite dans ta macro
Private Sub EFFACER_change()
EnCours = True
CP.Value = ""
VILLE.Value = ""
LOCSPE.Value = ""
DPT.Value = ""
MONACO.Value = False
POIDS.Value = ""
NBPALETTES.Value = ""
HAYON.Value = False
TRANCHEPOIDS.Value = ""
CtAFFRET.Value = "0.00€"
CtMess.Value = "0.00€"
COMPARATIF.Value = ""
EnCours = False
End SubEt tu places ce code dans toutes les macros dont tu ne veux pas avoir le message
Private Sub COMPARATIF_Change()
If EnCours = True Then Exit Sub
'on compare quel est le type de transport (affret ou Mess) le plus avantageux si le nombre de palettes n'excède pas 3Bonsoir BENZAî,
Je te remercie ça fonctionne très bien.
J'ai également un petit problème sur mon code ci-dessous. Une fois que j'ai calculé le cout par type de transport (ctAffret et CtMess), je souhaite afficher le comparatif dans un texbox c'est à dire afficher le nom du type de transport le plus approprié, mais je ne comprends pas car 1 fois sur 2 le nom qui est affiché est faux car il m'affiche le mode de transport le plus cher.
Il faut savoir également que si le nombre de palettes est > à 3 le résultat est forcément AFFRETEMENT.
Ci-dessous le code.
Private Sub COMPARATIF_Change()
If EnCours = True Then
Exit Sub
End If
'on compare quel est le type de transport (affret ou Mess) le plus avantageux si le nombre de palettes n'excède pas 3
If NBPALETTES.Value >= 4 Then
COMPARATIF.Value = "AFFRETEMENT"
MsgBox "La messagerie ne peut être utilisée au-delà de 3 palettes pour un même destinataire. Vous êtes obligé de choisir l'affretement pour cet envoi."
ElseIf CtMess.Value < CtAFFRET.Value And NBPALETTES.Value > 0 And NBPALETTES.Value <= 3 Then
COMPARATIF.Value = "MESSAGERIE"
ElseIf CtMess.Value > CtAFFRET.Value And NBPALETTES.Value > 0 And NBPALETTES.Value <= 3 Then
COMPARATIF.Value = "AFFRETEMENT"
End If
End SubAurais-tu une idée d'où ça pourrait provenir?
Bonsoir
Le problème c'est que tu compare des textes entre eux et "100" est plus petit que "20"
Donc il faut transformer tes textes en nombre
Essayes
On pourrait simplifier mais cela serait plus pratique avec ton fichier
Private Sub COMPARATIF_Change()
If EnCours = True Then Exit Sub
'on compare quel est le type de transport (affret ou Mess) le plus avantageux si le nombre de palettes n'excède pas 3
If NBPALETTES.Value >= 4 Then
COMPARATIF.Value = "AFFRETEMENT"
MsgBox "La messagerie ne peut être utilisée au-delà de 3 palettes pour un même destinataire. Vous êtes obligé de choisir l'affretement pour cet envoi."
ElseIf Val(Replace(CtMess, ",", ".")) < Val(Replace(CtAFFRET, ",", ".")) And NBPALETTES.Value > 0 And NBPALETTES.Value <= 3 Then
COMPARATIF.Value = "MESSAGERIE"
ElseIf Val(Replace(CtMess, ",", ".")) > Val(Replace(CtAFFRET, ",", ".")) And NBPALETTES.Value > 0 And NBPALETTES.Value <= 3 Then
COMPARATIF.Value = "AFFRETEMENT"
End If
End SubÉDIT : Une idée de simplification
Private Sub COMPARATIF_Change()
If EnCours = True Then Exit Sub
'on compare quel est le type de transport (affret ou Mess) le plus avantageux si le nombre de palettes n'excède pas 3
Select Case Val(NBPALETTES)
Case 1 To 3
If Val(Replace(CtMess, ",", ".")) < Val(Replace(CtAFFRET, ",", ".")) Then
COMPARATIF = "MESSAGERIE"
Else
COMPARATIF = "AFFRETEMENT"
End If
Case Is > 3
COMPARATIF = "AFFRETEMENT"
MsgBox "La messagerie ne peut être utilisée au-delà de 3 palettes pour un même destinataire. Vous êtes obligé de choisir l'affretement pour cet envoi."
End Select
End SubRe BANZAI,
OK,
En fait voici un exemple ci-dessous. Pour mettre mon résultat en format monétaire je croyais qu'il fallait faire comme le code ci-dessous, mais ça me le met au format texte.
Quel est le code pour mettre au format monétaire et donc numérique?
CtMess.Value = Format(Worksheets("KUEHNE NAGEL MESS").Cells(ligneTarif, colonneTarif), "0.00€")Bonsoir
Tu ne peux pas mettre un nombre dans un contrôle il sera automatiquement transformé en texte
Que tu écrives
CtMess.Value = 10Tu obtiendras "10"
Ok,
Je te remercie pour ton aide.
C'est noté pour la prochaine fois.
Bonne soirée.