Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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
 

gbstyle

XLDnaute Impliqué
Voici ce que j'ai fait
VB:
Private Sub CommandButton1_Click()
Dim TDon(), TR(), Ldon As Long, LR As Long, C As Long
TDon = CLsC.PlgTablo.Value 'résultat de la plage suivi commande
ReDim TR(1 To WshBCVierge.[CorpsFacture].Rows.Count, 1 To 5)
'ReDim TLBx(1 To UBound(TLC), 1 To 5)
For LR = 1 To UBound(TLC)
    Ldon = TLC(LR)
  For C = 1 To 5: TR(LR, C) = TDon(Ldon, Choose(C, 8, 9, 10, 11, 12)): Next C, LR
WshBCVierge.[CorpsFacture].Value = TR
WshBCVierge.[RéfBC].Value = TDon(Ldon, 1)
WshBCVierge.[Fournisseur].Value = TDon(Ldon, 4)
WshBCVierge.[DateCommande].Value = TDon(Ldon, 2)
WshBCVierge.[Port].Value = TDon(Ldon, 6)
WshBCVierge.[Delailivraison].Value = TDon(Ldon, 5)

WshBCVierge.[AdresseFournisseur].Value = TVLF(1, 4)
WshBCVierge.[CP].Value = TVLF(1, 5)
WshBCVierge.[Ville].Value = TVLF(1, 6)
WshBCVierge.[ConditionPaiement].Value = TVLF(1, 19)

WshBCVierge.Activate 'afficher la feuille en fin de procédure

Application.ScreenUpdating = False
    WshBCVierge.ExportAsFixedFormat xlTypePDF, "BC" & Range("I1") & Range("G7")
        Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        "F:\Exportation\BC\ BC " & " " &  Range("I3") &  " " & Range("G7") & ".pdf", Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True
      
End Sub
J'ai bien un mon bon de commande qui se remplis et un fichier pdf qui s'ouvre avec le nom BC JURATOYS, par contre le PDF est vierge :/, par contre je pense qu'il manque la plage de selection
 

Dranreb

XLDnaute Barbatruc
Vérifie si un aperçu avant impression de la feuille affiche aussi une page vierge, et si oui définit peut être une zone d'impression correcte, je ne sais pas moi.
Non mais, je n'avais pas vu: le Selection.ExportAsFixedFormat est à enlever !!!
Jamais utiliser Select ni Selection, sauf tout en fin d'une macro si c'est à l'intention de l'utilisateur.
 

gbstyle

XLDnaute Impliqué
Mon soucis c'est que en supprimant tout ce petit chapitre :
VB:
'Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
         '"F:\Exportation\BC\ BC " & " " & Range("I3") & " " & Range("G7") & ".pdf", Quality:=xlQualityStandard, _
         'IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True

Je n'ai plus rien qui fonctionne, en rajoutant ce code
j'ai bien l'ouverture de mon PDF avec le nom souhaitait et il est bien copié dans le chemin d'accés demandé par contre mon corp de document est vierge

la actuellement j'ai tout remplace par ceci :
WshBCVierge.ExportAsFixedFormat xlTypePDF, "BC" & " " & Range("I1") & " " & Range("G7"), xlQualityStandard, True, False, , "F:\Exportation\BC\", True, xlTypePDF
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Mets avant un WshBCVierge.PrintPreview pour vérifier s'il le montre aussi vierge. Veille à bien régler la zone d'impression, c'est important parce que tu a mis comme paramètre IgnorePrintAreas:=False
 

gbstyle

XLDnaute Impliqué
Pour récapituler :
avec le print.review meme si ca plante j'ai réussi à voir que la feuille était bien afficher avec ses information

Comme je suis un peu perdu je remet le code global :
Et l'ancien qui lui fonctionnais globalement mais sans le corp du message :/

VB:
Private Sub CommandButton1_Click()
Dim TDon(), TR(), Ldon As Long, LR As Long, C As Long
TDon = CLsC.PlgTablo.Value 'résultat de la plage suivi commande
ReDim TR(1 To WshBCVierge.[CorpsFacture].Rows.Count, 1 To 5)
'ReDim TLBx(1 To UBound(TLC), 1 To 5)
For LR = 1 To UBound(TLC)
    Ldon = TLC(LR)
  For C = 1 To 5: TR(LR, C) = TDon(Ldon, Choose(C, 8, 9, 10, 11, 12)): Next C, LR
