Formulaire - Formule pour envoyer les données dans un tab

Bonjour,

J'ai réussi à créer un formulaire permettant d'envoyer les données dans un tableau.

Enfin j'avais réussi jusqu'au moment où j'ai décidé de désactiver la touche validation (commandbutton) nommé cmd_valider-click, tant que certains Textbox n'étaient pas rempli.

Donc voici dans un premier temps ma formule pour envoyer les données :

Private Sub Cmd_Valider_Click()
Dim derlinge As Integer, ln

    With Sheets("données")
        For ln = 2 To .Range("B" & Rows.Count).End(xlUp).Row
            If Worksheets("données").Range("B" & ln) = TextBox2 And Worksheets("données").Range("D" & ln) = TextBox4 Then
                MsgBox "La fiche de " & TextBox2 & " " & TextBox4 & " existe déjà." & Chr(13) & "Vous ne pouvez que la modifier.", 16
                Exit Sub
            End If

        Next ln

        If MsgBox("confirmez-vous l'ajout des données?", vbYesNo, "confirmation") = vbYes Then
            derligne = Worksheets("données").Range("B" & Rows.Count).End(xlUp).Row + 1
            For I = 1 To 26
                Worksheets("données").Cells(derligne, I) = Controls("TextBox" & I).Value
            Next I
        End If
    End With
End Sub

et voici la formule que j'ai décidé d'ajouter pour désactiver le bouton :

''''''''''''''''''''''
'Permet de désactiviter la touche de validation si les
'cases ne sont pas remplies
''''''''''''''''''''''

Sub boutonActif()
Dim i%
For i = 2 To 7
    If Controls("textbox" & i).Value = "" Then
        Cmd_Valider.Enabled = False
        Exit Sub
    End If

Next i
Cmd_Valider.Enabled = True

End Sub

Private Sub Textbox2_afterUpdate() 'en lien avec la formule du dessus pour activer les bouton validation
    boutonActif
End Sub
Private Sub textbox3_afterupdate()
    boutonActif
End Sub
Private Sub textbox4_afterUpdate()
    boutonActif
End Sub
Private Sub textbox5_afterUpdate()
    boutonActif
End Sub
Private Sub textbox6_afterupdate()
    boutonActif
End Sub
Private Sub textbox7_afterupdate()
    boutonActif
End Sub
Private Sub CommandButton3_Click()
    Unload UserForm1
End Sub

je dois renommer quelque chose ?

Je ne sais pas comment faire.

Merci

François

Bonjour,

Pour moi il manque juste le code à l'ouverture de l'USF

Private Sub UserForm_Initialize()
  boutonActif
End Sub

Mais tu ne nous dit pas quel est le problème rencontré

Bonjour,

Mon problème c'est que ma formule ne fonctionne plus (celle qui doit envoyer les données dans mon onglet "données").

et je ne sais pas pourquoi.

Mais depuis que j'ai ajouté des fonctions ça bug : (création d'un bouton "effacer" / désactivation des bouton "Créer" et "modifier" si certains textbox ou combobox ne sont pas remplis.

je suis dingue je pensais avoir presque fini mais maintenant c'est ma formule de base qui bug !!!!!

voici l'ensemble de mon codage :

Private O As Worksheet
Private DL As Long
Private TV As Variant
Private no_ligne As Long
Option Compare Text
Dim f, ligne

Private Sub UserForm_Initialize()
Dim D As Object
Dim I As Long

Set O = Worksheets("données")
DL = O.Cells(Application.Rows.Count, "A").End(xlUp).Row
TV = O.Range("A1:Z" & DL)
Set D = CreateObject("Scripting.Dictionary")
For I = 5 To DL
    D(TV(I, 6)) = ""
Next I
Me.ComboBox1.List = D.keys
End Sub
Private Sub ComboBox1_Change()
Dim D As Object
Dim I As Long

Set D = CreateObject("Scripting.Dictionary")
For I = 4 To DL
    If CStr(TV(I, 6)) = Me.ComboBox1.Value Then D(TV(I, 4)) = ""
Next I
Me.ComboBox2.List = D.keys
End Sub
Private Sub ComboBox2_Change()
Dim D As Object
Dim I As Long

Set D = CreateObject("Scripting.Dictionary")
For I = 4 To DL
    If CStr(TV(I, 6)) = Me.ComboBox1.Value And CStr(TV(I, 4)) = Me.ComboBox2.Value Then D(TV(I, 2)) = ""
