j'ai des questions : beaucoup de questions certes mais bon il y a des incohérences pour corriger
se module sert a quoi ?
Pour moi cela sert à rien !
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
'TRANSFORMER LE POINT PAR UNE VIRGULE
If KeyAscii = 46 Then KeyAscii = 44
'ACCEPTER UNIQUEMENT UNE SEULE VIRGULE ET LES CHIFFRES ENTRE 0 ET 9
If InStr("1234567890,", Chr(KeyAscii)) = 0 Or (InStr(TextBox1.Value, ",") <> 0 And Chr(KeyAscii) = ",") _
Or (TextBox1.SelStart = 0 And Chr(KeyAscii) = ",") Then KeyAscii = 0: Beep
End Sub
et cette boucle sert a quoi ?
Pour moi C'est mal interprété !
si je peux avoir le détail de cette boucle merci
For i = ligne To derlig
If i = 4 Then
Fcible.Cells(i, 5).Value = Fcible.Cells(i, 4).Value - Fcible.Cells(i, 3).Value
Else
Fcible.Cells(i, 5).Value = Fcible.Cells(i - 1, 5).Value + Fcible.Cells(i, 4).Value - Fcible.Cells(i, 3).Value
End If
Next
la protection et déprotéction de la feuille a qu'elle moment l'activé ou la desactiver ?
aussi : c'est de la ligne 4 à 128 soit : 125 lignes a remplire (vrais ou faux) ?
Me.SpinButton1.Max = ligne
dans se module :
a quoi cela sert de faire cette action avec cette fonction ?
il y a aucune feuille de mentionné donc cela n'écrira jamais rien
rempliusf (ligne) il manque la variable feuille soit combobox3.value
Private Sub SpinButton1_Change() 'page
ligne = Me.SpinButton1.Value
Me.Label6.Caption = "Enregistrement N° " & ligne - 3
rempliusf (ligne)
End Sub
cette fonction est en faite une procédure
Function rempliusf(ligne)
UF_Ecritures.ComboBox1.Value = Cells(ligne, 1).Value ' Opérations
UF_Ecritures.ComboBox2.Value = Cells(ligne, 2).Value ' Modes
UF_Ecritures.TextBox1.Value = 0 ' Montant
UF_Ecritures.OptionButton1.Value = False ' Bouton choix Dépense
UF_Ecritures.OptionButton1.Value = False ' Bouton choix Dépense
If Cells(ligne, 3).Value > 0 Then
UF_Ecritures.TextBox1.Value = Cells(ligne, 3).Value
UF_Ecritures.OptionButton1.Value = True
End If
If Cells(ligne, 4).Value > 0 Then
UF_Ecritures.TextBox1.Value = Cells(ligne, 4).Value
UF_Ecritures.OptionButton2.Value = True
End If
End Function
donc faux car une fonction doit renvoyé une information
il faut écrire Sub pour procédure
sub rempliusf(ligne)
UF_Ecritures.ComboBox1.Value = Cells(ligne, 1).Value ' Opérations
UF_Ecritures.ComboBox2.Value = Cells(ligne, 2).Value ' Modes
UF_Ecritures.TextBox1.Value = 0 ' Montant
UF_Ecritures.OptionButton1.Value = False ' Bouton choix Dépense
UF_Ecritures.OptionButton1.Value = False ' Bouton choix Dépense
If Cells(ligne, 3).Value > 0 Then
UF_Ecritures.TextBox1.Value = Cells(ligne, 3).Value
UF_Ecritures.OptionButton1.Value = True
End If
If Cells(ligne, 4).Value > 0 Then
UF_Ecritures.TextBox1.Value = Cells(ligne, 4).Value
UF_Ecritures.OptionButton2.Value = True
End If
End sub
et corrigé cette procédure qui est fausse
correction
Function rempliusf(ligne, NomFeuileactive As String)
' NomFeuileactive qui correspond à combobox3.value ramené dans la procédure.
' typé NomFeuileactive comme suit dim NomFeuileactive as string
' typé ligne ici inutil car vous l'avez typé en public lisible partout dans tous les modules
Dim Fcible As Worksheet
Set Fcible = Worksheets(NomFeuileactive)
UF_Ecritures.ComboBox1.Value = Fcible.Cells(ligne, 1).Value ' Opérations
UF_Ecritures.ComboBox2.Value = Fcible.Cells(ligne, 2).Value ' Modes
' ici pourquoi 0 pour lemontant
UF_Ecritures.TextBox1.Value = 0 ' Montant
' ici pourquoi les deux a false pour la même choses !
UF_Ecritures.OptionButton1.Value = False ' Bouton choix Dépense
UF_Ecritures.OptionButton1.Value = False ' Bouton choix Dépense
' Ici c'est forcément la derniere ligne pour les Totaux
' Dépense
' Vrais ou faux
If Fcible.Cells(ligne, 3).Value > 0 Then
UF_Ecritures.TextBox1.Value = Fcible.Cells(ligne, 3).Value
UF_Ecritures.OptionButton1.Value = True
End If
' Ici c'est forcément la derniere ligne pour les Totaux
' Recettes
' Vrais ou faux
If Fcible.Cells(ligne, 4).Value > 0 Then
UF_Ecritures.TextBox1.Value = Fcible.Cells(ligne, 4).Value
UF_Ecritures.OptionButton2.Value = True
End If
End Function
ici cette condition sert a rien
For i = ligne To derlig
' car i sera forcément égale à 4 pour i (toujours) c'est une boucle
If i = 4 Then
Fcible.Cells(i, 5).Value = Fcible.Cells(i, 4).Value - Fcible.Cells(i, 3).Value
Else
Fcible.Cells(i, 5).Value = Fcible.Cells(i - 1, 5).Value + Fcible.Cells(i, 4).Value - Fcible.Cells(i, 3).Value
End If
Next