Mise à jour des données par formulaire vba Excel
Amis du forum Bonjour:)
Je suis à nouveau dans une impasse, comme tous les débutants, et je manque franchement d'inspiration.
J'ai vraiment besoin d'un lanterne pour ce qui suit :
Je dispose d'une feuil (DB_CLIENTS) qui est alimentée par un formulaire de création nouveau client (FrmClient). Cette première partie fonctionne plutôt bien.
J'ai depuis créé un autre formulaire (ModifClient)sur la même base pour modifier ou supprimer les comptes clients existant
J'alimente ce même formulaire en données par un combobox (CboxIdClient)
Le formulaire affiche correctement les infos dans les zones correspondantes.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| Private Sub CboxIdClient_Change()
Dim Rg As Range
Dim Sh As Worksheet
Set Sh = Worksheets("BD_CLIENTS")
'Recherche l'ID
Set Rg = Sh.Range("A:A").Find(what:=CboxIdClient.Value, lookat:=xlWhole)
'Si ID trouvé on alimente les zones du formulaire en données
If Not Rg Is Nothing Then
Me.CboxFormesJuridiques.Value = Rg.Offset(0, 1).Value
Me.ZtxtRaisonSociale.Text = Rg.Offset(0, 2).Value
Me.CboxCivilite.Value = Rg.Offset(0, 3).Value
Me.ZtxtNom.Text = Rg.Offset(0, 4).Value
Me.ZtxtPrenom.Text = Rg.Offset(0, 5).Value
Me.ZtxtAdresseL1.Text = Rg.Offset(0, 6).Value
Me.ZtxtAdresseL2.Text = Rg.Offset(0, 7).Value
Me.ZtxtCodePostal.Text = Rg.Offset(0, 8).Value
Me.CboxVille.Value = Rg.Offset(0, 9).Value
Me.ZtxtEmail.Text = Rg.Offset(0, 10).Value
Me.ZtxtTelephonePrincipal.Text = Rg.Offset(0, 11).Value
Me.ZtxtTelephoneSecondaire.Text = Rg.Offset(0, 12).Value
End If
End Sub |
Je souhaite maintenant mettre à jours ces nouvelles données dans la feuil(DB_CLIENT) et c'est là que je sèche. Je n'arrive pas à déclarer la ligne de référence pour la valeur de la variable que j'ai nommé (NumLign)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| Private Sub CmdModifier_Click()
Dim NumLign As Chart
NumLign = ???????????????
With Sheets("BD_CLIENTS")
Range("B" & Val(NumLign)).Value = CboxFormesJuridiques.Value
Range("C" & Val(NumLign)).Value = ZtxtRaisonSociale.Value
Range("D" & Val(NumLign)).Value = CboxCivilite.Value
Range("E" & Val(NumLign)).Value = ZtxtNom.Value
Range("F" & Val(NumLign)).Value = ZtxtPrenom.Value
Range("G" & Val(NumLign)).Value = ZtxtAdresseL1.Value
Range("H" & Val(NumLign)).Value = ZtxtAdresseL2.Value
Range("I" & Val(NumLign)).Value = ZtxtCodePostal.Value
Range("J" & Val(NumLign)).Value = CboxVille.Value
Range("K" & Val(NumLign)).Value = ZtxtEmail.Value
Range("L" & Val(NumLign)).Value = ZtxtTelephonePrincipal.Value
Range("M" & Val(NumLign)).Value = ZtxtTelephoneSecondaire.Value
Range("N" & Val(NumLign)).Value = ZtxtDate.Value
End With
Unload FrmClient
Call ThisWorkbook.TriGamma
Call ThisWorkbook.AutoSize
Worksheets("Formulaires").Activate
Message = "Les données du client ont bien été Modifiées !"
Style = vbOKOnly
Titre = "Opération validée !"
MsgBox Message, Style, Titre
FrmClient.Show
End Sub |
Peut-être ne suis-je pas sur la bonne voie. Quelqu'un peut m'aider ?
Merci.
re Utilise la méthode Find
Merci mercatog pour cette proposition, j'ai testé et j'ai toutefois un message d'erreur comme celui-ci :
erreur d'exécution '9'
L'indice n'appartient pas à la sélection....
Ce message est rapporté de la ligne :
Code:
Set Rg = .Range("A:A").Find(what:=CboxIdClient.Value, LookIn:=xlValue, lookat:=xlWhole)
J'ai peut être été maladroit en reportant ta proposition comme suit :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| Private Sub CmdModifier_Click()
Dim Rg As Range
Dim NumLign As Long
With Sheets("BD_CLIENTS")
Set Rg = .Range("A:A").Find(what:=CboxIdClient.Value, LookIn:=xlValue, lookat:=xlWhole)
If Not Rg Is Nothing Then
NumLign = Rg.Row
Set Rg = Nothing
.Range("B" & NumLign).Value = CboxFormesJuridiques.Value
.Range("C" & NumLign).Value = ZtxtRaisonSociale.Value
.Range("D" & NumLign).Value = CboxCivilite.Value
.Range("E" & NumLign).Value = ZtxtNom.Value
.Range("F" & NumLign).Value = ZtxtPrenom.Value
.Range("G" & NumLign).Value = ZtxtAdresseL1.Value
.Range("H" & NumLign).Value = ZtxtAdresseL2.Value
.Range("I" & NumLign).Value = ZtxtCodePostal.Value
.Range("J" & NumLign).Value = CboxVille.Value
.Range("K" & NumLign).Value = ZtxtEmail.Value
.Range("L" & NumLign).Value = ZtxtTelephonePrincipal.Value
.Range("M" & NumLign).Value = ZtxtTelephoneSecondaire.Value
.Range("N" & NumLign).Value = ZtxtDate.Value
End If
End With
Unload ModifClient
Call ThisWorkbook.TriGamma
Call ThisWorkbook.AutoSize
Worksheets("Formulaires").Activate
Message = "Les données du client ont bien été Modifiées !"
Style = vbOKOnly
Titre = "Opération validée !"
MsgBox Message, Style, Titre
ModifClient.Show
End Sub |