XL 2013 Automatisation, introduction d'un userform sauvegarde et réinitialisation d'un facturier

La flamme

XLDnaute Junior
Bonjour à tous, c'est un réel plaisir de savoir que beaucoup prendront un de leur précieux temps pour se pencher sur mes multiple problèmes ; pour cela je vous remercie grandement .

Mes problèmes sont :

-obliger l'utilisateur à choisir la valeur de C10 si telle n'est pas le cas

-faire apparaître l'userform si valeur c10 = non lu

-enregistrer et fermer automatiquement l'userform

-sauvegarder le nom du client, le montant, les taxes sur une feuille

-copier la facture sur un autre classeur

-réinitialiser la facture

Le tout accessible depuis le bouton SAVE.

je vous joind mes fichiers pour que vous puissez bien vous imprégner de la situation

Sur chaque code j'ai pris la peine de préciser la demarche à suivre.

Amicalement

Cordialement
 

Pièces jointes

  • Electronald.xlsm.xlsm
    59.2 KB · Affichages: 28
  • sauvegarde.xlsm.xlsm
    7.5 KB · Affichages: 7

La flamme

XLDnaute Junior
Re


J'aimeraiai que mon user form s'ouvre plutôt avec la valeur de la cellule C10 qui est une liste déroulante, une fois remplie avec un click sur ok les données s'enregistrent automatiquement sur la feuille achat et l'userform se referme automatiquement. Merci d'avance mon est encore bien amateurs heureusement que vous êtes là





Cordialement
 

Pièces jointes

  • USER FORM.xlsm
    32.8 KB · Affichages: 11

Robert

XLDnaute Barbatruc
Repose en paix
Re,

Je viens enfin de comprendre, enfin une partie seulement...
Dans la macro Copiefacture j'ai rajouté la partie entre les astérisques :

Code:
Sub copiefacture()
Dim WKBK1 As Workbook
Dim WKBK2 As Workbook
Dim CHEMINWKBK2 As String

Range("invoice").Value = Range("F").Value
Set WKBK1 = ThisWorkbook
'***********************************************'
Select Case WKBK1.Sheets("F").Range("C10").Value
    Case ""
        MsgBox "vous devez renseigner C10 !"
        WKBK1.Sheets("F").Range("C10").Select
        Exit Sub
    Case "lu"
        'je ne sais pas
    Case "non lu"
        UserForm1.Show
End Select
'***********************************************'
CHEMINWKBK2 = ThisWorkbook.Path & "/" & "sauvegarde" & ".xlsm"
'ceci m'affiche chemin pas disponible qu'il est soit suprimer ou renommer
Workbooks.Open CHEMINWKBK2
Set WKBK2 = ActiveWorkbook
WKBK1.Sheets("invoice").Copy after:=WKBK2.Sheets(Sheets.Count)
ActiveSheet.Name = WKBK1.Sheets("F").Range("A5").Value
MsgBox "votre copie a été crée avec succès" & Chr(10) & "cliquez sur ok pour fermer le classeur ", vbOKOnly + vbInformation, "opération réussie"
WKBK2.Close True
End Sub

Puis dans le composant Feuil11(F) l'événementielle Change ci-dessous :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$C$10" Then Exit Sub
If Target.Value = "non lu" Then UserForm1.Show
End Sub
 

Robert

XLDnaute Barbatruc
Repose en paix
Re,

Dans L'Userform1, attribue à la propriété Tag de chaque textbox la valeur de la colonne qui lui correspond :
la propriété Tag de la TextBox1 sera : A
la propriété Tag de la TextBox2 sera : B, etc.
ensuite remplace le code du bouton par :

VB:
Private Sub CommandButton1_Click()
Dim OA As Worksheet
Dim LI As Integer
Dim CTRL As Control

Set OA = Worksheets("achat")
LI = OA.Cells(Application.Rows.Count, "A").End(xlUp).Row + 1
For Each CTRL In Me.Controls
    If CTRL.Tag <> "" Then OA.Cells(LI, CTRL.Tag).Value = CTRL.Value
Next CTRL
If MsgBox("Souhaitez-vous enregistrer un autre agent?", vbYesNo) = vbYes Then
    For Each CTRL In Me.Controls
        If CTRL.Tag <> "" Then CTRL.Value = ""
    Next CTRL
Me.TextBox1.SetFocus
Else
    Unload Me
End If
End Sub
 

Robert

XLDnaute Barbatruc
Repose en paix
Re,

Si ça ne marche pas c'est parce qu'il te manque une référence !... Dans VBE (Visual Basic Editor)
[Alt]+[F11]. Menu Outil / Références... coche la case : MicrosortForms 2.0 Object Library puis valide avec le bouton OK.
 

La flamme

XLDnaute Junior
Re,

Dans L'Userform1, attribue à la propriété Tag de chaque textbox la valeur de la colonne qui lui correspond :
la propriété Tag de la TextBox1 sera : A
la propriété Tag de la TextBox2 sera : B, etc.
ensuite remplace le code du bouton par :

VB:
Private Sub CommandButton1_Click()
Dim OA As Worksheet
Dim LI As Integer
Dim CTRL As Control

Set OA = Worksheets("achat")
LI = OA.Cells(Application.Rows.Count, "A").End(xlUp).Row + 1
For Each CTRL In Me.Controls
    If CTRL.Tag <> "" Then OA.Cells(LI, CTRL.Tag).Value = CTRL.Value
Next CTRL
If MsgBox("Souhaitez-vous enregistrer un autre agent?", vbYesNo) = vbYes Then
    For Each CTRL In Me.Controls
        If CTRL.Tag <> "" Then CTRL.Value = ""
    Next CTRL
Me.TextBox1.SetFocus
Else
    Unload Me
End If
End Sub
Re

Au niveau de:
Me.textBox1.setFocus il apparaît erreur de compilation
Membre de méthode ou de données introuvable
 

Robert

XLDnaute Barbatruc
Repose en paix
Re,

Hé ho La Flemme !... On va pas se faire toutes les lignes une par une !?... Je me suis basé sur ton premier fichier Electronal.xlsm.xlsm. Si tu as changé les noms des onglets il faut adapter le code de la macro... Si tu n'as aucune connaissance en VBA tu peux le dire sans honte. On n'est pas là pour juger et on est tous passé par là. Mais quand je vois la complexité des autres macros, je ne comprends pas que tu poses ce genre de question...
 

Statistiques des forums

Discussions
312 305
Messages
2 087 084
Membres
103 459
dernier inscrit
Arnocal