Microsoft 365 vba format date et N° automatique

974RE

XLDnaute Occasionnel
Bonsoir le forum,
Une fois de plus je fais appel à vous.
Je rencontre 2 problèmes que je n'arrive pas à résoudre:
1° Sur mes USF Visualiser et Modifier, mes textBox Heures ne s'affiche pas au format hh:mm bien que j'ai précisé ce format.
2° je n'arrive pas à l'ouverture de l'USF Devis à ce qu'il me donne automatiquement le N° Suivant qui devrait être 2021-002 puis au prochain devis 2021-003...
Auriez-vous la gentillesse de bien vouloir m'aider s'il vous plaît.
Je sais pouvoir compter sur votre aide.
Merci d'avance!
 

Pièces jointes

  • Essai CL1 Copie.xlsm
    182.4 KB · Affichages: 182
Solution
Bonjour 974RE, Yeahou, le fil,

tu as écrit : « Je crois que Soan à raison, aujourd'hui je coupe: plage, déjeuner les pieds dans l'eau, sieste et......je reprends! »

quoi ? t'as déjà fini d'faire trempette ? 😱 ben t'as pas nagé bien longtemps, dis donc ! tu pourras jamais rattraper Laure Manaudou si tu t'entraînes aussi peu ! 😁 😄 😂 bon, t'as d'la chance, regarde, elle t'attend :

Regarde la pièce jointe 1100325



tu as aussi écrit : « Je vais de ce pas décortiquer tes codes. » ; ben ça non plus ça t'a pas pris bien longtemps ! moi qui croyais qu'on t'reverrai plus avant un mois ou deux ! 😁 🤣 🤣 🤣 bon, c'est vrai qu'mes codes sont très faciles à comprendre, et en plus c'est comme les crêpes : c'est bien plus...​

974RE

XLDnaute Occasionnel
@974RE

regarde d'abord le nouveau fichier de mon post #73 (qui comporte déjà plusieurs améliorations) ; pour l'USF Devis, tout est fait jusque avant les 3 cases vertes (sans avoir cliqué sur le bouton Estimatif, ou au retour du UF Estimatif) ; pour la suite, donne-moi un exemple de ce que tu saisis dans les 3 cases vertes ; c'est juste du texte, n'est-ce pas ? ou autre chose ? ça aidera beaucoup si tu peux me donner un exemple chiffré complet (dont les infos à saisir dans Estimatif), avec un exemple du Devis final (sans infos confidentielles, bien sûr !).

la suite sera que je vais complètement revoir le code VBA de tes 2 boutons Ajouter et Archiver Devis, tout en continuant de suivre les infos de ton post #55 (c'est un long post, et j'ai pas encore tout lu et appliqué tes consignes !) ; quand ça sera fait, je crois bien que ça devrait faire en même temps les nouvelles demandes de ton post #74 (j'ai déjà téléchargé le fichier joint de ton post #74, mais j'le verrai bien plus tard, car chaque chose en son temps ! 😜).

là, j'dois vraiment arrêter mon PC pour aller dormir ! 😴 😴 😴 j'reprendrai quand j'serai bien reposé, et aussi après un bon repas. 😋 j'pense que le fichier suivant sera prêt tard cette nuit, ou demain !​

soan
Ok, bien reçu, c'est vrai que j'étais fixé sur le problème de l'USF Estimatif_Coût . Sur ce plan, tout fonctionne comme je le voulais, ce qui donne de la fluidité dans la manipulation de l'USF Devis. Tout est là il suffit de suivre la marche.
Concernant les 3 cases vertes, effectivement on y saisi que du texte, et sert au client pour lui permettre de voir le circuit effectué par les véhicules dans le cadre de la prestation demandée et aussi aux chauffeurs d'être informés sur le circuit à suivre.
J'ai un souci avec l'USF Devis_Modifié, je n'arrive pas à charger les modifications dans le tableau de la feuille Archive Devis avec le bouton Archiver.
Je te transmets le fichier avec les contenus.
Repose toi bien et à tout à l'heure.
 

Pièces jointes

  • Essai CL (8) .xlsm
    211.3 KB · Affichages: 4

soan

XLDnaute Barbatruc
Inactif
Bonjour 974RE,

je n'ai encore rien fait pour les 2 boutons Ajouter et Archiver Devis car j'ai fait tout ceci :

* j'ai vu tes 2 derniers fichiers, et pour ne pas perdre le code VBA que j'avais déjà fait, j'ai copié les nouvelles feuilles en remplacement des anciennes (pour celles qui étaient différentes).

* j'ai amélioré la présentation du UF Accueil (celui dont le titre est "Menu") ; j'ai aussi amélioré la présentation du UF Devis (tu pourras voir qu''il est plus clair et aéré). 🙂

* dans le UF Estimatif, c'est devenu inutile de saisir de nouveau les données qui ne changent pas ; ainsi, si la case est vide, sa valeur sur la feuille "Prestation" ne sera PAS modifiée ; si tu veux mettre la valeur 0, il suffira de la saisir au lieu de laisser la case vide ; très gros avantage : si par exemple tu veux changer que la Remise : saisis seulement la nouvelle valeur, laisse toutes les autres cases vides, clic / Valider. 😊


* quand le UF Estimatif s'ouvre, il est automatiquement positionné de telle façon qu'en bas, et en arrière-plan, sur le UF Devis, tu peux voir les 4 champs Désignation ; Qté ; PU ; Montant HT ; gros avantage : tu peux voir ce qui s'y passe après avoir cliqué sur le bouton Valider ; notamment si tu avais déjà choisi un item dans la liste Désignation et saisi Qté : tu pourras vérifier que PU et Montant HT sont corrects même quand tu changes les données ; ceci est après la correction d'un bug difficile (j'en parle au point suivant).

* j'ai mis beaucoup de temps à corriger un bug très subtil concernant le PU et le Montant HT du UF Devis ; notamment au retour du UF Estimatif ; mais maint'nant c'est OK : c'est enfin réglé ! :) tu pourras voir que le Montant HT est toujours CORRECT quelque soient les cas de figure qui peuvent se présenter ! 😊


* côté VBA, regarde d'abord tout le code du UF Accueil ; ce sera pas bien long (24 lignes seulement) ; ensuite, regarde tout le code de UF_Devis ; ce sera plus long : il est actuellement de 127 lignes ; la sub UserForm_Initialize() est tout à la fin, même si c'est la 1ère à être exécutée à l'ouverture du formulaire ; toutes les autres subs sont donc au-dessus, et je les ai classées dans l'ordre d'apparition des contrôles sur le UF : d'abord la sub ComboBox1_Change() qui est pour la liste déroulante Recherche ; puis la sub ComboBox3_Change() qui est pour la liste déroulante VILLE ; puis la Sub CP_Exit() du Code Postal, etc... ainsi, on peut s'y retrouver bien plus facilement ! ;)