Next I
Me.ComboBox3.List = D.keys
End Sub
Private Sub ComboBox3_Change()
If Me.ComboBox1.Value = "" Or Me.ComboBox2.Value = "" Then Exit Sub
For I = 4 To DL
If CStr(TV(I, 6)) = Me.ComboBox1.Value And CStr(TV(I, 4)) = Me.ComboBox2.Value And CStr(TV(I, 2)) = Me.ComboBox3.Value Then
    no_ligne = I
    Me.TextBox2.Value = Me.ComboBox3.Value
    Me.TextBox3.Value = Worksheets("données").Cells(no_ligne, 3)
    Me.TextBox4.Value = Worksheets("données").Cells(no_ligne, 4)
    Me.TextBox5.Value = Worksheets("données").Cells(no_ligne, 5)
    Me.TextBox6.Value = Worksheets("données").Cells(no_ligne, 6)
    Me.TextBox7.Value = Worksheets("données").Cells(no_ligne, 7)
    Me.TextBox8.Value = Worksheets("données").Cells(no_ligne, 8)
    Me.TextBox9.Value = Worksheets("données").Cells(no_ligne, 9)
    Me.TextBox10.Value = Worksheets("données").Cells(no_ligne, 10)
    Me.TextBox11.Value = Worksheets("données").Cells(no_ligne, 11)
    Me.TextBox12.Value = Worksheets("données").Cells(no_ligne, 12)
    Me.TextBox13.Value = Worksheets("données").Cells(no_ligne, 13)
    Me.TextBox14.Value = Worksheets("données").Cells(no_ligne, 14)
    Me.TextBox15.Value = Worksheets("données").Cells(no_ligne, 15)
    Me.TextBox16.Value = Worksheets("données").Cells(no_ligne, 16)
    Me.TextBox17.Value = Worksheets("données").Cells(no_ligne, 17)
    Me.TextBox18.Value = Worksheets("données").Cells(no_ligne, 18)
    Me.TextBox19.Value = Worksheets("données").Cells(no_ligne, 19)
    Me.TextBox20.Value = Worksheets("données").Cells(no_ligne, 20)
    Me.TextBox21.Value = Worksheets("données").Cells(no_ligne, 21)
    Me.TextBox22.Value = Worksheets("données").Cells(no_ligne, 22)
    Me.TextBox23.Value = Worksheets("données").Cells(no_ligne, 23)
    Me.TextBox24.Value = Worksheets("données").Cells(no_ligne, 24)
    Me.TextBox25.Value = Worksheets("données").Cells(no_ligne, 25)
    Me.TextBox26.Value = Worksheets("données").Cells(no_ligne, 26)
    Exit For
End If
Next I
End Sub
Private Sub Cmd_quitter_Click()
    Unload Me
End Sub

'Private Sub CommandButton1_Click()
'Dim no_ligne As Integer
'no_ligne = ComboBox1.ListIndex + 2
'End Sub

Private Sub Cmd_Valider_Click()
Dim derlinge As Integer, ln

    With Sheets("données")
        For ln = 2 To .Range("B" & Rows.Count).End(xlUp).Row
            If Worksheets("données").Range("B" & ln) = TextBox2 And Worksheets("données").Range("D" & ln) = TextBox4 Then
                MsgBox "La fiche de " & TextBox2 & " " & TextBox4 & " existe déjà." & Chr(13) & "Vous ne pouvez que la modifier.", 16
                Exit Sub
            End If

        Next ln

        If MsgBox("confirmez-vous l'ajout des données?", vbYesNo, "confirmation") = vbYes Then
            derligne = Worksheets("données").Range("B" & Rows.Count).End(xlUp).Row + 1
            For I = 1 To 26
                Worksheets("données").Cells(derligne, I) = Controls("TextBox" & I).Value
            Next I
        End If
    End With
End Sub
Private Sub CommandButton3_Click()
    Unload UserForm1
End Sub
Private Sub Cmd_Modifier_Click()
    flag = 1
    With Worksheets("données")
        ln = Worksheets("données").Range("F4:F" & .Range("F" & Rows.Count).End(xlUp).Row).Find(ComboBox1, lookat:=xlWhole).Row
        For I = 1 To 26
           Worksheets("données").Cells(ln, I) = Controls("TextBox" & I).Value
            Controls("TextBox" & I).Value = ""
        Next I
        ComboBox1.ListIndex = -1
    End With
    MsgBox "La modification a été prise en compte."
