Erreur d'exécution '9

Bonjour à Tous,

J'ai besoin d'aide sur un code VBA dont je n'arrive pas à trouver la cause de l'erreur d'exécution '9'. J'ai passé des heures à chercher, mais je ne suis pas assez performant en VBA. Mon codage est le suivant (voir fichier Excel joint):

Option Explicit

Dim Ws As Worksheet

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

D'avance merci pour votre aide et à charge de revanche.

Bien cordialement,

Mickael,

14fichier-client.xlsm (28.81 Ko)

Bonjour,

Je ne sais pas où tu as pris l'idée de mettre des espaces entres les mots et les guillemets.

Au lieu de Sheets(" Clients ")

Ce doit être Sheets("Clients")

Ou encore

Au lieu de Ws.Range(" A " & Rows.Count).End(xlUp).Row

Ce doit être Ws.Range("A" & Rows.Count).End(xlUp).Row

Et encore

Remplacer : .AddItem Ws.Range(" A " & J)

Par : .AddItem Ws.Range("A" & J)

Quand tu avances dans ton code, utilise le mode pas-à-pas ( touche F8 ) pour défiler le code ligne par ligne. Ça aide la trouver les erreurs.

ric

Bonjour RIC

Merci pour ta réponse. Je débute en VBA.

Quand je code, certains espaces se générent automatiquement. Je vais essayer de faire du nettoyage à l'aide de F8.

Il semble que j'ai une erreur sur la ligne 28:

Me.Controls("TextBox" & I).Visible = True

Pour ce fichier j'ai récupéré le code sur internet; je n'ai pas encore le niveau pour concevoir un code aussi complexe. Je souhaite utiliser ce programme pour mon boulot.

Bonjour,

Après avoir nettoyé le code du formulaire et corrigé l'ordre des colonnes dans le code ... l'utilisation du Userform pour l'ajout ou la modification semble fonctionner correctement.

Voir si ça convient.

ric

Bonjour

un peux de nettoyage

A+

Maurice

Option Explicit
Dim Ws As Worksheet

Private Sub UserForm_Initialize()
Dim J As Long
'Dim I As Integer
Set Ws = Feuil1 'Correspond au CodeName  de votre onglet dans le fichier Excel
    With ComboBox1
        For J = 2 To Ws.Range("A" & Rows.Count).End(xlUp).Row
            .AddItem Ws.Range("A" & J)
        Next J
    End With

    ComboBox2.List() = Array("  ", "M.", "Mme", "Mlle")

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.Value = Ws.Cells(Ligne, 2)
    For I = 1 To 7
        Controls("TextBox" & I) = Ws.Cells(Ligne, I + 2)
    Next I
End Sub

#RIC et #Maurice

Merci pour votre aide précieuse. Oui tout semble fonctionner.

Je vais essayer de décortiquer le code pour le comprendre. (pour le moment je suis en train de suivre le cours VBA du Forum).

Un GRAND merci à vous 2!

Mickaël,

bonsoir

la suite

 'Pour le bouton Nouveau contact
Private Sub CommandButton1_Click()
Dim L&, I&
    If MsgBox(" Confirmez-vous l?insertion de ce nouveau contact ? ", vbYesNo, " Demande de confirmation d?ajout ") = vbYes Then
        With Ws
            L = .Range("A" & Rows.Count).End(xlUp).Row + 1
                .Range(" A " & L).Value = ComboBox1 ' a revoir
                .Range(" B " & L).Value = ComboBox2
                For I = 1 To 7
                    .Cells(L, I + 2) = Controls("TextBox" & I)
                Next I
        End With
    End If
End Sub

tu veux quoi pour les Références

A+

Maurice

Rechercher des sujets similaires à "erreur execution"