Interactions entre formulaire et fichier

zefirstfan

XLDnaute Junior
Bonjour,
Je travaille sur une petite base de stockage de données que je remplie via des userform.
J'ai deux codes a simplifier.
Le premier permet de remplir le caption des labels automatiquement en renvoyant le titre de la colonne du tableau.
Voici le code que j'utilise.
Ça fonctionne très bien, mais je pense qu'il existe un façon de le simplifier. Il sert pour renseigner 21 labels au total(21 lignes de codes dans mon cas).


Private Sub UserForm_Initialize()
'Remplissage automatique des labels
UserForm3.Label1.Caption = Sheets("EAU").Range("A1").Value
UserForm3.Label2.Caption = Sheets("EAU").Range("B1").Value
UserForm3.Label3.Caption = Sheets("EAU").Range("C1").Value
UserForm3.Label4.Caption = Sheets("EAU").Range("D1").Value
etc....jusqu'au label 21, colonne U
End Sub


Meme chose pour le code qui me renvoie les données saisies dans le formulaire vers la base:

Private Sub CommandButton1_Click()
Dim MaLigne As String
MaLigne = Sheets("EAU").Range("A" & Rows.Count).End(xlUp).Row + 1
Dim MaLigneRemplie As String
MaLigneRemplie = Sheets("EAU").Range("A" & Rows.Count).End(xlUp).Row

'Envoi donnees vers base de donnees


Sheets("EAU").Range("A" & MaLigne) = CDate(Me.TextBox1)
Sheets("EAU").Range("B" & MaLigne) = CDec(Me.TextBox2)
Sheets("EAU").Range("C" & MaLigne) = CDec(Me.TextBox3)
Sheets("EAU").Range("D" & MaLigne) = CDec(Me.TextBox4)
Sheets("EAU").Range("E" & MaLigne) = CDec(Me.TextBox5)
Sheets("EAU").Range("F" & MaLigne) = CDec(Me.TextBox6)
Sheets("EAU").Range("G" & MaLigne) = CDec(Me.TextBox7)
Sheets("EAU").Range("H" & MaLigne) = CDec(Me.TextBox8)

Etc jusque TextBox 21 => colonne U.

Merci de votre aide pour simplifier ces lignes de codes.
Amitiés.
Yannick.
 

Tentative

XLDnaute Occasionnel
Re : Interactions entre formulaire et fichier

Bonjour,

Une tentative :

Private Sub UserForm_Initialize()
'Remplissage automatique des labels
Dim X As Byte
For X = 1 To 21
Controls("Label" & X).Caption = Sheets("EAU").Range("A1").Offset(0, X - 1).Value
Next X
End Sub


Private Sub CommandButton1_Click()
Dim MaLigne As String
Dim Y As Byte
MaLigne = Sheets("EAU").Range("A" & Rows.Count).End(xlUp).Row + 1
Dim MaLigneRemplie As String
MaLigneRemplie = Sheets("EAU").Range("A" & Rows.Count).End(xlUp).Row

'Envoi donnees vers base de donnees
With Sheets("EAU")
For Y = 1 To 21
.Range("A" & MaLigne).Offset(0, Y - 1) = CDate(Me.Controls("TextBox" & Y))
Next Y
End With
End Sub


Tentative
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 084
Messages
2 085 192
Membres
102 809
dernier inscrit
Sandrine83