* la suite sera de modifier les 2 subs Ajouter_Click() et ArchiverDevis_Click() ; je voulais le faire, mais avec tout c'que j'ai indiqué au-dessus, j'en n'ai pas encore eu le temps ; en principe, sauf imprévu, j'aurai pas besoin d'changer les autres subs ; je ferai ça ce soir ou demain ; en attendant, amuse-toi bien avec la nouvelle version de ton fichier ! 😜 (tests et lecture du code VBA)

soan
 

Pièces jointes

  • Essai CL2.xlsm
    205.5 KB · Affichages: 5

974RE

XLDnaute Occasionnel
Bonjour Soan,
Quel boulot! Je ne te remercierais jamais assez!
J'aurais un bien bel outil quand se sera fini, et j'aurais beaucoup appris!
Je regarde tout ça et je m'en imprègne.
Je te fais un retour, bonne journée à toi.
 

974RE

XLDnaute Occasionnel
Bonjour Soan,
J'ai testé tes codes, et c'est exactement ce que je voulais. Le code Ajouter ne mettait pas les données exactement où il le fallait dans la feuille Devis, mais j'ai rectifié le tir.
Le code Archiver Devis ne fonctionnait pas comme il fallait , mais là aussi j'ai rectifié.
Sur ce code, je voudrais qu'il archive éventuellement deux lignes ( et plus si cela devient le cas) pour le même N° Devis, donc le même client.
Dans le Tableau ListDevis (A21:D21) de la feuille Devis, je peux entrer deux véhicules: 504, Qté........ puis je fais Ajouter, et je reviens sur désignation et j'entre MG, Qté...... et je fais de nouveau Ajouter et les deux lignes apparaît dans le tableau.
Je voudrais donc pouvoir archiver les données du tableau sur deux lignes dans le tableau Archive Devis.
 

Pièces jointes

  • Essai CL2 du 1 Mars 2021.xlsm
    169 KB · Affichages: 4

soan

XLDnaute Barbatruc
Inactif
Bonjour 974RE,

j'ai toujours pas fait le code du bouton Archiver Devis, car j'ai encore fait plein d'autres modifs ! :)

ouvre le nouveau classeur ➯ fenêtre "Menu" ; appuie sur la touche Échap ➯ ce UserForm se ferme, et retour sur la feuille "Devis" ; fais Ctrl m ➯ fenêtre "Menu" ; appuie sur Échap ➯ retour sur la feuille "Devis".

fais Ctrl m ➯ fenêtre "Menu" ; clique sur le bouton Devis ➯ fenêtre "Devis" ; tu peux voir tout de suite ces 4 changements les plus évidents : j'ai remonté les 3 champs verts juste sous la Date Évènement ; il y a un 1er bouton Valider à droite de cette Date Évènement, et un 2ème bouton Valider à gauche du bouton rouge ; note aussi que l'année de la Date est sur 4 chiffres.

clique sur le bouton rouge ➯ fenêtre "Estimatif", et en arrière-plan : feuille "Prestation" ; appuie sur Échap ➯ retour sur la fenêtre "Devis", et en arrière-plan, ça retourne sur la feuille "Devis" ! même si on le voit pas, tu es sur le champ Recherche ; la preuve : appuie sur Échap ➯ retour sur la feuille "Devis".

tu veux revoir la fenêtre "Devis" ? ok, mais cette fois, au lieu de faire Ctrl m puis d'appuyer sur le bouton Devis, fais tout simplement Ctrl d ; c'est quand même plus simple, n'est-ce pas ? ;)


dans la liste Recherche, sélectionne par exemple Lauret ➯ en dessous, les champs se remplissent ; appuie sur Échap ➯ le champ Recherche est effacé, et aussi les renseignements correspondants (tu ne le vois pas ici car les 3 champs verts sont déjà vides, mais si tu y avais déjà saisi quelque chose auparavant, tu verrais que les 3 champs verts sont aussi effacés) ; ne le fais pas, mais si tu appuyais de nouveau sur Échap alors que le champ est vide, ça fermerait le UserForm : retour sur la feuille "Devis" (mébon, tu sais maint'nant qu'il suffit d'faire Ctrl d pour ré-afficher ce UserForm).

sur la feuille "Devis", toutes les cellules de destination pour les renseignements sont vides ; ce sont C2 ; B4 ; C6 ; C7 ; C8 ; B11 ; A14 ; A16 ; A18.

dans la liste Recherche, sélectionne maintenant Piment ➯ en dessous, les champs se remplissent ; clique sur le 1er bouton Valider ➯ ça écrit tous les renseignements sur la feuille de calcul, aux bons endroits.

pour les 3 champs verts, saisis simplement : A ; B ; C ; clique sur le 2ème bouton Valider ➯ ça écrit les 3 champs verts en A14, A16, et A18.


pour la suite, du bouton Estimatif au bouton Ajouter, je n'ai rien besoin de détailler, car tu connais déjà : c'est resté pareil qu'avant ; attention : j'ai fait plein d'modifs dans le code VBA :
VB:
Option Explicit

Private Sub ComboBox1_Change() 'Recherche : item modifié => MAJ des champs
  Dim lig&: lig = ComboBox1.ListIndex
  If lig = -1 Then
    'si on a appuyé sur Échap, on efface les champs
    ComboBox2 = "": NOM = "": ADRESSE = "": ComboBox3.ListIndex = -1: CP = ""
    TextBox2 = "": PriseEnCharge = "": Trajet = "": FinCourse = "": Exit Sub
  End If
  With Worksheets("Client").Cells(lig + 2, 2)
    'on remplit les champs avec les cellules de la feuille "Client"
    ComboBox2 = .Value        'Civilité
    NOM = .Offset(, 1)        'NOM
    ADRESSE = .Offset(, 2)    'ADRESSE
    ComboBox3 = .Offset(, 4)  'VILLE
    TextBox2 = .Offset(, 7)   'Date Évènement
  End With
End Sub

Private Sub ComboBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
  If KeyAscii = 27 Then Unload Me 'Échap sur le champ Recherche
End Sub

Private Sub ComboBox3_Change() 'VILLE modifiée => mise à jour du Code Postal
  If ComboBox3.ListIndex <> -1 Then CP = Format(ComboBox3.Column(1), "00 000")
End Sub

Private Sub CP_Exit(ByVal Cancel As MSForms.ReturnBoolean) 'CP
  If CP <> "" Then CP = Format(CP, "00 000") 'on formate le Code Postal
End Sub

Private Sub TextBox2_DblClick(ByVal Cancel As MSForms.ReturnBoolean) 'Date Évènement
  Calendar.Affiche Me, Me.TextBox1.Name, ActiveControl.Name: Cancel = True
End Sub

Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean) 'Date Évènement
  TextBox2 = Format(TextBox2, "dddd d mmmm yyyy ") 'on formate la Date Évènement
