VBA Excel 2010 (formulaire personnalisé)
Résolu
Berouma
Messages postés
10
Date d'inscription
Statut
Membre
Dernière intervention
-
cs_Le Pivert Messages postés 7904 Date d'inscription Statut Contributeur Dernière intervention -
cs_Le Pivert Messages postés 7904 Date d'inscription Statut Contributeur Dernière intervention -
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
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:
- VBA Excel 2010 (formulaire personnalisé)
- Whatsapp formulaire opposition - Guide
- Comment faire un tri personnalisé sur excel - Guide
- Liste déroulante excel - Guide
- Formulaire de réclamation facebook - Guide
- Word et excel gratuit - Guide
1 réponse
Bonjour,
Voilà:
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
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
A une prochaine fois peut-être?
Le Pivert