WshBCVierge.[CorpsFacture].Value = TR
WshBCVierge.[RéfBC].Value = TDon(Ldon, 1)
WshBCVierge.[Fournisseur].Value = TDon(Ldon, 4)
WshBCVierge.[DateCommande].Value = TDon(Ldon, 2)
WshBCVierge.[Port].Value = TDon(Ldon, 6)
WshBCVierge.[Delailivraison].Value = TDon(Ldon, 5)

WshBCVierge.[AdresseFournisseur].Value = TVLF(1, 4)
WshBCVierge.[CP].Value = TVLF(1, 5)
WshBCVierge.[Ville].Value = TVLF(1, 6)
WshBCVierge.[ConditionPaiement].Value = TVLF(1, 19)

WshBCVierge.Activate 'afficher la feuille en fin de procédure
'WshBCVierge.PrintPreview
Application.ScreenUpdating = False
     WshBCVierge.ExportAsFixedFormat xlTypePDF, "BC" & " " & Range("I1") & " " & Range("G7"), xlQualityStandard, True, True, , "F:\Exportation\BC\", True, xlTypePDF

        'Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        '"F:\Exportation\BC\ BC " & Range("I3") & Range("G7") & ".pdf", Quality:=xlQualityStandard, _
        'IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True
  
          
End Sub
 

Dranreb

XLDnaute Barbatruc
C'est marrant: l'instruction en commentaire avec Selection me parait plus claire et plus complète.
Je voudrais juste que tu y remplace Selection par WshBCVierge.
Qu'est-ce qu'il y a dans WshBCVierge.PageSetUp.PrintArea ?
 

gbstyle

XLDnaute Impliqué
Bon bah c'est nickel il me reste juste un petit peu de mise en forme sur la page pour l'améliorer mais le résultat est nickel.
Encore merci Dranreb

Ah oui j'oubliais est ce que tu sais si il est possible sur un bouton macro d'une feuille paramétrer ce type de sauvegarde :
Enregistrer le fichier actuel + enregistrer une copie de sauvegarde avec une destination prédéfinis, le bouton doit pouvoir effectuer les 2 afin d'éviter des oublis.
J'ai commencé par ceci mais je sais qu'il me manque des choses.

VB:
Sub Saveas()
ActiveWorkbook.Saveas 'sauvegarde de la base à son lieu actuel d'utilisation
ActiveWorkbook.Saveas Filename:="F:\Exportation\ARCHIVES\" & "GDSTK" & Range("A2").Value 'sauvegarde pour archiver la base

End Sub
 

gbstyle

XLDnaute Impliqué
Bonjour DRANREB
je te lis à l'instant et j'ai donc essayer de faire quelque modif :
ci joint commande :
VB:
Sub Saveas()
ThisWorkbook.Save
ThisWorkbook.Saveas "F:\Exportation\ARCHIVES\GDSTK" & " " & Format(Date, "yyyymmdd") & ".xlsm"
End Sub

A prioris tout fonctionne, n'hésite pas à me dire si tu y vois quelque chose de non conforme surtout ca me rassurera
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Bonjour
Ben la 1ere fois c'est peut être bon, mais une seconde fois la 2ième instruction fait double emploi avec la 1ère. Parce que dans la mesure où celle ci était un SaveAs et non un SaveCopyAs le classeur en mémoire est devenu lui même sa copie et ne peut plus se définir comme le classeur d'origine modifié.
 

gbstyle

XLDnaute Impliqué
Alors j'ai effectué cette modif ci :
VB:
Sub Saveas()
ThisWorkbook.Save
ThisWorkbook.SaveCopyAs "F:\Exportation\ARCHIVES\GDSTK" & " " & Format(Date, "yyyymmdd") & ".xlsm"
End Sub

A prioris après des essais ca fonctionne, par contre je n'ai pas de message me disant que j'ai déjà un fichier portant le meme nom mais ceci dit c'est pas forcement obligatoire, du moment que le lendemain la sauvegarde se fasse à date
 

Dranreb

XLDnaute Barbatruc
Eh bien comme dit plusieurs fois la sauvegarde d'une copie sans changer l'identité du classeur ouvert c'est la méthode SaveCopyAs et non SaveAs qui le sauvegarde sous un chemin devenant sa nouvelle identité.
 
Dernière édition:
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…