End Sub

Private Sub Valider1_Click() '1er bouton Valider
  Application.ScreenUpdating = 0
  With [Devis!B2]
    If Jour <> "" Then .Offset(, 1) = Jour              'DATE (du jour)
    If TextBox1 <> "" Then .Offset(2) = TextBox1        'N° Devis
    If ComboBox2 <> "" Or NOM <> "" _
      Then .Offset(4, 1) = ComboBox2 & " " & NOM        'Civilité & NOM
    If ADRESSE <> "" Then .Offset(5, 1) = ADRESSE       'ADRESSE
    If CP <> "" Or ComboBox3 <> "" _
      Then .Offset(6, 1) = CP & " " & ComboBox3         'CP & VILLE
    If TextBox2 <> "" Then .Offset(9) = TextBox2        'Date Évènement
  End With
  Application.ScreenUpdating = -1
End Sub

Private Sub Valider2_Click() '2ème bouton Valider
  Application.ScreenUpdating = 0
  With [Devis!A14]
    If PriseEnCharge <> "" Then .Value = PriseEnCharge  'Prise en Charge
    If Trajet <> "" Then .Offset(2) = Trajet            'Trajet
    If FinCourse <> "" Then .Offset(4) = FinCourse      'Fin de Course
  End With
  Application.ScreenUpdating = -1
End Sub

Private Sub Estimatif_Click() 'bouton rouge Estimatif
  Estimatif_Coût.Show 'affiche le UserForm Estimatif
End Sub

Sub MAJ_HT(Q$, s$) 'Mise à jour du Montant HT
  Dim k As Byte: s = Replace$(s, Chr$(160), ""): k = Len(s)
  If Right$(s, 2) = " €" Then k = k - 2: s = Left$(s, k)
  If Q = "" Or k = 0 Then lblHT.Caption = "": Exit Sub
  lblHT.Caption = IIf(Val(Q) = 0 Or Val(s) = 0, _
    0, Format(Q * Val(s), "#,##0 €"))
End Sub

Private Sub Désignation_Change() 'Désignation : item modifié => MAJ PU & HT
  Dim k%: k = Désignation.ListIndex
  lblPU = Format(Round(Val(Replace$([Prestation!B13].Offset(k), _
    ",", ".")), 0), "#,##0 €"): MAJ_HT Qté, lblPU.Caption
End Sub

Private Sub Qté_Exit(ByVal Cancel As MSForms.ReturnBoolean) 'Qté
  MAJ_HT Qté, lblPU.Caption
End Sub

Private Sub Ajouter_Click()
  Application.ScreenUpdating = 0
  With Worksheets("Devis")
    With .ListObjects("ListDevis").ListRows.Add()
      If Désignation.ListIndex > -1 Then .Range(1, 1) = Désignation.Value
      If IsNumeric(Qté.Text) Then .Range(1, 2) = CDbl(Qté.Text)
      If IsNumeric(lblPU.Caption) Then .Range(1, 3) = CDbl(lblPU.Caption)
      If IsNumeric(lblHT.Caption) Then .Range(1, 4) = CDbl(lblHT.Caption)
    End With
  End With
  Application.ScreenUpdating = -1
End Sub

Private Sub ArchiverDevis_Click()
  Dim A
  With Worksheets("Archive Devis").ListObjects(1).ListRows.Add()
    A = Array(TextBox1.Value, Jour.Value, , NOM, ADRESSE, CP & " " & ComboBox3, _
    TextBox1, Désignation, CDbl(Qté.Text), CDbl(lblPU.Caption), _
    Int(CDbl(lblPU.Caption) * CDbl(Qté.Text)), PriseEnCharge, Trajet, FinCourse, "")
    .Range.Resize(, UBound(A) + 1).Value = A
  End With
End Sub

Private Sub Quitter_Click()
  Dim sh As Worksheet: Set sh = Worksheets("Devis")
  With sh.ListObjects("ListDevis")
    If Not .DataBodyRange Is Nothing Then
      If MsgBox("Êtes-vous certain de vouloir vider le tableau ?", _
      vbYesNo, "Demande de confirmation") = vbYes Then
        .DataBodyRange.Delete
        sh.Range("C2, B4, C6, C7, C8, B11, A14, A16, A18") = ""
      End If
    End If
  End With
  Unload Me: Accueil.Show 0
End Sub

Private Sub UserForm_Initialize()
  Dim chn$, lig&, n&: Jour = Format(Date, "dd/mm/yyyy"): lig = 2
  Do
    chn = Worksheets("Client").Cells(lig, 3): If chn = "" Then Exit Do
    ComboBox1.AddItem chn: lig = lig + 1 'liste déroulante Recherche
  Loop
  Désignation.List = Worksheets("Prestation").Range("ListForfaits").Value
  n = Worksheets("Archive Devis").ListObjects("ArchiveDevis").ListRows.Count + 1
  TextBox1 = Year(Date) & "-" & Format(n, "000") 'N° Devis
End Sub

la suite sera de faire ta demande pour le bouton Archiver Devis, mais je la ferai demain ou après-demain, pas aujourd'hui ! comme dit le dicton : « à chaque jour suffit sa peine ! » 😜
soan
 

Pièces jointes

  • Essai CL3.xlsm
    195.9 KB · Affichages: 4
Dernière édition:

974RE

XLDnaute Occasionnel
Bonjour 974RE,

j'ai toujours pas fait le code du bouton Archiver Devis, car j'ai encore fait plein d'autres modifs ! :)

ouvre le nouveau classeur ➯ fenêtre "Menu" ; appuie sur la touche Échap ➯ ce UserForm se ferme, et retour sur la feuille "Devis" ; fais Ctrl m ➯ fenêtre "Menu" ; appuie sur Échap ➯ retour sur la feuille "Devis".

fais Ctrl m ➯ fenêtre "Menu" ; clique sur le bouton Devis ➯ fenêtre "Devis" ; tu peux voir tout de suite ces 4 changements les plus évidents : j'ai remonté les 3 champs verts juste sous la Date Évènement ; il y a un 1er bouton Valider à droite de cette Date Évènement, et un 2ème bouton Valider à gauche du bouton rouge ; note aussi que l'année de la Date est sur 4 chiffres.

