Intégration de l'userform dans un facturier automatique

bonjour à tous .

j'ai envie d'incorporer mon userform dans mon facturier, de sorte qu'il s'ouvre ou pas en fonction de sheets("F").range("C10"). value,

29user-form.xlsm (32.69 Ko)

si cela est réalisable et sauvegarde les textbox dans sheets ("achat") et se réinitialise juste après . Merci d'avance pour votre aimable collaboration .

range("C10") est une liste déroulante de 2 choix possible.

voici mon petit bout de code que j'ai pû rédiger . Je reste entièrement à votre disposition pour d'éventuelles informations

si quelq'un aurait une autre idée pour solutionner mon problème ça me fera un plus grand bien .

cordialement

Bonjour

de sorte qu'il s'ouvre ou pas en fonction de sheets("F").range("C10"). value,

Vous avez deux valeurs dans cette liste. L'userform doit s'ouvrir sur quelle valeur ? Lu ou Non Lu ?

Re

Merci pour votre prompt réaction .

Pour "lu"

Cordialement

Le macro du bouton Command_click doit rester ?

Non non ouverture uniquement en fonction de ("C10").

Pour l'ouverture de l'userform, allez dans la feuille F, remplacez le code Commandbutton_click par celui ci-dessous

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("C10")) Is Nothing Then
    If UCase(Target.Value) = "LU" Then UserForm1.Show
End If
End Sub

Faites un test

Pour la feuille Achat, dans votre vrai fichier vous êtes en tableau structuré ou comme dans votre fichier posté

Edit : dans la définition de votre liste de validation, mettez cette formule plutot --> =DECALER(Ref!$N$1;;;NBVAL(Ref!$N:$N))

merci grandement dès que je teste celà je reviens vous retournez le résultat .

Stp je n'ai pas bien saisie la définition de la formule .

cordialement

Re

comment faire pour réinitialiser et fermer l'userform directement après vérification et validation des différents textbox ? Mes textbox sont soit les string ou les intéger

merci d'avance.

Cordialement

Stp je n'ai pas bien saisie la définition de la formule.

La liste de validation ne prendra en compte que les valeurs que vous avez mises (ici lu et non lu) et vous évite d'avoir des vides dans votre liste. Si vous ajoutez une valeur, la liste la prendra automatiquement et ne vous permettra que le choix de ces valeurs

comment faire pour réinitialiser et fermer l'userform directement après vérification et validation des différents textbox ? Mes textbox sont soit les string ou les intéger

Répondez d'abord à ma question posée que je sache le code qu'il vous faut

Au fait même sujet qu'ici non ? https://forum.excel-pratique.com/excel/automatisation-sauvegarde-d-un-facturier-152504

Bonsoir

Comme vous n'avez pas encore répondre à la question que j'ai posée dans mon post précédent, voici toujours un code que vous pouvez utiliser et qui videra les textbox après avoir complété votre feuille achat

Private Sub CommandButton1_Click()
Dim ligne As Integer
Dim i as byte

With Sheets("achat")
    ligne = .Range("A" & .Rows.Count).End(xlUp).Row + 1
    For i = 1 To 8
        .Cells(ligne, i).Value = Controls("Textbox" & i).Value
        Controls("Textbox" & i) = ""
    Next
End With

If MsgBox("Souhaitez-vous enregistrer un autre article ?", vbYesNo + vbDefaultButton2, "Enregistrer article") = vbYes Then
Else: Unload UserForm1
End If
End Sub

Le code est à placer dans l'userform. Il remplace le code Private Sub CommandButton1_click que vous avez dans votre fichier

Cordialement

Re

merci Dan ton code est impeccable ça fonctionne bien à un détail. Le soucis est qu'on peut fermer l'userform sans y saisie les textbox et la procédure continue normalement . Ce qui est un peu embêtant .tu n'aurais pas une idée pour palier à ce cas présent ? Merci d'avance

cordialemnt

j'avais oublié un détail capital . Comment faire pour texter tous les 8 textbox comme suit:

textbox 1,7 et 8 doivent être des strings et les 5 restants les integers . Merci d'avance c'est un plaisir immense d'être sûr et certain que je serai solutionné .

cordialement

Le soucis est qu'on peut fermer l'userform sans y saisie les textbox et la procédure continue normalement . Ce qui est un peu embêtant .tu n'aurais pas une idée pour palier à ce cas présent ?

Pas sur, mais vous voulez ne pas pouvoir compléter la feuille achat si toutes les textbox ne sont pas remplies ?

Re Dan j'aimerai que la saisie de tous les 8 textbox soit obligatoire avant l'affection des données. Merci

Amicalement

Dans l'userform, remplacez le code que je vous ai donné par celui ci-dessous

Private Sub CommandButton1_Click()
Dim ligne As Integer
Dim i As Byte

For i = 1 To 8
    If Controls("Textbox" & i) = "" Then
        MsgBox "Champ " & Controls("Label" & i) & " Obligatoire", , "Alerte"
        Controls("Textbox" & i).SetFocus
        Exit Sub
    End If
Next i

With Sheets("achat")
    ligne = .Range("A" & .Rows.Count).End(xlUp).Row + 1
    .Range("A" & ligne) = TextBox1.Value 'Article
    .Range("B" & ligne) = CCur(TextBox2.Value) 'prix achat
    .Range("C" & ligne) = CCur(TextBox3.Value) 'transport
    .Range("D" & ligne) = CCur(TextBox4.Value) 'douane
    .Range("E" & ligne) = CDate(TextBox5.Value) 'date achat
    .Range("F" & ligne) = CDate(TextBox6.Value) 'date livraison
    .Range("G" & ligne) = TextBox7.Value 'fournisseur
    .Range("H" & ligne) = TextBox8.Value 'pays
End With

Call Reset

If MsgBox("Souhaitez-vous enregistrer un autre article ?", vbYesNo + vbDefaultButton2, "Enregistrer article") = vbYes Then
Else: Unload UserForm1
End If
End Sub

- Toujours dans l'userform, rajouter celui ci-dessous pour vider l'userform

Sub Reset()
Dim i As Byte
For i = 1 To 8
    Controls("Textbox" & i) = ""
Next i
End Sub

Cordialement

Impeccable Dan merci infiniment

Amicalement

Cordialement

Re

lors de l'exécution de ma macro plusieurs feuilles et classeur défilent à l'écran , côté esthétique c'est un peu nul . J'ai opté pour l'utilisation de:

Application.ScreenUpdating = False

Mais ça ne change pas . Que faire svp ?

cordialement

Bonjour

lors de l'exécution de ma macro plusieurs feuilles et classeur défilent à l'écran , côté esthétique c'est un peu nul .

Je ne vois pas de quoi vous parlez et ce n'est pas le code qui vous pose ce souci, Il n'y a que la feuille achat concernée. A moins que votre fichier posté ne soit pas le vrai fichier ??

Expliquez moi ce que vous faites.

Re

Mon code gère 2 classeurs et 5 feuilles .

Merci mais cela ne m'aide pas à comprendre et je ne peux vous aider sans voir vos vrais fichiers ou les codes que vous utilisez

Rechercher des sujets similaires à "integration userform facturier automatique"