Re : création d'une base de données VBA
Module 1
Option Explicit
Sub Affiche_formulaire()
Sheets("BD saisie").Select
'Cette procédure affiche le formulaire
'Déprotection de la feuille
ActiveSheet.Unprotect
'Test de l'existence d'éléments dans la liste.
'S'il n'y en pas, on ajoute 1 à la première cellule de la deuxième ligne.
If Range("A65532").End(xlUp).Row = 1 Then Cells(2, 1).Value = 1
'Si on se trouve dans la première ligne,
'alors la cellule active se déplace en deuxième ligne
If ActiveCell.Row = 1 Then Cells(2, 1).Select
'Si la cellule active se trouve en dessous de la liste, alors
'la cellule active se déplace sur la dernière ligne.
If ActiveCell.Row > Range("A65532").End(xlUp).Row Then Cells(Range("A65532").End(xlUp).Row, 1).Select
'Initialisation du formulaire en fonction des données de la cellule active
initialise_formulaire (ActiveCell.Row)
'Affichage du formulaire.
UserForm1.Show
End Sub
Sub initialise_formulaire(ligne As Long) 'On notera que la variable ligne est de la forme Long.
'Initialisation du formulaire.
Sheets("BD saisie").Select
With UserForm1
.UF_numero = Cells(ligne, 1).Value
.UF_date = Cells(ligne, 2).Value
.ComboBox1 = Cells(ligne, 3).Value
.UF_Hentree = Cells(ligne, 4).Value
.UF_Hsortie = Cells(ligne, 5).Value
.ComboBox2 = Cells(ligne, 7).Value
.ComboBox3 = Cells(ligne, 8).Value
.ComboBox4 = Cells(ligne, 9).Value
.UF_profondeur = Cells(ligne, 10).Value
.UF_Visibilte = Cells(ligne, 11).Value
.UF_temperature = Cells(ligne, 12).Value
.UF_courant = Cells(ligne, 13).Value
.ComboBox5 = Cells(ligne, 14).Value
.ComboBox6 = Cells(ligne, 15).Value
'Dans la mesure où un événement de mise à jour est associé au changement
'dans la barre d'outil, cette mise à jour se fait donc à la fin.
.ScrollBar1.Max = Range("A65532").End(xlUp).Row
.ScrollBar1 = ligne
End With
'Sélection de la ligne du formulaire en cas de changement
Rows(ligne).Select
End Sub
Module 2
Option Explicit
Sub majligneencours()
Sheets("BD saisie").Select
'Définition des variables
Dim ligne As Long
'Cette procédure met à jour la base de données à partir des données du formulaire.
With UserForm1
'Définition de la ligne en fonction de la valeur de la barre de défilement.
ligne = .ScrollBar1
'Attribution des valeurs aux lignes de la base de données.
Cells(ligne, 1).Value = .UF_numero * 1
Cells(ligne, 2).Value = .UF_date
Cells(ligne, 3).Value = .ComboBox1
Cells(ligne, 4).Value = .UF_Hentree
Cells(ligne, 5).Value = .UF_Hsortie
Cells(ligne, 7).Value = .ComboBox2
Cells(ligne, 8).Value = .ComboBox3
Cells(ligne, 9).Value = .ComboBox4
Cells(ligne, 10).Value = .UF_profondeur
Cells(ligne, 11).Value = .UF_Visibilte
Cells(ligne, 12).Value = .UF_temperature
Cells(ligne, 13).Value = .UF_courant
Cells(ligne, 14).Value = .ComboBox5
Cells(ligne, 15).Value = .ComboBox6
End With
End Sub
Sub protegefeuille()
'Protège la feuille en cours
Sheets("BD saisie").Select
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub