Saisie dynamique
Projet VBA
Saisie du module du bouton Enregistrer
Procédure (à saisir dans le module GestionDeFrais) à appeler depuis la procédure du bouton enregistrer
Sub proc_stocker_les_données()
Range("A2").Value = frm_nouvelle_fiche_de_frais.cal_date.Value
Range("B2").Value = frm_nouvelle_fiche_de_frais.cbo_motif.Value
Range("C2").Value = CInt(frm_nouvelle_fiche_de_frais.txt_montant.Value)
End Sub
Un CInt est ici nécessaire pour éviter les erreurs de nombre stocké sous forme de texte (voir objet Form)Range("A2").Value = frm_nouvelle_fiche_de_frais.cal_date.Value
Range("B2").Value = frm_nouvelle_fiche_de_frais.cbo_motif.Value
Range("C2").Value = CInt(frm_nouvelle_fiche_de_frais.txt_montant.Value)
End Sub
Il faut récupérer la première ligne vide pour les autres saisies. Dans un premier temps, on remplace le numéro de la ligne par une variable.
Option Explicit
Dim var_premierelignevide As Integer
Sub proc_stocker_les_données()
var_premierelignevide = 2
Range("A" & var_premierelignevide).Value = frm_nouvelle_fiche_de_frais.cal_date.Value
Range("B" & var_premierelignevide).Value = frm_nouvelle_fiche_de_frais.cbo_motif.Value
Range("C" & var_premierelignevide).Value = CInt(frm_nouvelle_fiche_de_frais.txt_montant.Value)
End Sub
Un CInt est ici nécessaire pour éviter les erreurs de nombre stocké sous forme de texte (voir objet Form)Dim var_premierelignevide As Integer
Sub proc_stocker_les_données()
var_premierelignevide = 2
Range("A" & var_premierelignevide).Value = frm_nouvelle_fiche_de_frais.cal_date.Value
Range("B" & var_premierelignevide).Value = frm_nouvelle_fiche_de_frais.cbo_motif.Value
Range("C" & var_premierelignevide).Value = CInt(frm_nouvelle_fiche_de_frais.txt_montant.Value)
End Sub
Calcul de la première ligne vide ( à rajouter en haut de la procédure ci-dessus, proc_stocker_les_données ) :
var_premierelignevide = 2
If Range("A2").Value <> "" Then
Range("A1").Select
Selection.End(xlDown).Select ' soit Ctrl + Flêche bas
var_premierelignevide = ActiveCell.Row + 1
End If
If Range("A2").Value <> "" Then
Range("A1").Select
Selection.End(xlDown).Select ' soit Ctrl + Flêche bas
var_premierelignevide = ActiveCell.Row + 1
End If
Autre technique: depuis le bas de la feuille
Dim int_premierelignevide As Integer
'Récupère le nombre de lignes d'Excel
Dim var_nombredeligne As Long 'Long pour Excel 2007 ou 2010
var_nombredeligne = Application.Rows.Count 'ou de la feuille active avec ActiveSheet.Rows.Count
'Sélectionne la dernière ligne
Rows(var_nombredeligne).Select
'Remonte sur la première ligne pleine
Selection.End(xlUp).Select ' soit Ctrl + Flêche haut
'initialisation de la bonne ligne
int_premierelignevide = ActiveCell.Row + 1
Range("A" & int_premierelignevide).Value = txt_nom.Value
'Récupère le nombre de lignes d'Excel
Dim var_nombredeligne As Long 'Long pour Excel 2007 ou 2010
var_nombredeligne = Application.Rows.Count 'ou de la feuille active avec ActiveSheet.Rows.Count
'Sélectionne la dernière ligne
Rows(var_nombredeligne).Select
'Remonte sur la première ligne pleine
Selection.End(xlUp).Select ' soit Ctrl + Flêche haut
'initialisation de la bonne ligne
int_premierelignevide = ActiveCell.Row + 1
Range("A" & int_premierelignevide).Value = txt_nom.Value