Formulaire vba erreur

nikkox31

XLDnaute Nouveau
Bonjour,

j'ai réalisé pour la première fois un formulaire avec 2 combobox, 17 textbox et 3 commandbutton

je ne comprends pas cela ne fonctionne pas j'ai un message d'erreur d’exécution - objet spécifié introuvable !

pouvez vous m'aider svp ? :eek:

voici mon userform
'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 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 17
Me.Controls("TextBox" & S).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 17
Me.Controls("TextBox" & S) = 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
Range("J" & L).Value = TextBox8
Range("K" & L).Value = TextBox9
Range("L" & L).Value = TextBox10
Range("M" & L).Value = TextBox11
Range("N" & L).Value = TextBox12
Range("O" & L).Value = TextBox13
Range("P" & L).Value = TextBox14
Range("Q" & L).Value = TextBox15
Range("R" & L).Value = TextBox16
Range("S" & L).Value = TextBox17
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 17
If Me.Controls("TextBox" & S).Visible = True Then
Ws.Cells(Ligne, I + 2) = Me.Controls("TextBox" & S)
End If
Next I
End If
End Sub

'Pour le bouton Quitter
Private Sub CommandButton3_Click()
Unload Me
End Sub
End Sub
 

nikkox31

XLDnaute Nouveau
Re : Formulaire vba erreur

Bonjour nikkox31, Loup solitaire

Le travail est fait, c'est parfait :eek:

Pour Me.ComboBox1.ListIndex + 2, effectivement, j'étais sur le fichier et j'avais supprimé la première ligne vide.

Je me suis permis d'apporter quelques modifications pour le bouton nouveau contact:
Incrémentation automatique du Code client et effacement des contrôles après enregistrement pour nouvelle saisie.

'Pour le bouton Nouveau contact
Private Sub CommandButton1_Click()
Dim L As Integer, col As Long
Dim ctrl As Control

If MsgBox("Confirmez-vous l’insertion de ce nouveau contact ?", vbYesNo, "Demande de confirmation d’ajout") = vbYes Then
Set Ws = Sheets("Clients")

With Ws
L = .Range("A65536").End(xlUp).Row + 1 'Pour placer le nouvel enregistrement à la première ligne de tableau non vide
'Incrémentation automatique du Code client
If Not IsNumeric(Cells(L - 1, 1)) Then 'Premier code client
Cells(L, 1) = "0000" & 1
Else
.Cells(L, 1) = "0000" & Cells(L - 1, 1) + 1
End If
.Cells(L, 2) = ComboBox2
For Each ctrl In Me.Controls
If TypeName(ctrl) = "TextBox" Then
col = Val(ctrl.Tag)
If col > 0 Then
If Not IsNumeric(ctrl) Then
.Cells(L, col) = ctrl
Else
.Cells(L, col) = CDbl(ctrl) 'format numérique simple ex: 3124
End If
End If
End If
Next ctrl
.Range("j3:k65000").NumberFormat = "000 000 00 00" 'Numéro téléphone et portable
End With
End If
'Efface les controles pour nouvelle saisie
For Each ctrl In Me.Controls
If TypeName(ctrl) = "TextBox" Then
ctrl = ""
End If
Next
Me.ComboBox2.ListIndex = -1
L = Ws.Range("A65536").End(xlUp).Row
Me.ComboBox1.RowSource = "Clients!A3:A" & L
Me.ComboBox1.ListIndex = -1
End Sub



Je pense que pour trouver un client tu devrais faire la recherche par Nom et non par code

@chris24
Wouaw je suis super content du resultat c'est vraiment top incrémentation du code auto c'est vraiment une excellente idée :)

j'y ai pensé pour la recherche par nom mais j'ai deja du mal avec des choses simple mais si pour toi c'est possible alors je suis preneur avec grand plaisir même !
 

nikkox31

XLDnaute Nouveau
Re : Formulaire vba erreur

Bonjour à toutes et à tous :)

@nikkox

Ton fichier en retour avec l'ajout du téléphone portable et modification du code d'enregistrement. J'ai fait les tests et chez moi pas de problèmes. Double-clique sur la feuille pour afficher le formulaire. Et Me.ComboBox1.ListIndex + 2 c'est faux, il fallait mettre + 3.
La valeur ListIndex est égale à 0 pour la 1ère ligne , 1 pour la 2ème ligne ...etc...

