' Les lignes qui débutent par une apostrophe identifient un commentaire c'est-à-dire du texte exploitable par le lecteur et non par le programme VBA
' Objectif : documenter le code VBA pour le rendre plus compréhensible.
'Attention les deux lignes suivantes doivent être impérativement placées en tout début de programme
Option Explicit 'Activation de la déclaration explicite des variables
Dim Ws As Worksheet 'Variable pour un Objet Worksheet en PUBLIC pour tous les Controls de cet UserForm
'================ debut SUB =========================
'Correspond au programme du bouton QUITTER
Private Sub CommandButton1_Click()
Unload Me
'Unload => Permet de fermer l'Userform et de l'effacer de la mémoire, les valeurs de ses contrôles sont à alors perdues.
' Me => Référence à l'objet en cours
End Sub
'Correspond au programme du FORMULAIRE
'Cet évènement est important car il permet de définir les propriétés des objets et les valeurs par défaut des variables, lors du lancement du Userform.
Private Sub UserForm1_Initialize() 'à l'initialisation de l'userform
' Déclaration des variables grâce à Dim
' 1° Choisir un nom
' 2° Choisir un TYPE (= définir la nature du contenu)
' --------------------------------------------------------
Dim J As Long 'déclare la variable J
Dim i As Integer
End Sub
'-- Après choix de la nature dans Combobox2
'-- Actualise Textbox6 avec numéro de compte correspondant au libellé de la Nature
Private Sub Combobox2_Click()
Dim k As Integer
Dim nature2 As Long
'--- bloc For et Next ---
'nature2 = ""
For k = 1 To 60 '60 maximum de nature paramétrées
'---Bloc If et End If à l'intérieur de For Next----
Me.TextBox6 = Sheets("Aides3").Range("C" & k) 'Mettre dans la textbox la valeur de Ci nom de la nature
If TextBox6 = ComboBox2 Then 'Si cette valeur = celle de la Combobox nom de la nature
nature2 = Sheets("Aides3").Range("D" & k) 'Affecte le numero de la nature Di à la variable nature
k = 60
End If
'------------
Next k
TextBox6 = nature2
'----
End Sub
'============= FIN DE SUB ============================
'================ debut SUB =========================
'AFFECTATION DES VALEURS DE LISTE AUX ComboBox
Private Sub UserForm_Initialize()
'Affecte la liste à la Combobox1 BANQUE en evitant les lignes vides
Dim Dlig1 As Long 'déclare la variable Dlig1 (Ligne de Fin)
Dim Cel1 As Variant
Sheets("Aides3").Select
Dlig1 = Range("h65536").End(xlUp).Row 'définit la variable Dlig1
ComboBox1.Clear 'vide la ComboBox1
'remplit la ComboBox1
For Each Cel1 In Range("h2:h" & Dlig1) 'boucle sur toutes les cellule de k2 à k_Dlig3
'condition : si la cellule n'est pas vide ajoute son contenu à la ComboBox3
If Cel1.Value <> " " Then ComboBox1.AddItem Cel1.Value
Next Cel1 'prochaine cellule
'-------------------------------------------------------------------
'Affecte la liste à la Combobox2 NATURE en evitant les lignes vides
Dim Dlig2 As Long 'déclare la variable Dlig2 (Ligne de Fin)
Dim Cel2 As Variant
Sheets("Aides3").Select
Dlig2 = Range("C65536").End(xlUp).Row 'définit la variable Dlig2
ComboBox2.Clear 'vide la ComboBox2
'remplit la ComboBox2
For Each Cel2 In Range("C1:C" & Dlig2) 'boucle sur toutes les cellule de C2 à C_Dlig2
'condition : si la cellule n'est pas vide ajoute son contenu à la ComboBox2
If Cel2.Value <> " " Then ComboBox2.AddItem Cel2.Value
Next Cel2 'prochaine cellule
'-----------------------------------------------------------------------
'Affecte la liste à la Combobox3 PROJET en evitant les lignes vides
Dim Dlig3 As Long 'déclare la variable Dlig3 (Ligne de Fin)
Dim Cel3 As Variant
Sheets("Aides3").Select
Dlig3 = Range("k65536").End(xlUp).Row 'définit la variable Dlig3
ComboBox3.Clear 'vide la ComboBox3
'remplit la ComboBox3
For Each Cel3 In Range("k2:k" & Dlig3) 'boucle sur toutes les cellule de k2 à k_Dlig3
'condition : si la cellule n'est pas vide ajoute son contenu à la ComboBox3
If Cel3.Value <> " " Then ComboBox3.AddItem Cel3.Value
Next Cel3 'prochaine cellule
End Sub
'============= FIN DE SUB ============================
'Module pour transformer txtbox en monnétaire valeurTBx(textbox5)
Private Function ValeurTBx(ByVal TBx As MSForms.TextBox)
If IsNumeric(TBx.Text) Then
ValeurTBx = CDbl(TBx.Text)
ElseIf TBx.Text = "" Then
ValeurTBx = Empty
Else: ValeurTBx = TBx.Text: End If
End Function
'================ debut SUB =========================
'******************************************************************************
Private Sub CommandButton3_Click()
'Module d'ajout d'une ligne Bouton Nouvelle ligne COmmandButton3
'Controler si le montant a été saisi, si non saisi retour au formulaire VIDE
If Controls("Textbox5") = "" Then
MsgBox "Vous devez ABSOLUMENT indiquer un montant !", vbExclamation, "ERREUR"
Controls("Textbox5").SetFocus
Unload Me
UserForm1.Show 'Affiche le formulaire
End If
'----------------------------------------------------
'Trouver compte correspondant à Combobox2 et extraire le compte
Dim i As Integer
Dim Nature As Long
Dim m_chaine As String
Dim L As Long
Dim Nbr As Integer
Nature = 0
Sheets("Aides3").Select
'--- bloc For et Next ---
For i = 1 To 60 '60 maximum de nature paramétrées
'---Bloc If et End If à l'intérieur de For Next----
Me.TextBox6 = Sheets("Aides3").Range("C" & i) 'Mettre dans la textbox la valeur de Ci nom de la nature
If TextBox6 = ComboBox2 Then 'Si cette valeur = celle de la Combobox nom de la nature
Nature = Sheets("Aides3").Range("D" & i) 'Affecte le numero de la nature Di à la variable nature
i = 60
End If
'------------
Next i
TextBox6 = Sheets("Aides3").Range("D" & i)
'----
With Sheets("Feuil2")
'-------------------------------------------------------------------
'---- début bloc If-
If MsgBox("Etes-vous certain de vouloir INSERER cette nouvelle ligne comptable ?", vbYesNo, "Demande de confirmation") = vbYes Then
'condition : si oui au message
'Positionnement en ligne du tableur vide mais avant bilan financier
'dans la cellule C6 de Feuil2 il y a un nombre entier
'Je récupére la valeur de la cellule C6 à mettre dans la variable Nbr
L = 0
Nbr = 0
Nbr = .Range("C6") + 8
'Cette variable servant à me positionner sur une ligne précise de mon tableur
'Là j'intégre à partir de Nbr
L = Nbr 'Permet de se positionner sur la ligne de tableau définie par Nbr
.Range("C" & L).Value = Nature 'Insére le numero de la nature dans la colonne C
.Range("A" & L).Value = CDate(TextBox1) 'Insère la donnée de la textbox1 dans la colonne A comme une date
.Range("B" & L).Value = ComboBox1 'Insère la donnée de la liste déroulante dans la colonne B
.Range("D" & L).Value = ComboBox2
.Range("E" & L) = ValeurTBx(TextBox5) 'Insére la donnée formatée monétaire dans la colonne E
.Range("G" & L).Value = ComboBox3
.Range("H" & L).Value = TextBox2
.Range("I" & L).Value = TextBox3
.Range("J" & L).Value = TextBox4
.Range("F" & L).Value = "," ' Colonne de pointage avec relevé banque, passe à "," par défaut
.Range("C" & 6).Value = Nbr - 7 ' réinitialise le Nbr de ligne dans le tableau
If Controls("ComboBox1") = "CAISSE" Then .Range("F" & L).Value = "x"
If Controls("ComboBox2") = "" Then .Range("F" & L).Value = " "
End If
'-----------------
End With
Unload Me ' Vide et ferme l'Userform ( formulaire)
UserForm1.Show 'Affiche le formulaire
End Sub
'============= FIN DE SUB ============================