clique sur le bouton rouge ➯ fenêtre "Estimatif", et en arrière-plan : feuille "Prestation" ; appuie sur Échap ➯ retour sur la fenêtre "Devis", et en arrière-plan, ça retourne sur la feuille "Devis" ! même si on le voit pas, tu es sur le champ Recherche ; la preuve : appuie sur Échap ➯ retour sur la feuille "Devis".

tu veux revoir la fenêtre "Devis" ? ok, mais cette fois, au lieu de faire Ctrl m puis d'appuyer sur le bouton Devis, fais tout simplement Ctrl d ; c'est quand même plus simple, n'est-ce pas ? ;)


dans la liste Recherche, sélectionne par exemple Lauret ➯ en dessous, les champs se remplissent ; appuie sur Échap ➯ le champ Recherche est effacé, et aussi les renseignements correspondants (tu ne le vois pas ici car les 3 champs verts sont déjà vides, mais si tu y avais déjà saisi quelque chose auparavant, tu verrais que les 3 champs verts sont aussi effacés) ; ne le fais pas, mais si tu appuyais de nouveau sur Échap alors que le champ est vide, ça fermerait le UserForm : retour sur la feuille "Devis" (mébon, tu sais maint'nant qu'il suffit d'faire Ctrl d pour ré-afficher ce UserForm).

sur la feuille "Devis", toutes les cellules de destination pour les renseignements sont vides ; ce sont C2 ; B4 ; C6 ; C7 ; C8 ; B11 ; A14 ; A16 ; A18.

dans la liste Recherche, sélectionne maintenant Piment ➯ en dessous, les champs se remplissent ; clique sur le 1er bouton Valider ➯ ça écrit tous les renseignements sur la feuille de calcul, aux bons endroits.

pour les 3 champs verts, saisis simplement : A ; B ; C ; clique sur le 2ème bouton Valider ➯ ça écrit les 3 champs verts en A14, A16, et A18.


pour la suite, du bouton Estimatif au bouton Ajouter, je n'ai rien besoin de détailler, car tu connais déjà : c'est resté pareil qu'avant ; attention : j'ai fait plein d'modifs dans le code VBA :
VB:
Option Explicit

Private Sub ComboBox1_Change() 'Recherche : item modifié => MAJ des champs
  Dim lig&: lig = ComboBox1.ListIndex
  If lig = -1 Then
    'si on a appuyé sur Échap, on efface les champs
    ComboBox2 = "": NOM = "": ADRESSE = "": ComboBox3.ListIndex = -1: CP = ""
    TextBox2 = "": PriseEnCharge = "": Trajet = "": FinCourse = "": Exit Sub
  End If
  With Worksheets("Client").Cells(lig + 2, 2)
    'on remplit les champs avec les cellules de la feuille "Client"
    ComboBox2 = .Value        'Civilité
    NOM = .Offset(, 1)        'NOM
    ADRESSE = .Offset(, 2)    'ADRESSE
    ComboBox3 = .Offset(, 4)  'VILLE
    TextBox2 = .Offset(, 7)   'Date Évènement
  End With
End Sub

Private Sub ComboBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
  If KeyAscii = 27 Then Unload Me 'Échap sur le champ Recherche
End Sub

Private Sub ComboBox3_Change() 'VILLE modifiée => mise à jour du Code Postal
  If ComboBox3.ListIndex <> -1 Then CP = Format(ComboBox3.Column(1), "00 000")
End Sub

Private Sub CP_Exit(ByVal Cancel As MSForms.ReturnBoolean) 'CP
  If CP <> "" Then CP = Format(CP, "00 000") 'on formate le Code Postal
End Sub

Private Sub TextBox2_DblClick(ByVal Cancel As MSForms.ReturnBoolean) 'Date Évènement
  Calendar.Affiche Me, Me.TextBox1.Name, ActiveControl.Name: Cancel = True
End Sub

Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean) 'Date Évènement
  TextBox2 = Format(TextBox2, "dddd d mmmm yyyy ") 'on formate la Date Évènement
End Sub

Private Sub Valider1_Click() '1er bouton Valider
  Application.ScreenUpdating = 0
  With [Devis!B2]
    If Jour <> "" Then .Offset(, 1) = Jour              'DATE (du jour)
    If TextBox1 <> "" Then .Offset(2) = TextBox1        'N° Devis
    If ComboBox2 <> "" Or NOM <> "" _
      Then .Offset(4, 1) = ComboBox2 & " " & NOM        'Civilité & NOM
    If ADRESSE <> "" Then .Offset(5, 1) = ADRESSE       'ADRESSE
    If CP <> "" Or ComboBox3 <> "" _
      Then .Offset(6, 1) = CP & " " & ComboBox3         'CP & VILLE
    If TextBox2 <> "" Then .Offset(9) = TextBox2        'Date Évènement
  End With
  Application.ScreenUpdating = -1
End Sub

Private Sub Valider2_Click() '2ème bouton Valider
  Application.ScreenUpdating = 0
  With [Devis!A14]
    If PriseEnCharge <> "" Then .Value = PriseEnCharge  'Prise en Charge
    If Trajet <> "" Then .Offset(2) = Trajet            'Trajet
    If FinCourse <> "" Then .Offset(4) = FinCourse      'Fin de Course
  End With
  Application.ScreenUpdating = -1
End Sub

Private Sub Estimatif_Click() 'bouton rouge Estimatif
  Estimatif_Coût.Show 'affiche le UserForm Estimatif
End Sub

Sub MAJ_HT(Q$, s$) 'Mise à jour du Montant HT
  Dim k As Byte: s = Replace$(s, Chr$(160), ""): k = Len(s)
  If Right$(s, 2) = " €" Then k = k - 2: s = Left$(s, k)
  If Q = "" Or k = 0 Then lblHT.Caption = "": Exit Sub
  lblHT.Caption = IIf(Val(Q) = 0 Or Val(s) = 0, _
    0, Format(Q * Val(s), "#,##0 €"))
End Sub

Private Sub Désignation_Change() 'Désignation : item modifié => MAJ PU & HT
  Dim k%: k = Désignation.ListIndex
  lblPU = Format(Round(Val(Replace$([Prestation!B13].Offset(k), _
    ",", ".")), 0), "#,##0 €"): MAJ_HT Qté, lblPU.Caption
End Sub

Private Sub Qté_Exit(ByVal Cancel As MSForms.ReturnBoolean) 'Qté
  MAJ_HT Qté, lblPU.Caption
End Sub