End Sub
'Private Sub Cmd_Modifier_Click()
  'If Me.ComboBox1 = "" Or Me.ComboBox2 = "" Or Me.ComboBox3 = "" Then Exit Sub
  'If MsgBox("Etes-vous certain de vouloir modifier la FSSE de ce poste ?", vbYesNo, "Demande de confirmation") = vbYes And ligne > 1 Then
    '(Worksheets("données").Cells(ligne, "f") = Me.ComboBox1.Value)
    '(Worksheets("données").Cells(ligne, "d") = Me.ComboBox2.Value)
    '(Worksheets("données").Cells(ligne, "b") = Me.ComboBox3.Value)
    'Worksheets("données").Cells(no_ligne, 3) = Me.TextBox3.Value
    'Worksheets("données").Cells(no_ligne, 4) = Me.TextBox4.Value
    'Worksheets("données").Cells(no_ligne, 5) = Me.TextBox5.Value
    'Worksheets("données").Cells(no_ligne, 6) = Me.TextBox6.Value
    'Worksheets("données").Cells(no_ligne, 7) = Me.TextBox7.Value
    'Worksheets("données").Cells(no_ligne, 8) = Me.TextBox8.Value
    'Worksheets("données").Cells(no_ligne, 9) = Me.TextBox9.Value
    'Worksheets("données").Cells(no_ligne, 10) = Me.TextBox10.Value
    'Worksheets("données").Cells(no_ligne, 11) = Me.TextBox11.Value
    'Worksheets("données").Cells(no_ligne, 12) = Me.TextBox12.Value
    'Worksheets("données").Cells(no_ligne, 13) = Me.TextBox13.Value
    'Worksheets("données").Cells(no_ligne, 14) = Me.TextBox14.Value
    'Worksheets("données").Cells(no_ligne, 15) = Me.TextBox15.Value
    'Worksheets("données").Cells(no_ligne, 16) = Me.TextBox16.Value
    'Worksheets("données").Cells(no_ligne, 17) = Me.TextBox17.Value
    'Worksheets("données").Cells(no_ligne, 18) = Me.TextBox18.Value
    'Worksheets("données").Cells(no_ligne, 19) = Me.TextBox19.Value
    'Worksheets("données").Cells(no_ligne, 20) = Me.TextBox20.Value
    'Worksheets("données").Cells(no_ligne, 21) = Me.TextBox21.Value
    'Worksheets("données").Cells(no_ligne, 22) = Me.TextBox22.Value
    'Worksheets("données").Cells(no_ligne, 23) = Me.TextBox23.Value
    'Worksheets("données").Cells(no_ligne, 24) = Me.TextBox24.Value
    'Worksheets("données").Cells(no_ligne, 25) = Me.TextBox25.Value
    'Worksheets("données").Cells(no_ligne, 26) = Me.TextBox26.Value
   'temp = ""

   '(For K = 1 To 26)
      '(tmp = Me.Controls("TextBox" & K))
      '(If IsNumeric(tmp) Then tmp = Val(tmp))
      '(If IsDate(tmp) Then tmp = CDate(tmp))
      '(Worksheets("données").Cells(ligne, K + 3) = tmp)
   '(Next K)
  'End If
  'UserForm_Initialize
  'ligne = O.[A65000].End(xlUp).Row + 1
  'MsgBox "La modification a été prise en compte."
'End Sub

pas envident quand on maitrise pas excel sur le bout des doigts

François

Bonjour Franh

Franh Sois a écrit :

Mon problème c'est que ma formule ne fonctionne plus (celle qui doit envoyer les données dans mon onglet "données"). et je ne sais pas pourquoi.

Mais depuis que j'ai ajouté des fonctions ça bug : (création d'un bouton "effacer" / désactivation des bouton "Créer" et "modifier" si certains textbox ou combobox ne sont pas remplis.

je suis dingue je pensais avoir presque fini mais maintenant c'est ma formule de base qui bug !!!!!

Le problème, c'est que sans fichier anonymisé, il est compliqué de te répondre

Et tu nous parles d'une formule de base, laquelle !?

A+

Rechercher des sujets similaires à "formulaire formule envoyer donnees tab"