bonjour à tous
je rejoins un peu mes camarades sur leur remarques
mais j'ajouterais que:
1° quand on travaille une base de données on travaille avec un tableau structuré(LisObject)
son acces en est beaucoup plus simple
2° quand on a beaucoup de colonne il faut taguer les controls dans le userform pour qu'il cible la bonne colonne
ou tout autre méthode qui jummelerais le control a sa colonne
3° le code en devient dérisoire tellement c'est simple
- j'ai donc supprimé tes colonne de séparation
- j'ai mis une grosse bordure gauche à chaque colonnes
- j'ai transformé ta plage en tableau structuré
- j'ai viré tout le code du userform
- j'y ai codé l'essentiel
et en avant guinguant
le code dans le userform en l'état actuel de son développement lecture /ecriture
Option Explicit
'combobox client
Private Sub ComboBox1_Change()
Dim lig&, ctrl As Object
lig = ComboBox1.ListIndex + 1
If ComboBox1.ListIndex = -1 Then
For Each ctrl In Me.Controls
If ctrl.Tag <> "" Then ctrl = ""
Next
Else
For Each ctrl In Me.Controls
If ctrl.Tag <> "" Then ctrl = Range("Tclients").Cells(lig, Val(ctrl.Tag))
Next
End If
End Sub
' Userform1 (Bouton "Valider")'
Private Sub CommandButton1_Click()
Dim ctrl As Object, expression, rng As Range
If ComboBox1.ListIndex = -1 Then
TextBox1 = Application.Max(Range("Tclients[Id client]")) + 1
Set rng = Range("Tclients").ListObject.ListRows.Add.Range
expression = "l'ajout"
Else
expression = "la modification "
Set rng = Range("Tclients").ListObject.ListRows(ComboBox1.ListIndex + 1).Range
End If
If MsgBox("Confirmez-vous" & expression & " de ces informations dans la base de données?", vbYesNo, "Confirmation") = vbYes Then
With rng
For Each ctrl In Me.Controls
If ctrl.Tag <> "" Then .Cells(Val(ctrl.Tag)) = ctrl
Next
End With
End if
End Sub
'Userform1 (Bouton "Quitter")
Private Sub CommandButton2_Click()
Unload UserForm1
End Sub
Private Sub UserForm_Initialize()
ComboBox1.List = Range("Tclients[Client / Société]").Resize(, 2).Value
End Sub
comme tu vois à coder ça devient tout de suite plus simple
Reste à faire:
1°il te faudra remettre tes colonnes en hyperlink (je vais pas tout faire quand même hein )
2°il te faudra certainement ajouter aussi un control sur un minimum de control remplis ( tu saura faire hein)
le fichier
patricktoulon