Private Sub Ajouter_Click()
  Application.ScreenUpdating = 0
  With Worksheets("Devis")
    With .ListObjects("ListDevis").ListRows.Add()
      If Désignation.ListIndex > -1 Then .Range(1, 1) = Désignation.Value
      If IsNumeric(Qté.Text) Then .Range(1, 2) = CDbl(Qté.Text)
      If IsNumeric(lblPU.Caption) Then .Range(1, 3) = CDbl(lblPU.Caption)
      If IsNumeric(lblHT.Caption) Then .Range(1, 4) = CDbl(lblHT.Caption)
    End With
  End With
  Application.ScreenUpdating = -1
End Sub

Private Sub ArchiverDevis_Click()
  Dim A
  With Worksheets("Archive Devis").ListObjects(1).ListRows.Add()
    A = Array(TextBox1.Value, Jour.Value, , NOM, ADRESSE, CP & " " & ComboBox3, _
    TextBox1, Désignation, CDbl(Qté.Text), CDbl(lblPU.Caption), _
    Int(CDbl(lblPU.Caption) * CDbl(Qté.Text)), PriseEnCharge, Trajet, FinCourse, "")
    .Range.Resize(, UBound(A) + 1).Value = A
  End With
End Sub

Private Sub Quitter_Click()
  Dim sh As Worksheet: Set sh = Worksheets("Devis")
  With sh.ListObjects("ListDevis")
    If Not .DataBodyRange Is Nothing Then
      If MsgBox("Êtes-vous certain de vouloir vider le tableau ?", _
      vbYesNo, "Demande de confirmation") = vbYes Then
        .DataBodyRange.Delete
        sh.Range("C2, B4, C6, C7, C8, B11, A14, A16, A18") = ""
      End If
    End If
  End With
  Unload Me: Accueil.Show 0
End Sub

Private Sub UserForm_Initialize()
  Dim chn$, lig&, n&: Jour = Format(Date, "dd/mm/yyyy"): lig = 2
  Do
    chn = Worksheets("Client").Cells(lig, 3): If chn = "" Then Exit Do
    ComboBox1.AddItem chn: lig = lig + 1 'liste déroulante Recherche
  Loop
  Désignation.List = Worksheets("Prestation").Range("ListForfaits").Value
  n = Worksheets("Archive Devis").ListObjects("ArchiveDevis").ListRows.Count + 1
  TextBox1 = Year(Date) & "-" & Format(n, "000") 'N° Devis
End Sub
soan
Bonjour Soan, content de te relire. J'ai eu peur que tu m'ais laissé tomber. Promis je ne douterais plus jamais. Surtout après ce post! De mon coté j'ai essayé de résoudre mon problème d'archivage, mais je n'ai pas réussi à obtenir ce que je voulais. Mais avec ton aide, se sera fait. Je regarde tout ça et je reviens vers toi. Merci, merci....
 

soan

XLDnaute Barbatruc
Inactif
Bonjour 974RE,

dans mon post #80, j'ai oublié de te parler de ces quelques infos :

le bouton Ajouter sert pour ajouter une ligne de détail au tableau de la feuille "Devis" ; si par exemple tu dois ajouter 8 lignes de détail, tu vas devoir les ajouter l'une après l'autre, et donc tu auras cliqué sur le bouton Ajouter ; exact, n'est-ce pas ? or au début, c'est ta sub Ajouter_Click() qui écrivait tous les renseignements qui sont au-dessus (de Date à Fin de Course) ! c'est-à-dire que ça les écrivait alors qu'une seule fois aurait suffit !

c'est pour ça que j'ai ajouté un bouton Valider pour les renseignements du dessus : c'est lui qui écrit une seule fois ces infos sur la feuille "Devis" ; puis j'me suis rendu compte que ça n'allait pas avec un seul bouton Valider, car en écrivant les infos des champs verts, on écrivait de nouveau, et inutilement toutes les autres infos !

voilà pourquoi j'ai mis deux boutons Valider : un pour les renseignements situés au-dessus des 3 champs verts, et l'autre pour les 3 champs verts ; de plus, si ces renseignements ont déjà été écrits sur la feuille "Devis", et que tu ouvres le UserForm Devis, comme les champs du UF sont vides, tu peux faire comme avec le UF Estimation : remplir uniquement les champs à modifier et cliquer sur Valider : ça écrira ces seuls champs sans modifier les autres.​



quand j'ai déplacé du code VBA de la sub Ajouter_Click() dans la sub Valider_Click(), j'ai oublié que c'était devenu possible de réunir 2 With dans Ajouter_Click().​

ainsi, ces 2 With imbriqués :

VB:
  With Worksheets("Devis")
    With .ListObjects("ListDevis").ListRows.Add()
    '...
    End With
  End With

sont devenus un seul With :
VB:
  With Worksheets("Devis").ListObjects("ListDevis").ListRows.Add()
    '...
  End With

