Erreur d'exécution '-2147024809 (80070057)' : obje

Bonsoir à tous

j'ai rajouté à mon code userform une liste déroulante sur combobox en cascade (Combobox1_CLIENT et Combobox10_DOSSIER)

  • rajouté sub Alim_Combo
  • rajouté sub Combobox1_CLIENT_Change()
  • rajouté dans sub UserForm_Initialize() la partie sous les pointillés

et depuis

j'ai une erreur d'exécution lorsque je lance l'userform :

"erreur d'exécution '-2147024809 (80070057)' : objet spécifié introuvable"

voici les codes :

1/ pour lancer l'userform

[code][/Sub bouton1_clic()

UserForm.Show vbModeless

End Sub

code]

2/ le détail de l'userform

[code][/Private Sub Alim_Combo(CbxIndex As Integer, Optional Cible As Variant)

Dim j As Integer

Dim Obj As Control

Dim NbLignes As Integer

Dim Ws As Worksheet

'---------------------------------------------------

'Procédure pour alimenter le Combobox10_DOSSIER

'Définit le Combobox à remplir

Set Obj = Me.Controls("ComboBox" & CbxIndex)

'Supprime les anciennes données

Obj.Clear

'Alimente le combobx initial (Combobox1_CLIENT)

If CbxIndex = 1 Then

'Boucle sur les lignes de la colonne C (à partir de la 3ème ligne)

For j = 3 To NbLignes

Obj = Ws.Range("C" & j)

'Remplit le combobox sans doublons

If Obj.ListIndex = -1 Then Obj.AddItem Ws.Range("C" & j)

Next j

Else

'Alimentation conditionnelle des autres combobox en fonction de ce qui est sélectionné

'dans le contrôle précédent :

'(la sélection du Combobox1_CLIENT définit le contenu du Combobox10_DOSSIER,...)

For j = 3 To NbLignes

If Ws.Range("C" & j).Offset(0, CbxIndex - 2) = Cible Then

Obj = Ws.Range("C" & j).Offset(0, CbxIndex - 1)

If Obj.ListIndex = -1 Then Obj.AddItem Ws.Range("C" & j).Offset(0, CbxIndex - 1)

End If

Next j

End If

'Enlève la sélection dans le combobox

Obj.ListIndex = -1

End Sub

Private Sub ComboBox1_CLIENT_Change()

'Remplissage Combobox10_DOSSIER

Alim_Combo 2, ComboBox1_CLIENT.Value

End Sub

Private Sub ComboBox1_CLIENT_Enter()

'on indique nblignes et derlignes sont des variables

Dim NbLignes, derlignes As Variant

'on vide la zone de liste dont la propriété (name) = Combobox1_CLIENT

ComboBox1_CLIENT.Clear

'derlignes = à la dernière ligne saisie de la feuille "Clients" à partir de la ligne 2,colonne 2

derlignes = Sheets("Clients").Cells(2, 2).End(xlDown).Row

'à partir de la ligne 2 jusqu'à la dernière ligne

For NbLignes = 2 To derlignes

'on ajoute la valeur de la cellule située à la ligne nblignes, colonne 2 de la feuille paramètre

ComboBox1_CLIENT.AddItem Sheets("Clients").Cells(NbLignes, 2)

Next

End Sub

Private Sub ComboBox2_GAMME_Enter()

'on indique nblignes et derlignes sont des variables

Dim NbLignes, derlignes As Variant

'on vide la zone de liste dont la propriété (name) = Combobox_GAMME

ComboBox2_GAMME.Clear

'derlignes = à la dernière ligne saisie de la feuille "Notice" à partir de la ligne 2,colonne 1

derlignes = Sheets("Notice").Cells(2, 1).End(xlDown).Row

'à partir de la ligne 2 jusqu'à la dernière ligne

For NbLignes = 2 To derlignes

'on ajoute la valeur de la cellule située à la ligne nblignes, colonne 1 de la feuille paramètre

ComboBox2_GAMME.AddItem Sheets("Notice").Cells(NbLignes, 1)

Next

End Sub

Private Sub ComboBox3_Past1_Enter()

'on indique nblignes et derlignes sont des variables

Dim NbLignes, derlignes As Variant

'on vide la zone de liste dont la propriété (name) = Combobox3_Past1

ComboBox3_Past1.Clear

'derlignes = à la dernière ligne saisie de la feuille "Notice" à partir de la ligne 2,colonne 3

derlignes = Sheets("Notice").Cells(2, 3).End(xlDown).Row

'à partir de la ligne 2 jusqu'à la dernière ligne

For NbLignes = 2 To derlignes

'on ajoute la valeur de la cellule située à la ligne nblignes, colonne 3 de la feuille paramètre

ComboBox3_Past1.AddItem Sheets("Notice").Cells(NbLignes, 3)

Next

End Sub

Private Sub ComboBox4_Past2_Enter()

'on indique nblignes et derlignes sont des variables

Dim NbLignes, derlignes As Variant

'on vide la zone de liste dont la propriété (name) = Combobox4_Past2

ComboBox4_Past2.Clear

'derlignes = à la dernière ligne saisie de la feuille "Notice" à partir de la ligne 2,colonne 3

derlignes = Sheets("Notice").Cells(2, 3).End(xlDown).Row

'à partir de la ligne 2 jusqu'à la dernière ligne

For NbLignes = 2 To derlignes

'on ajoute la valeur de la cellule située à la ligne nblignes, colonne 3 de la feuille paramètre

ComboBox4_Past2.AddItem Sheets("Notice").Cells(NbLignes, 3)

Next

End Sub

Private Sub ComboBox5_FORMAT_Enter()

'on indique nblignes et derlignes sont des variables

Dim NbLignes, derlignes As Variant

'on vide la zone de liste dont la propriété (name) = Combobox5_FORMAT

ComboBox5_FORMAT.Clear

'derlignes = à la dernière ligne saisie de la feuille "Notice" à partir de la ligne 2,colonne 5

derlignes = Sheets("Notice").Cells(2, 5).End(xlDown).Row

'à partir de la ligne 2 jusqu'à la dernière ligne

For NbLignes = 2 To derlignes

'on ajoute la valeur de la cellule située à la ligne nblignes, colonne 5 de la feuille paramètre

ComboBox5_FORMAT.AddItem Sheets("Notice").Cells(NbLignes, 5)

Next

End Sub

Private Sub ComboBox6_PELL_Enter()

'on indique nblignes et derlignes sont des variables

Dim NbLignes, derlignes As Variant

'on vide la zone de liste dont la propriété (name) = Combobox4_Past2

ComboBox6_PELL.Clear

'derlignes = à la dernière ligne saisie de la feuille "Notice" à partir de la ligne 13,colonne 1

derlignes = Sheets("Notice").Cells(13, 1).End(xlDown).Row

'à partir de la ligne 13 jusqu'à la dernière ligne

For NbLignes = 13 To derlignes

'on ajoute la valeur de la cellule située à la ligne nblignes, colonne 1 de la feuille paramètre

ComboBox6_PELL.AddItem Sheets("Notice").Cells(NbLignes, 1)

Next

End Sub

Private Sub ComboBox7_DECOUPE_Enter()

'on indique nblignes et derlignes sont des variables

Dim NbLignes, derlignes As Variant

'on vide la zone de liste dont la propriété (name) = Combobox7_DECOUPE

ComboBox7_DECOUPE.Clear

'derlignes = à la dernière ligne saisie de la feuille "Notice" à partir de la ligne 13,colonne 3

derlignes = Sheets("Notice").Cells(13, 3).End(xlDown).Row

'à partir de la ligne 13 jusqu'à la dernière ligne

For NbLignes = 13 To derlignes

'on ajoute la valeur de la cellule située à la ligne nblignes, colonne 3 de la feuille paramètre

ComboBox7_DECOUPE.AddItem Sheets("Notice").Cells(NbLignes, 3)

Next

End Sub

Private Sub ComboBox8_CODEFACT_Change()

'dès qu'un code de facturation est choisi, le PRIX se met à jour

recherche

End Sub

Private Sub recherche()

Dim NbLg As Long

Dim Cel As Range

Me.TextBox17_PRIX = ""

' Si Combobox8_CODEFACT = "" ou pas de choix code facturation on quitte

If Me.ComboBox8_CODEFACT.ListIndex = -1 Then Exit Sub

Application.ScreenUpdating = False

With Sheets("Tarifs") ' Page de travail

NbLg = .Range("A" & Rows.Count).End(xlUp).Row ' Nombre de ligne dans la base

' Recherche dans cette colonne la valeur de ComboBox8_CODEFACT

Set Cel = .Columns("a").Find(what:=Me.ComboBox8_CODEFACT, LookIn:=xlValues, lookat:=xlWhole)

If Not Cel Is Nothing Then

Me.Label25_PRIX.Visible = False

' Chaine trouvée

Me.TextBox17_PRIX = Cel.Offset(0, 3) ' On note le prix

Else

' Sinon on affiche le message

Me.Label25_PRIX.Visible = True

End If

End With

End Sub

Private Sub ComboBox8_CODEFACT_Enter()

'on indique nblignes et derlignes sont des variables

Dim NbLignes, derlignes As Variant

'on vide la zone de liste dont la propriété (name) = Combobox8_CODEFACT

ComboBox8_CODEFACT.Clear

'derlignes = à la dernière ligne saisie de la feuille "Tarifs" à partir de la ligne 2,colonne 1

derlignes = Sheets("Tarifs").Cells(2, 1).End(xlDown).Row

'à partir de la ligne 2 jusqu'à la dernière ligne

For NbLignes = 2 To derlignes

'on ajoute la valeur de la cellule située à la ligne nblignes, colonne 1 de la feuille paramètre

ComboBox8_CODEFACT.AddItem Sheets("Tarifs").Cells(NbLignes, 1)

Next

End Sub

Private Sub ComboBox9_CLIENTFACT_Enter()

'on indique nblignes et derlignes sont des variables

Dim NbLignes, derlignes As Variant

'on vide la zone de liste dont la propriété (name) = Combobox9_CLIENTFACT

ComboBox9_CLIENTFACT.Clear

'derlignes = à la dernière ligne saisie de la feuille "Clients2" à partir de la ligne 2,colonne 7

derlignes = Sheets("Clients2").Cells(2, 7).End(xlDown).Row

'à partir de la ligne 2 jusqu'à la dernière ligne

For NbLignes = 2 To derlignes

'on ajoute la valeur de la cellule située à la ligne nblignes, colonne 7 de la feuille paramètre

ComboBox9_CLIENTFACT.AddItem Sheets("Clients2").Cells(NbLignes, 7)

Next

End Sub

Private Sub CommandButton_ANNULER_Click()

Dim Confirmation As Variant

Confirmation = MsgBox("Confirmez-vous l'abandon de la saisie ?" & Chr(10) & "(Si vous confirmez, votre saisie ne sera pas enregistrée)", vbYesNo, "Confirmation d'annulation")

If Confirmation = vbYes Then

Unload UserForm

End If

End Sub

Private Sub CommandButton_VALIDER_Click()

Dim derlignes As Variant

' 1ère ligne disponible : ce code va parce qu'aucune ligne n'est vide au début (lignes 1 et 2 remplies)

derlignes = 1

Sheets("commandes").Select

Do While Cells(derlignes, 1) <> ""

derlignes = derlignes + 1

Loop

'saisie du numéro de commande, information alignée à droite

Cells(derlignes, 1) = TextBox4_NUMCOMMANDE

Cells(derlignes, 1).HorizontalAlignment = xlRight

Cells(derlignes, 1) = Format(TextBox4_NUMCOMMANDE.Value, "00000") * 1

'saisie de la date, information alignée à droite

Cells(derlignes, 2) = TextBox3_DATE

Cells(derlignes, 2) = Date

Cells(derlignes, 2).HorizontalAlignment = xlRight

'saisie du nom du CLIENT

Cells(derlignes, 3) = ComboBox1_CLIENT

'saisie du nom du CLIENT FINAL

Cells(derlignes, 4) = ComboBox9_CLIENTFACT

'saisie du dossier

Cells(derlignes, 5) = ComboBox10_DOSSIER

'saisie de la QUANTITE, information alignée à droite

Cells(derlignes, 6) = TextBox5_QTE

Cells(derlignes, 6).HorizontalAlignment = xlRight

'saisie de la GAMME

Cells(derlignes, 7) = ComboBox2_GAMME

'saisie de la Pastille 1

Cells(derlignes, 8) = ComboBox3_Past1

'saisie de la Pastille 2

Cells(derlignes, 9) = ComboBox4_Past2

'saisie de la FORMAT

Cells(derlignes, 10) = ComboBox5_FORMAT

'saisie de la PELLICULAGE

Cells(derlignes, 11) = ComboBox6_PELL

'saisie de la DECOUPE

Cells(derlignes, 12) = ComboBox7_DECOUPE

'saisie du DELAI

Cells(derlignes, 13) = TextBox8

'saisie du RETIRAGE / N° PLANCHE

Cells(derlignes, 14) = TextBox6

'saisie du RETIRAGE / N° COMMANDE

Cells(derlignes, 15) = TextBox7

'saisie de la DATE de VALIDATION

Cells(derlignes, 16) = TextBox9

'saisie de la REF PLANCHE

Cells(derlignes, 17) = TextBox10

'saisie de la DATE EXPEDITION

Cells(derlignes, 18) = TextBox11

'saisie des OBSERVATIONS

'pour pouvoir écrire plusieurs lignes, dans userform mettre MULTILINE à TRUE

'pour sauter une ligne : CTRL+ENTREE

Cells(derlignes, 19) = TextBox12

'saisie du CODE FACTURATION

Cells(derlignes, 20) = ComboBox8_CODEFACT

'saisie du PRIX

Cells(derlignes, 21) = TextBox17_PRIX

Cells(derlignes, 21) = Format(TextBox17_PRIX.Value, "#,00") * 1

'saisie des FRAIS MAQUETTE

Cells(derlignes, 22) = TextBox13

Cells(derlignes, 22) = Format(TextBox13.Value, "#,00")

'saisie de la REMISE

Cells(derlignes, 23) = TextBox14

'saisie des FRAIS DECOUPE

Cells(derlignes, 24) = TextBox15

'saisie du PORT

If TextBox16.Value <> Empty Then Cells(derlignes, 25) = TextBox16 _

Else Cells(derlignes, 25) = 0

'calcul TOTAL HT

Cells(derlignes, 26) = TextBox18_TOTALHT

Cells(derlignes, 26) = Format(TextBox18_TOTALHT.Value, "#,00") * 1

'calcul TTC

Cells(derlignes, 27) = TextBox18_TOTALHT * 1.2

Unload UserForm

End Sub

Private Sub TextBox13_Change()

'MAQUETTE participe au TOTAL HT

calculHT

End Sub

Private Sub TextBox14_Change()

'REMISE participe au TOTAL HT

calculHT

End Sub

Private Sub TextBox15_Change()

'DECOUPE participe au TOTAL HT

calculHT

End Sub

Private Sub TextBox16_Change()

'PORT participe au TOTAL HT

calculHT

End Sub

Private Sub TextBox17_PRIX_Change()

'PRIX Code Facturation participe au TOTAL HT

calculHT

End Sub

Private Sub calculHT()

TextBox18_TOTALHT = (Val(TextBox17_PRIX.Value) + Val(TextBox13.Value) - Val(TextBox14.Value) / 100 * Val(TextBox17_PRIX.Value) + Val(TextBox15.Value) + Val(TextBox16.Value))

End Sub

Private Sub UserForm_Initialize()

'N° commande automatique

Me.TextBox4_NUMCOMMANDE.Value = Sheets("Commandes").Range("A" & Rows.Count).End(xlUp).Value + 1

'Date automatique

Me.TextBox3_DATE.Value = Date

'------------------------------------------------------

'Procédure pour liste déroulante sur Combobox_CLIENT / Combobox_DOSSIER en cascade

'Les données sont dans les colonnes C et E de l'onglet COMMANDES

'La procédure effectue un remplissage conditionnel du Combobox_DOSSIER en fonction de ce qui est sélectionné

'dans le Combobox_CLIENT (combobx précédent) :

'la sélection du Combobox1_CLIENT (données colonne C) définit le contenu du Combobox10_DOSSIER

'(données colonne E)

Dim Ws As Worksheet

Dim NbLignes As Integer

'Définit la feuille contenant les données

Set Ws = Worksheets("Commandes")

'Définit le nombre de lignes dans la colonne C

NbLignes = Ws.Range("C65536").End(xlUp).Row

'Remplissage du Combobox1_CLIENT

Alim_Combo 1

End Sub

code]

Je veux bien votre aide !!

Rechercher des sujets similaires à "erreur execution 2147024809 80070057 obje"