@Lone-wolf un grand merci pour ce fichier vraiment top, @chris24 m'a ajouté également d'autres nouvelles modif. par contre petite question est il possible d'ouvrir le formulaire des l'ouverture du fichier et a la taille de l'ecran sans voir le fichier derriere ?
merci d'avance pour ton aide.
Nikkox
 

Lone-wolf

XLDnaute Barbatruc
Re : Formulaire vba erreur

Re nikkox,

Code:
Private Sub Workbook_Open()
Application.WindowState = xlMinimized
UserForm1.Show
End Sub

Maintenant pour l'avoir à la taille de l'écran, je ne vois pas trop l'utilité. En plus je suis sur un portable, et c'est un peu compliqué pour tester.
 

Chris24

XLDnaute Impliqué
Re : Formulaire vba erreur

Bonsoir

Une question me taraude, comment le fichier original de 24 Ko a pris un tel embonpoint en passant chez Lone-Wolf 627 Ko? Et comment il a pu passer en pièce jointe?

La limite du forum est à priori de 293 Ko

Bizarre, j'ai dit bizarre

Bonne soirée :confused:

Edit:

Euréka j'ai trouvé. le format de certaines cellules était étendu sur 65000 lignes. Le fichier est revenu à un poids plus raisonnable :eek:
 
Dernière modification par un modérateur:

Chris24

XLDnaute Impliqué
Re : Formulaire vba erreur

Bonsoir

J'ai effectué quelques modifications.
Recherche par nom.
Pour saisir un nouveau client clic sur le bouton Nouveau contact.
Choix du mode de règlement par liste, tu peux ajouter un nouveau mode de règlement par saisie directe dans la liste.
intégration du dernier code de Lone-Wolf
Pour ce qui est du plein écran j'avais un code pour Excel97 en 32 bits qui bien évidemment ne fonctionne plus sur excel2010 et en 64 bits

Bon Test
 

Pièces jointes

  • fiche ouverture client formulaire (4).xlsm
    39.2 KB · Affichages: 27
  • fiche ouverture client formulaire (4).xlsm
    39.2 KB · Affichages: 24

nikkox31

XLDnaute Nouveau
Re : Formulaire vba erreur

Bonsoir

J'ai effectué quelques modifications.
Recherche par nom.
Pour saisir un nouveau client clic sur le bouton Nouveau contact.
Choix du mode de règlement par liste, tu peux ajouter un nouveau mode de règlement par saisie directe dans la liste.
intégration du dernier code de Lone-Wolf
Pour ce qui est du plein écran j'avais un code pour Excel97 en 32 bits qui bien évidemment ne fonctionne plus sur excel2010 et en 64 bits

Bon Test

Bonjour a tous,

@chris24, encore merci pour les modifications elles sont parfaites, j'ai juste un soucis pour la recherche car lorsque je clique sur un nom j'ai une erreur d’exécution objet introuvable
J'ai essayé quelques trucs mais sans grand succès..

Pour le plein écran dans vais juste mettre a la plus grande taille possible et ca fera l'affaire. :)
En tout cas merci beaucoup

c'est top !! :)
 

Chris24

XLDnaute Impliqué
Re : Formulaire vba erreur

Bonsoir

Effectivement j'ai remplacé le textbox15 par la liste des modes de paiement, la boucle ne le trouve pas et génère une erreur.

rajoute simplement la ligne en rouge et tout rentrera dans l'ordre (en principe :)

'Pour la liste déroulante client
Private Sub ComboBox1_Change()
Dim Ligne As Integer, S As Integer
On Error Resume Next
Set Ws = Sheets("Clients")
If Me.ComboBox1.ListIndex = -1 Then Exit Sub
Ligne = Me.ComboBox1.ListIndex + 3
ComboBox2 = Ws.Cells(Ligne, 2)
For S = 4 To 20
Me.Controls("TextBox" & S) = Ws.Cells(Ligne, S)
Next S
Me.TextBox3.Visible = False
Me.Label3.Visible = False
End Sub

Bonne soirée
 

Chris24

XLDnaute Impliqué
Re : Formulaire vba erreur

Bonjour

Le fichier en retour avec les modifications du code pour le bouton "modifier"

Normalement le fichier est opérationnel (sauf erreurs ou omissions) :rolleyes:

Bonne journée
 

Pièces jointes

  • fiche ouverture client formulaire (4).xlsm
    40.1 KB · Affichages: 26
  • fiche ouverture client formulaire (4).xlsm
    40.1 KB · Affichages: 30

Statistiques des forums

Discussions
311 720
Messages
2 081 896
Membres
101 833
dernier inscrit
sandra25