(au tout début, y'avait des lignes de code VBA qui dépendaient seulement du 1er With, et ça empêchait de réunir les 2 With)

voici la sub actuelle complète :

VB:
Private Sub Ajouter_Click()
  Application.ScreenUpdating = 0
  With Worksheets("Devis").ListObjects("ListDevis").ListRows.Add()
    If Désignation.ListIndex > -1 Then .Range(1, 1) = Désignation.Value
    If IsNumeric(Qté.Text) Then .Range(1, 2) = CDbl(Qté.Text)
    If IsNumeric(lblPU.Caption) Then .Range(1, 3) = CDbl(lblPU.Caption)
    If IsNumeric(lblHT.Caption) Then .Range(1, 4) = CDbl(lblHT.Caption)
  End With
  Application.ScreenUpdating = -1
End Sub

tout ce que j'ai écrit dans la 2ème partie de ce post était avant que je mette 2 boutons Valider, car maintenant, à la place de l'unique sub Valider_Click() il y a ces deux subs : Valider1_Click() et Valider2_Click() :

VB:
Private Sub Valider1_Click() '1er bouton Valider
  Application.ScreenUpdating = 0
  With [Devis!B2]
    If Jour <> "" Then .Offset(, 1) = Jour              'DATE (du jour)
    If TextBox1 <> "" Then .Offset(2) = TextBox1        'N° Devis
    If ComboBox2 <> "" Or NOM <> "" _
      Then .Offset(4, 1) = ComboBox2 & " " & NOM        'Civilité & NOM
    If ADRESSE <> "" Then .Offset(5, 1) = ADRESSE       'ADRESSE
    If CP <> "" Or ComboBox3 <> "" _
      Then .Offset(6, 1) = CP & " " & ComboBox3         'CP & VILLE
    If TextBox2 <> "" Then .Offset(9) = TextBox2        'Date Évènement
  End With
  Application.ScreenUpdating = -1
End Sub

Private Sub Valider2_Click() '2ème bouton Valider
  Application.ScreenUpdating = 0
  With [Devis!A14]
    If PriseEnCharge <> "" Then .Value = PriseEnCharge  'Prise en Charge
    If Trajet <> "" Then .Offset(2) = Trajet            'Trajet
    If FinCourse <> "" Then .Offset(4) = FinCourse      'Fin de Course
  End With
  Application.ScreenUpdating = -1
End Sub

soan
 
Dernière édition:

974RE

XLDnaute Occasionnel
Bonjour 974RE,

dans mon post #80, j'ai oublié de te parler de ces quelques infos :

le bouton Ajouter sert pour ajouter une ligne de détail au tableau de la feuille "Devis" ; si par exemple tu dois ajouter 8 lignes de détail, tu vas devoir les ajouter l'une après l'autre, et donc tu auras cliqué sur le bouton Ajouter ; exact, n'est-ce pas ? or au début, c'est ta sub Ajouter_Click() qui écrivait tous les renseignements qui sont au-dessus (de Date à Fin de Course) ! c'est-à-dire que ça les écrivait alors qu'une seule fois aurait suffit !

c'est pour ça que j'ai ajouté un bouton Valider pour les renseignements du dessus : c'est lui qui écrit une seule fois ces infos sur la feuille "Devis" ; puis j'me suis rendu compte que ça n'allait pas avec un seul bouton Valider, car en écrivant les infos des champs verts, on écrivait de nouveau, et inutilement toutes les autres infos !

voilà pourquoi j'ai mis deux boutons Valider : un pour les renseignements situés au-dessus des 3 champs verts, et l'autre pour les 3 champs verts ; de plus, si ces renseignements ont déjà été écrits sur la feuille "Devis", et que tu ouvres le UserForm Devis, comme les champs du UF sont vides, tu peux faire comme avec le UF Estimation : remplir uniquement les champs à modifier et cliquer sur Valider : ça écrira ces seuls champs sans modifier les autres.​



quand j'ai déplacé du code VBA de la sub Ajouter_Click() dans la sub Valider_Click(), j'ai oublié que c'était devenu possible de réunir 2 With dans Ajouter_Click().​

ainsi, ces 2 With imbriqués :

VB:
  With Worksheets("Devis")
    With .ListObjects("ListDevis").ListRows.Add()
    '...
    End With
  End With

sont devenus un seul With :
VB:
  With Worksheets("Devis").ListObjects("ListDevis").ListRows.Add()
    '...
  End With

(au tout début, y'avait des lignes de code VBA qui dépendaient seulement du 1er With, et ça empêchait de réunir les 2 With)

voici la sub actuelle complète :

VB:
Private Sub Ajouter_Click()
  Application.ScreenUpdating = 0
  With Worksheets("Devis").ListObjects("ListDevis").ListRows.Add()
    If Désignation.ListIndex > -1 Then .Range(1, 1) = Désignation.Value
    If IsNumeric(Qté.Text) Then .Range(1, 2) = CDbl(Qté.Text)
    If IsNumeric(lblPU.Caption) Then .Range(1, 3) = CDbl(lblPU.Caption)
    If IsNumeric(lblHT.Caption) Then .Range(1, 4) = CDbl(lblHT.Caption)
  End With
  Application.ScreenUpdating = -1
End Sub

tout ce que j'ai écrit dans la 2ème partie de ce post était avant que je mette 2 boutons Valider, car maintenant, à la place de l'unique sub Valider_Click() il y a ces deux subs : Valider1_Click() et Valider2_Click() :

VB:
Private Sub Valider1_Click() '1er bouton Valider
  Application.ScreenUpdating = 0
  With [Devis!B2]
    If Jour <> "" Then .Offset(, 1) = Jour              'DATE (du jour)
    If TextBox1 <> "" Then .Offset(2) = TextBox1        'N° Devis
    If ComboBox2 <> "" Or NOM <> "" _
      Then .Offset(4, 1) = ComboBox2 & " " & NOM        'Civilité & NOM
    If ADRESSE <> "" Then .Offset(5, 1) = ADRESSE       'ADRESSE
    If CP <> "" Or ComboBox3 <> "" _
      Then .Offset(6, 1) = CP & " " & ComboBox3         'CP & VILLE
    If TextBox2 <> "" Then .Offset(9) = TextBox2        'Date Évènement
  End With
  Application.ScreenUpdating = -1
End Sub

Private Sub Valider2_Click() '2ème bouton Valider
  Application.ScreenUpdating = 0
  With [Devis!A14]
    If PriseEnCharge <> "" Then .Value = PriseEnCharge  'Prise en Charge
    If Trajet <> "" Then .Offset(2) = Trajet            'Trajet
    If FinCourse <> "" Then .Offset(4) = FinCourse      'Fin de Course
  End With
  Application.ScreenUpdating = -1
End Sub

soan
Bonjour Soan,
Bien matinal dis donc!
J'ai testé tes nouveaux codes, et je pense avoir compris ce que tu me proposais.
Je me demandais le pourquoi des validations. J'ai bien compris, et cela me convient.
J'ai travaillé sur la mise en forme du devis. Je te joint le fichier. Tu pourras voir un exemple concret de ce que je cherche à atteindre comme résultat.
Comme tu le constateras, la prise en charge peut se faire avec deux véhicules, avec chacun un trajet différent, et il peut y avoir une réservation sur deux jours ou plus.
J'ai apporté quelques modifications, notamment sur les textBox Trajet.... (Barre de défilement rajouté, Multiligne activé). J'ai également inséré le Logo dans le devis.
Par contre, un détail que je trouve gênant : Si j'ai validé la première partie du Devis, et que je décide de fermer l'USF sans aller jusqu'au bout, le bouton Quitter ne vide pas le Devis. J'aurais aimé qu'il efface les données de la Feuille Devis.
Comme tu le constateras, il n'archive pas correctement les éléments.
Merci encore Soan.
 

Pièces jointes

  • Essai CL4.xlsm
    289.1 KB · Affichages: 4

soan

XLDnaute Barbatruc
Inactif
@974RE

j'ai bien vu ton post #85, avec ton nouveau fichier. :)

maint'nant, on va s'occuper du bouton Archiver Devis ; je t'entends dire « enfin ! » 😜 😄 tu vois, tu l'as pensé trop fort : j'l'ai entendu même si t'es à plus de 11 000 km d'ici ! 😁 😂 ; bon, j'espère que t'es vraiment en forme, car va y'avoir plein d'boulot ! 😛 ATTENTION : n'ouvre PAS encore le fichier joint ! tu le feras APRÈS avoir lu les 3 points ci-dessous ! c'est juste pour que tu sois bien synchronisé avec la démo que je vais te proposer.


1) ton code VBA initial n'est pas terrible, car il cherche à écrire les infos à partir des contrôles du UF Devis ; et comme tu saisis les lignes de détail l'une après l'autre, ça signifie que t'es obligé d'archiver les lignes de détail de la même façon : l'une après l'autre aussi ! alors que c'est beaucoup plus simple d'archiver le devis à partir des infos qui ont été écrites sur la feuille "Devis" !

2) comme ta feuille "Archive Devis" ne sert pas pour y faire de la saisie mais juste pour ajouter de nouvelles données au fur et à mesure des devis à archiver, j'ai préféré convertir en plage normale ton tableau structuré "ArchiveDevis" ; donc il n'existe plus, mais bien sûr, les données sont toujours là ! 🙂

