Enregistrer le format d'une valeur textbox en monétaire

  • Initiateur de la discussion Initiateur de la discussion gbstyle
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

gbstyle

XLDnaute Impliqué
Bonjour, voila je souhaiterai lors de l'enregistrement sur mon tableau que le format nombre soit monétaire
ci joint mon bout de code
Private Sub BtnAenregistrer_Click()
Ref = Me.TxtARefArticles
With Sheets("Base_Articles")
Set trouvé = .Range("TblBaseArticles").Columns(1).Find(Ref, lookat:=xlWhole, LookIn:=xlValues)
If trouvé Is Nothing Then 'il s'agit d'un nouvelle articles
derlig = .Range("A" & .Rows.Count).End(xlUp).Row + 1 'on se positionne sur la dernière ligne
Else 'existe déjà
derlig = trouvé.Row
If MsgBox("Souhaitez vous modifier l'article ?", vbYesNo) = vbNo Then Exit Sub
End If

.Range("A" & derlig) = TxtARefArticles
.Range("B" & derlig) = CboAFamille
.Range("C" & derlig) = CboASousfamille
.Range("D" & derlig) = TxtADesignation
.Range("E" & derlig) = CboAFournisseur
.Range("F" & derlig) = TxtALongueurcolisage
.Range("G" & derlig) = TxtALargeurcolisage
.Range("H" & derlig) = TxtAHauteurcolisage
.Range("I" & derlig) = TxtACréele
.Range("J" & derlig) = TxtANotes
.Range("K" & derlig) = TxtADelaislivraison
.Range("L" & derlig) = TxtAFraistransport
.Range("M" & derlig) = TxtAFacturation
.Range("N" & derlig) = CboAModedegestion
.Range("O" & derlig) = TxtAminicommande
.Range("P" & derlig) = TxtAPrixUnitHT ' => données à afficher en format Euros lors de la saisie dans le text box et lors de l'enregistrement que sont format se mette en monétaire dans le tableau source
J'ai essaye un code avec .NumberFormat = "#,##0.00 $" mais je n'y arrive pas, il me manque une déclaration de variable je pense


End With

End Sub

D'avance merci
 
L'exécution devrait s'arrêter d'elle même si c'est un espion fait pour ça, quand la valeur change.
Sinon il est toujours possible de mettre des points d'arrêt supplémentaires bien sûr.
Encore un arrêt dans IndexerFus1Col de MSujetCBx ??? Que dit l'espion ?
 
Remarque: Cette procédure n'est utilisée que par la méthode Actualiser.
Alors si les espions c'est trop compliqué tu peux mettre des MsgBox :
VB:
MsgBox "Avant CLsC.Actualiser, le tableau s'appelle """ & CLsC.Lignes.Parent.Name & """."
CLsC.Actualiser
MsgBox "Après CLsC.Actualiser, le tableau s'appelle """ & CLsC.Lignes.Parent.Name & """."
(Il peut planter s'il est dans l'impossibilité d'afficher la valeur de l'expression)
 
Voici ce que j'ai : et comme tu peux voir excel plante
upload_2018-7-2_16-5-57.png

Le problème c'est qu'après la procédure avec l'espion je n'ai rien qui ressort, y'a t'il un rapport qui devrais apparaitre ?
 
@gbstyle Il serait possible de mettre un point d'arrêt avant l'instruction qui plante pour voir si CLsC.Lignes.Parent.Name est toujours bien défini.
Est-ce que ça se produit peu après l'ouverture du classeur ? (Il peut arriver que le modèle en mémoire du classeur soit corrompu, à force…)
 
En y dépliant Lignes pour voir ses propriété, Parent notamment, ça dit quoi ?
Est-ce que la collection Lignes est fusillée dès le 1er Actualiser, dans l'UserForm_Initialize ? Parce que là c'est trop tard de mettre les MsgBox autour de celui qui est fait après.
 
Ça n'a pas l'air d'être la propriété Parent de la propriété Lignes du CLsC, ça.
Pourquoi tu n'as pas mis un espion sur ce qui m'intéressait seulement, à savoir CLsC.lignes.Parent.Name ?

Si on ne trouve pas on va se rabattre sur une autre façon de faire. Mais ce n'est pas satisfaisant parce qu'on ne sait pas si le problème ne va pas se représenter sous une autre forme.
VB:
If LCouC = 0 Then
    CLsC.ValeursVers TVLC
    LCouC = CLsC.PlgTablo.Rows.Count + 1
    CLsC.PlgTablo.Rows(LCouC).Resize(, 11).Value = TVLC
    CLsC.Actualiser
Else
    CLsC.PlgTablo.Rows(LCouC).Resize(, 11).Value = TVLC
    End If
 
Dernière édition:
Je viens d'essayer avec ton nouveau code en remplacement de l'ancien j'ai exactement le meme plantage.
Je vais ce soir repartir de la feuille vierge et copier mes modules étape par étapes.
Je verrais bien si le soucis se pousuit, car la je suis blasé surtout de voir que ca fonctionne chez toi et pas chez moi sur le meme fichier c'est un truc de dingue quand même
 
Dranreb, je viens à l'instant de rentrer à mon domicile, je suis sur mon pc en excel 2010 et je n'ai aucun problème à l'utilisation du fichier aucun message d'erreur, c'est vraiment plus que bisarre
J'ai essayé avec le fichier source + ta proposition de modif et les 2 fonctionne.
Mon fichier est toujour sauvegarder sur ma clef usb
Je reste des nues, car demain à mon job sur excel 2016 ca ne refonctionnera pas ...
 
Dernière édition:
Bonjour Dranreb alors voici le topo,
j'ai essayé a nouveau d'utiliser le fichier sur excel 2016 sur mon poste au travail, le fichier plante à nouveau des que je modifie une commande.
Je me suis dis donc réécris le projet étape par étape sur un classeur 2016 de base ca sera un bon exercice et surement que ca ressortira le problème.
j'ai donc effectué l'exercice pour ressortir juste le formulaire global truc tout simple et bien le fichier plante déjà sur la déclaration de dictionnaire
je te joint l'ébauche du fichier, je ne sais pas si ca peut etre lié mais ton regard sur le dysfonctionnement pourra ptet nous aider à avancer.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Retour