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

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
 

Dranreb

XLDnaute Barbatruc
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 ?
 

Dranreb

XLDnaute Barbatruc
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)
 

gbstyle

XLDnaute Impliqué
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 ?
 

Dranreb

XLDnaute Barbatruc
@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…)
 

Dranreb

XLDnaute Barbatruc
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.
 

Dranreb

XLDnaute Barbatruc
Ç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:

gbstyle

XLDnaute Impliqué
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
 

gbstyle

XLDnaute Impliqué
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:

gbstyle

XLDnaute Impliqué
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.