3) ta feuille "Archive Devis" comporte un gros problème structurel ! en effet, tu veux y écrire toutes les lignes de détail, de la Désignation au Montant HT (colonnes H à K) ; donc s'il y a par exemple 8 lignes de détail, tu vas avoir 8 lignes en plus, n'est-ce pas ? et pour ces 8 lignes de détail tu veux répéter toutes les autres infos de la ligne ? ça n'est pas bon ! c'est pour éviter ça qu'il faut utiliser 2 feuilles de calcul : la 2ème feuille pour les lignes de détail, et la 1ère feuille pour les autres infos ; cependant, afin de savoir à quel devis correspondent les lignes de détail de la 2ème feuille, il faut absolument répéter l'info N° Devis, qu'on place en 1ère colonne pour voir de suite ce renseignement essentiel !


ouvre le fichier joint ➯ fenêtre "Menu" ; appuie sur Échap ➯ le UF se ferme ; tu es sur la feuille "A.DV" : c'est la 1ère feuille Archive DeVis ; regarde les 11 colonnes A à K ; il y a les 3 lignes 2 à 4, car 3 devis ont déjà été archivés : DEV2021-001 ; DEV2021-002 ; DEV2021-003 ; quand plus tard on archivera le 4ème devis, tu pourras voir que ça va ajouter une seule ligne, en ligne 5, quelque soit le nombre de lignes de détail de ce 4ème devis.

va sur la feuille "A.LD" ; c'est la 2ème feuille Archive Devis, pour les Lignes de Détail ; regarde les 5 colonnes A à E ; il y a les 3 lignes 2 à 4, car chacun des 3 devis qui ont déjà été archivés n'avaient qu'une seule ligne de détail ; pour le futur 4ème devis, qui aura 4 lignes de détail, tu pourras voir que ça va ajouter 4 lignes, des lignes 5 à 8.

va sur la feuille "Devis" ; tu peux voir en C4 que le N° Devis est : DEV2021-004 ; fais défiler vers le bas pour voir le tableau du devis ; note que j'ai ajouté 2 lignes, juste pour que la démo sois plus convaincante. 😜

note aussi que j'ai ajouté une remise de 10% ; c'est normal : tu sais bien que j't'achète aucune prestation si tu m'fais pas une remise d'au moins 10% ! c'est qu'je suis un client très difficile, moi ! et sans cette remise, j'risque bien d'aller voir ce que propose la concurrence ! 😁

le 4ème devis est donc déjà rempli, avec ses 4 lignes de détail ; fais Ctrl d ; comme le devis est déjà correct sur la feuille "Devis", ne saisis rien et clique sur le bouton Arlésienne ; oui, c'est bien ça, c'est celui qui s'est tant fait attendre : le bouton Archiver Devis ➯ message :

« Le devis DEV2021-004 a été archivé. » : un miracle s'est accompli, en ce jour de l'an de grâce 2021, et ça malgré la pandémie ! 😇 🥳

oui bon, je sais, t'es pas obligé d'me croire sur parole, hein ? 🤪 alors je te laisse aller vérifier : appuie sur Échap pour sortir du message ; clique sur la croix blanche sur fond rouge du coin haut droit du UF pour le fermer (n'utilise pas le bouton Quitter, car ça permet d'éviter la question « Êtes-vous certain de vouloir vider le Devis ? ») ; va sur la feuille "A.DV" ; regarde la nouvelle ligne 5 (pour le devis DEV2021-004) ; va sur la feuille "A.LD" ; regarde les 4 nouvelles ligne 5 à 8 (pour le devis DEV2021-004) ; c'est ok : ton archivage est fait ! 😊 attends, c'est pas fini : va sur la feuille "Devis" ; fais Ctrl d ; et que vois-tu dans la petite case à gauche de celle de la date ? ça s'rait pas ça, ton N° de devis qui s'incrémente automatiquement ? oui, hein ? qui c'est qui est super content, et qui va pouvoir aller fêter ça ? 🥳 🥳 🥳

soan
 

Pièces jointes

  • Essai CL4.xlsm
    323.8 KB · Affichages: 6

974RE

XLDnaute Occasionnel
@974RE

j'ai bien vu ton post #85, avec ton nouveau fichier. :)

maint'nant, on va s'occuper du bouton Archiver Devis ; je t'entends dire « enfin ! » 😜 😄 tu vois, tu l'as pensé trop fort : j'l'ai entendu même si t'es à plus de 11 000 km d'ici ! 😁 😂 ; bon, j'espère que t'es vraiment en forme, car va y'avoir plein d'boulot ! 😛 ATTENTION : n'ouvre PAS encore le fichier joint ! tu le feras APRÈS avoir lu les 3 points ci-dessous ! c'est juste pour que tu sois bien synchronisé avec la démo que je vais te proposer.


1) ton code VBA initial n'est pas terrible, car il cherche à écrire les infos à partir des contrôles du UF Devis ; et comme tu saisis les lignes de détail l'une après l'autre, ça signifie que t'es obligé d'archiver les lignes de détail de la même façon : l'une après l'autre aussi ! alors que c'est beaucoup plus simple d'archiver le devis à partir des infos qui ont été écrites sur la feuille "Devis" !

2) comme ta feuille "Archive Devis" ne sert pas pour y faire de la saisie mais juste pour ajouter de nouvelles données au fur et à mesure des devis à archiver, j'ai préféré convertir en plage normale ton tableau structuré "ArchiveDevis" ; donc il n'existe plus, mais bien sûr, les données sont toujours là ! 🙂

