VBA Excel 2010 (formulaire personnalisé)

Résolu/Fermé
Berouma Messages postés 10 Date d'inscription mercredi 28 janvier 2015 Statut Membre Dernière intervention 17 mars 2015 - 28 janv. 2015 à 15:19
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 - 29 janv. 2015 à 14:01
Bonjour tout le monde, au fait c'est ma première fois d'utiliser ce forum.
Mon message est que j'ai crée un formulaire personnalisé avec le code VBA, et quand j'exécute le code un message d'erreur s'affiche: Erreur d'exécution 9 lindice n'appartient pas à la selection si quelqu'un pourra m'aidé à résoudre ce problème ça me ferai énormément plaisir.
Je suis assistant dans un organisme Internationnal je veux me rassuer que ces codes là peuvent être validés sans cette erreur d'exécution 9 qui me donne du pain sur la planche voici ces codes ci-dessousOption Explicit
Dim Ws As Worksheet

'Pour le formulaire
Private Sub UserForm_Initialize()
Dim J As Long
Dim I As Integer

ComboBox2.ColumnCount = 1 'Pour la liste d?roulante Civilit?
ComboBox2.List() = Array("", "M.", "Mme", "Mlle")
Set Ws = Sheets("Clients") 'Correspond au nom de votre onglet dans le fichier Excel
With Me.ComboBox1
For J = 2 To Ws.Range("A" & Rows.Count).End(xlUp).Row
.AddItem Ws.Range("A" & J)
Next J
End With
For I = 1 To 7
Me.Controls("TextBox" & I).Visible = True
Next I
End Sub

'Pour la liste d?roulante Code client
Private Sub ComboBox1_Change()
Dim Ligne As Long
Dim I As Integer

If Me.ComboBox1.ListIndex = -1 Then Exit Sub
Ligne = Me.ComboBox1.ListIndex + 2
ComboBox2 = Ws.Cells(Ligne, "B")
For I = 1 To 7
Me.Controls("TextBox" & I) = Ws.Cells(Ligne, I + 2)
Next I
End Sub

'Pour le bouton Nouveau contact
Private Sub CommandButton1_Click()
Dim L As Integer
If MsgBox("Confirmez-vous l'insertion de ce nouveau contact ?", vbYesNo, "Demande de confirmation d'ajout") = vbYes Then
L = Sheets("Clients").Range("a65536").End(xlUp).Row + 1 'Pour placer le nouvel enregistrement ? la premi?re ligne de tableau non vide
Range("A" & L).Value = ComboBox1
Range("B" & L).Value = ComboBox2
Range("C" & L).Value = TextBox1
Range("D" & L).Value = TextBox2
Range("E" & L).Value = TextBox3
Range("F" & L).Value = TextBox4
Range("G" & L).Value = TextBox5
Range("H" & L).Value = TextBox6
Range("I" & L).Value = TextBox7
End If
End Sub

'Pour le bouton Modifier
Private Sub CommandButton2_Click()
Dim Ligne As Long
Dim I As Integer

If MsgBox("Confirmez-vous la modification de ce contact ?", vbYesNo, "Demande de confirmation de modification") = vbYes Then
If Me.ComboBox1.ListIndex = -1 Then Exit Sub
Ligne = Me.ComboBox1.ListIndex + 2
Ws.Cells(Ligne, "B") = ComboBox2
For I = 1 To 7
If Me.Controls("TextBox" & I).Visible = True Then
Ws.Cells(Ligne, I + 2) = Me.Controls("TextBox" & I)
End If
Next I
End If
End Sub

'Pour le bouton Quitter
Private Sub CommandButton3_Click()
Unload Me
End Sub
A voir également:

1 réponse

cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729
28 janv. 2015 à 16:47
Bonjour,

Voilà:

Option Explicit
Dim Ws As Worksheet
Private Sub ComboBox1_Change()
Dim Ligne As Long
 Dim I As Integer
Set Ws = Sheets("Clients")
 If Me.ComboBox1.ListIndex = -1 Then Exit Sub
 Ligne = Me.ComboBox1.ListIndex + 2
 ComboBox2 = Ws.Cells(Ligne, "B")
 For I = 1 To 7
 Me.Controls("TextBox" & I) = Ws.Cells(Ligne, I + 2)
 Next I
End Sub
Private Sub CommandButton1_Click()
Dim L As Integer
 If MsgBox("Confirmez-vous l'insertion de ce nouveau contact ?", vbYesNo, "Demande de confirmation d'ajout") = vbYes Then
 L = Sheets("Clients").Range("a65536").End(xlUp).Row + 1 'Pour placer le nouvel enregistrement ? la premi?re ligne de tableau non vide
 Range("A" & L).Value = ComboBox1
 Range("B" & L).Value = ComboBox2
 Range("C" & L).Value = TextBox1
 Range("D" & L).Value = TextBox2
 Range("E" & L).Value = TextBox3
 Range("F" & L).Value = TextBox4
 Range("G" & L).Value = TextBox5
 Range("H" & L).Value = TextBox6
 Range("I" & L).Value = TextBox7
 End If
End Sub
Private Sub CommandButton2_Click()
Dim Ligne As Long
 Dim I As Integer
Set Ws = Sheets("Clients")
 If MsgBox("Confirmez-vous la modification de ce contact ?", vbYesNo, "Demande de confirmation de modification") = vbYes Then
 If Me.ComboBox1.ListIndex = -1 Then Exit Sub
 Ligne = Me.ComboBox1.ListIndex + 2
 Ws.Cells(Ligne, "B") = ComboBox2
 For I = 1 To 7
 If Me.Controls("TextBox" & I).Visible = True Then
 Ws.Cells(Ligne, I + 2) = Me.Controls("TextBox" & I)
 End If
 Next I
 End If
End Sub
Private Sub UserForm_Initialize()
Dim J As Long
 Dim I As Integer
ComboBox2.ColumnCount = 1 'Pour la liste d?roulante Civilit?
 ComboBox2.List() = Array("", "M.", "Mme", "Mlle")
 Set Ws = Sheets("Clients") 'Correspond au nom de votre onglet dans le fichier Excel
 With Me.ComboBox1
 For J = 2 To Ws.Range("A" & Rows.Count).End(xlUp).Row
 .AddItem Ws.Range("A" & J)
 Next J
 End With
 For I = 1 To 7
 Me.Controls("TextBox" & I).Visible = True
 Next I
End Sub


L' erreur venait des déclarations de variable et de nomination de la feuille.

Dim Ws As Worksheet
Set Ws = Sheets("Clients")


Mettre toujours Option Explicit, cela oblige a déclarer ses variable
0
Berouma Messages postés 10 Date d'inscription mercredi 28 janvier 2015 Statut Membre Dernière intervention 17 mars 2015
29 janv. 2015 à 08:51
Merci M. Pivert, je ne sais pas comment vous remercier je vais tenté avec ces codes et je vous donnerai la suite je vous souhaite une exellente journée merci infiniment
0
Berouma Messages postés 10 Date d'inscription mercredi 28 janvier 2015 Statut Membre Dernière intervention 17 mars 2015
29 janv. 2015 à 13:16
Les codes que vous m'avez donné sont bel et bien fonctionnel je dois maintenant les adapter au besoin de mon service merci encore un fois à bientôt
0
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729
29 janv. 2015 à 14:01
Content que cela fonctionne.
A une prochaine fois peut-être?

Le Pivert
0