3) ta feuille "Archive Devis" comporte un gros problème structurel ! en effet, tu veux y écrire toutes les lignes de détail, de la Désignation au Montant HT (colonnes H à K) ; donc s'il y a par exemple 8 lignes de détail, tu vas avoir 8 lignes en plus, n'est-ce pas ? et pour ces 8 lignes de détail tu veux répéter toutes les autres infos de la ligne ? ça n'est pas bon ! c'est pour éviter ça qu'il faut utiliser 2 feuilles de calcul : la 2ème feuille pour les lignes de détail, et la 1ère feuille pour les autres infos ; cependant, afin de savoir à quel devis correspondent les lignes de détail de la 2ème feuille, il faut absolument répéter l'info N° Devis, qu'on place en 1ère colonne pour voir de suite ce renseignement essentiel !


ouvre le fichier joint ➯ fenêtre "Menu" ; appuie sur Échap ➯ le UF se ferme ; tu es sur la feuille "A.DV" : c'est la 1ère feuille Archive DeVis ; regarde les 11 colonnes A à K ; il y a les 3 lignes 2 à 4, car 3 devis ont déjà été archivés : DEV2021-001 ; DEV2021-002 ; DEV2021-003 ; quand plus tard on archivera le 4ème devis, tu pourras voir que ça va ajouter une seule ligne, en ligne 5, quelque soit le nombre de lignes de détail de ce 4ème devis.

va sur la feuille "A.LD" ; c'est la 2ème feuille Archive Devis, pour les Lignes de Détail ; regarde les 5 colonnes A à E ; il y a les 3 lignes 2 à 4, car chacun des 3 devis qui ont déjà été archivés n'avaient qu'une seule ligne de détail ; pour le futur 4ème devis, qui aura 4 lignes de détail, tu pourras voir que ça va ajouter 4 lignes, des lignes 5 à 8.

va sur la feuille "Devis" ; tu peux voir en C4 que le N° Devis est : DEV2021-004 ; fais défiler vers le bas pour voir le tableau du devis ; note que j'ai ajouté 2 lignes, juste pour que la démo sois plus convaincante. 😜

note aussi que j'ai ajouté une remise de 10% ; c'est normal : tu sais bien que j't'achète aucune prestation si tu m'fais pas une remise d'au moins 10% ! c'est qu'je suis un client très difficile, moi ! et sans cette remise, j'risque bien d'aller voir ce que propose la concurrence ! 😁

le 4ème devis est donc déjà rempli, avec ses 4 lignes de détail ; fais Ctrl d ; comme le devis est déjà correct sur la feuille "Devis", ne saisis rien et clique sur le bouton Arlésienne ; oui, c'est bien ça, c'est celui qui s'est tant fait attendre : le bouton Archiver Devis ➯ message :

« Le devis DEV2021-004 a été archivé. » : un miracle s'est accompli, en ce jour de l'an de grâce 2021, et ça malgré la pandémie ! 😇 🥳

oui bon, je sais, t'es pas obligé d'me croire sur parole, hein ? 🤪 alors je te laisse aller vérifier : appuie sur Échap pour sortir du message ; clique sur la croix blanche sur fond rouge du coin haut droit du UF pour le fermer (n'utilise pas le bouton Quitter, car ça permet d'éviter la question « Êtes-vous certain de vouloir vider le Devis ? ») ; va sur la feuille "A.DV" ; regarde la nouvelle ligne 5 (pour le devis DEV2021-004) ; va sur la feuille "A.LD" ; regarde les 4 nouvelles ligne 5 à 8 (pour le devis DEV2021-004) ; c'est ok : ton archivage est fait ! 😊 attends, c'est pas fini : va sur la feuille "Devis" ; fais Ctrl d ; et que vois-tu dans la petite case à gauche de celle de la date ? ça s'rait pas ça, ton N° de devis qui s'incrémente automatiquement ? oui, hein ? qui c'est qui est super content, et qui va pouvoir aller fêter ça ? 🥳 🥳 🥳

soan
Bonsoir Soan,
Avant toute chose je tiens profondément à te remercier pour l'aide que tu m'apportes.
Celui qui est super content c'est moi.🥳🥳🥳🥳🥳 Superbe travail. Avec tes explications, je comprends la trame qui sous-tend ta réflexion. Effectivement, je n'étais pas sur les bon rails (Archiver ce qui était sur l'USF alors que se sont les données sur la feuille Devis qu'il fallait archiver). Juste un détail la remise est comprise dans le PU. Rappelle-toi l'USF Estimatif. Mais ta remarque pleine d'humour a attirée mon attention: le client à besoin de voir qu'on lui a fait une remise. Je réfléchis à faire apparaître la remise sur le Devis. J'ai ma petite idée que je creuserais demain. Trop fatigué ce soir. Après mon opération j'ai besoin de récupérer.
Encore une fois beau boulot et merci milles fois de t'investir avec moi dans ce projet. Cette affaire m'a permis de rencontrer une très belle personne, et, au delà de l'aide que tu m'apporte, je suis très heureux de cette rencontre à 11 000km de chez moi. J'espère juste qu'un jour on puisse réduire cette distance à quelques mètres. Tu sera le bienvenu, et je ne faillirais pas à la réputation de mon île: "La Réunion terre d'accueil".
Je te souhaite une bonne soirée. A plus!👍
 

974RE

XLDnaute Occasionnel
Bonjour Soan,
Je reviens vers toi pour un nouveau problème. Maintenant que le Devis fonctionne bien, je voudrais l'éditer en format PDF et le stocker dans un fichier. J'ai essayé en m'appuyant sur des codes que j'ai trouvé sur internet, mais je n'y arrive pas.
Un coup pouce s'il te plaît.
Merci à bientôt.
 

974RE

XLDnaute Occasionnel
Bonjour Soan,
Je reviens vers toi pour un nouveau problème. Maintenant que le Devis fonctionne bien, je voudrais l'éditer en format PDF et le stocker dans un fichier. J'ai essayé en m'appuyant sur des codes que j'ai trouvé sur internet, mais je n'y arrive pas.
Un coup pouce s'il te plaît.
Merci à bientôt.
Bonsoir Soan, ça y est, j'arrive à générer un PDF à partir de ma feuille Devis. Par contre, je voudrais que le PDF prenne le nom du numéro du Devis et du Nom du Client: "DEV2021-004 Mme Piment".
La facilité voudrais que je modifie manuellement le nom du PDF généré après qu'il soit archivé dans le dossier, mais j'aimerais assez qu'il le fasse automatiquement après avoir cliqué sur le bouton Archiver PDF que j'ai rajouter sur l'USF Devis.
C'est faisable çà? Aurais-tu une solution?
Dans l'attente, Merci beaucoup.
 

Pièces jointes

  • Essai CL4 (2).xlsm
    298.6 KB · Affichages: 5

Discussions similaires

Réponses
12
Affichages
307

Statistiques des forums

Discussions
312 321
Messages
2 087 264
Membres
103 498
dernier inscrit
FAHDE