Userform initialize en jaune ssss
Bonjour à tous.
J'ai le code ci-dessous dans un userform qui fonctionne très bien et qui me permet de remplir des cellules sur une feuille qui se nomme facture.
(je tape une lettre dans l'une des combobox et il me donne tous les noms commencant par cette lettre "facon google")
Dim a(), b(), d()
Private Sub TraiterCheckBox()
If Me.CheckBox1 = True Then
Sheets("Facture").CheckBox1 = True
Else
Sheets("Facture").CheckBox1 = False
End If
If Me.CheckBox2 = True Then
Sheets("Facture").CheckBox2 = True
Else
Sheets("Facture").CheckBox2 = False
End If
If Me.CheckBox3 = True Then
Sheets("Facture").CheckBox3 = True
Else
Sheets("Facture").CheckBox3 = False
End If
If Me.CheckBox4 = True Then
Sheets("Facture").CheckBox4 = True
Else
Sheets("Facture").CheckBox4 = False
End If
If Me.CheckBox5 = True Then
Sheets("Facture").CheckBox5 = True
Else
Sheets("Facture").CheckBox5 = False
End If
If Me.CheckBox6 = True Then
Sheets("Facture").CheckBox6 = True
Else
Sheets("Facture").CheckBox6 = False
End If
CmdButtonAnnuler_Click
End Sub
Private Sub CmdButtonAnnuler_Click()
End
End Sub
Private Sub CmdButtonGenererDevis_Click()
With Sheets("Facture")
.[L9] = Me.ComboBoxAdressesSites
.[L11] = Me.ComboBoxClients
.[C21] = Me.ComboBoxTypeProtection.Value ' à revoir
.[M20] = Me.TextBox13 ' remplacer XXXX par l'adresse où écrire dans la feuille DEVIS
.[N15] = Val(TextBox3)
.[M21] = Val(TextBox12)
.[M22] = Val(TextBox14)
.[M23] = Val(TextBox9)
.[M24] = Val(TextBox10)
.[n26] = Val(TextBox11)
End With
TraiterCheckBox
End Sub
Private Sub ComboBoxAdressesSites_Change()
Set D1 = CreateObject("Scripting.Dictionary")
x = Replace(Replace(Me.ComboBoxAdressesSites, ".", ""), " ", "")
tmp = "*"
For i = 1 To Len(x): tmp = tmp & Mid(x, i, 1) & "*": Next i
tmp = UCase(tmp)
For Each c In d
tmp2 = "*" & Replace(Replace(c, ".", ""), " ", "") & "*"
If UCase(tmp2) Like tmp Then D1(c) = ""
Next c
Me.ComboBoxAdressesSites.List = D1.keys
Me.ComboBoxAdressesSites.DropDown
End Sub
Private Sub ComboBoxClients_Change()
tmp = UCase(Me.ComboBoxClients) & "*"
Set MonDico = CreateObject("Scripting.Dictionary")
Debug.Print tmp
For Each c In a
If c Like tmp Then MonDico(c) = ""
Next c
Me.ComboBoxClients.List = MonDico.keys
Me.ComboBoxClients.DropDown
End Sub
Private Sub UserForm_Initialize()
a = [listeclientg].Value
Me.ComboBoxClients.List = a
Me.ComboBoxClients.MatchEntry = 2
b = [kitbase].Value
Me.ComboBoxTypeProtection.List = b
Me.ComboBoxClients.MatchEntry = 2
d = [adressechantier].Value
Me.ComboBoxAdressesSites.List = d
End Sub
J'ai creer un autre userform, qui est censé faire la meme chose mais sur une autre feuille, j'ai appliquer le code en renommant correctement le nom de la feuille et en ayant supprimer quelque cellule à recopier. et des que j'ouvre le formulaire, j'ai une erreur en jaune sur Private Sub UserForm_Initialize() et en bleu sur ComboBoxClients
et m’écris erreur de compilation membre de methode ou de données introuvable.
voici le code
Dim a(), b(), d()
Private Sub TraiterCheckBox()
If Me.CheckBox1 = True Then
Sheets("facture electrique").CheckBox1 = True
Else
Sheets("facture electrique").CheckBox1 = False
End If
If Me.CheckBox2 = True Then
Sheets("facture electrique").CheckBox2 = True
Else
Sheets("facture electrique").CheckBox2 = False
End If
If Me.CheckBox6 = True Then
Sheets("facture electrique").CheckBox6 = True
Else
Sheets("facture electrique").CheckBox6 = False
End If
CmdButtonAnnuler_Click
End Sub
Private Sub CmdButtonAnnuler_Click()
End
End Sub
Private Sub CmdButtonGenererDevis_Click()
With Sheets("Facture electrique")
.[K6] = Me.ComboBoxAdressesSites
.[K8] = Me.ComboBoxClients
.[C20] = Me.ComboBoxTypeProtection.Value
.[L15] = Me.TextBox13 ' remplacer XXXX par l'adresse où écrire dans la feuille DEVIS
.[L16] = Me.TextBox12
.[L21] = Val(TextBox14)
.[M15] = Val(TextBox3)
.[M16] = Val(TextBox15)
.[M21] = Val(TextBox14)
End With
TraiterCheckBox
End Sub
Private Sub ComboBoxAdressesSites_Change()
Set D1 = CreateObject("Scripting.Dictionary")
x = Replace(Replace(Me.ComboBoxAdressesSites, ".", ""), " ", "")
tmp = "*"
For i = 1 To Len(x): tmp = tmp & Mid(x, i, 1) & "*": Next i
tmp = UCase(tmp)
For Each c In d
tmp2 = "*" & Replace(Replace(c, ".", ""), " ", "") & "*"
If UCase(tmp2) Like tmp Then D1(c) = ""
Next c
Me.ComboBoxAdressesSites.List = D1.keys
Me.ComboBoxAdressesSites.DropDown
End Sub
Private Sub ComboBoxClients_Change()
tmp = UCase(Me.ComboBoxClients) & "*"
Set MonDico = CreateObject("Scripting.Dictionary")
Debug.Print tmp
For Each c In a
If c Like tmp Then MonDico(c) = ""
Next c
Me.ComboBoxClients.List = MonDico.keys
Me.ComboBoxClients.DropDown
End Sub
Private Sub UserForm_Initialize()
a = [listeclientg].Value
Me.ComboBoxClients.List = a
Me.ComboBoxClients.MatchEntry = 2
b = [kitbase].Value
Me.ComboBoxTypeProtection.List = b
Me.ComboBoxClients.MatchEntry = 2
d = [adressechantier].Value
Me.ComboBoxAdressesSites.List = d
End Sub
C'est un membre du forum qui m'avait aidé pour realiser ceci, mais là j'avoue que je séche grave !! de 21h à 5h du matin et la depuis 13h je cherche et je cherche, mes yeux se ferment, lol aider moi svp.
Pas facile de mettre le fichier en ligne, mais si c'est vraiment nécessaire je le ferais.
merci par avance.
Ah je viens de trouver, c'est mes deux combobox qui etait mal nommée.
merci
rebonjour tous le monde
par contre maintenant quand j'ouvre mon formulaire en cliquant sur mon bouton qui à comme code
Sub goformulairefactureelectrique()
formulairefactelect.Show
End Sub
il me fait une erreur 438 et me surligne en jaune formulairefactelect.show
Aidez moi je vous en supplie
bonjour
ton userform s'appel bien formulairefactelect ??
pas de faute d'orthographe ou autre ???
et avec un fichier cela serait plus facile....
fred
Je veut bien fournir un classeur, mais il n'y aura que la feuille et l'userform et les codes.
il n'y aura pas les feuilles pour les combobox. pas grave?
Voici le classeur exemple.
Sur celui ci ca me donne une erreur 424 objet requis alors que sur mon classeur orinale, ca me donne bien l'erreur dans mon post precedent.
Je suis perdu la au secours
Quand je place en commentaire le code suivant le formulaire s'ouvre :
en tapotant F8 il bloque a la ligne a = [listeclientg].Value
'Private Sub UserForm_Initialize()
a = [listeclientg].Value
Me.ComboBoxClients.List = a
Me.ComboBoxClients.MatchEntry = 2
b = [kitbase].Value
Me.ComboBoxTypeProtection.List = b
Me.ComboBoxClients.MatchEntry = 2
d = [adressechantier].Value
Me.ComboBoxAdressesSites.List = d
factelecvierge
End Sub
j'approche de l'erreur lol mais je ne comprend pas.
J'ai ce meme code sur ma feuille devis, et il fonctionne, sur ma feuille facture et il fonctionne, et la sur ma feuille facture electrique ca ne fonctionne pas.
c'est pas quelques chose de nommer dans le scripting dictionnary, je connais pas du tout cela
dans ton fichier original
est-ce que dans ton gestionnaire de noms tu as des #ref comme dans mon image précédente ou tu as des valeurs ???
fred
c'est identique, et pourtant cette meme methode et ce meme code fonctionne sur deux autres formulaires (pour mes devis et facture normal)
pour facture electrique, il bug.
Essai de mettre ces trois lignes en commentaire
a = [listeclientg].Value
Me.ComboBoxClients.List = a
Me.ComboBoxClients.MatchEntry = 2
pour voir si cela vient seulement de listeclientg ou aussi sur kitbase et adressechantier
mais comme tu dit c'est identique cela veut dire que tu as des #ref ???
fred
En faite kit de base et typedeprotection je ne m'en sert pas sur cet userform,
J'ai tenté de supprimé mais je me paume avec lettre a b c d
je comprend rien lol
En mettant le commentaire ici, le formulaire s'ouvre mais je n'ai pas la liste dans les combobox (normal !! )
'Private Sub UserForm_Initialize()
a = [listeclientg].Value
Me.ComboBoxClients.List = a
Me.ComboBoxClients.MatchEntry = 2
b = [kitbase].Value
Me.ComboBoxTypeProtection.List = b
Me.ComboBoxClients.MatchEntry = 2
d = [adressechantier].Value
Me.ComboBoxAdressesSites.List = d
factelecvierge
End Sub
Donc a mon avis tu as un problème avec ta déclaration dans le gestionnaire de nom de ta variable listeclientg
je te conseil d'en refaire une autre dans un premier temps définir la plage manuellement (comme les autres variables) et si cela fonctionne de repasser avec une fonction decaler...
fred
Voici le code de l'userform pour remplir mes factures. ca fonctionne nickel
Dim a(), b(), d()
Private Sub TraiterCheckBox()
If Me.CheckBox1 = True Then
Sheets("Facture").CheckBox1 = True
Else
Sheets("Facture").CheckBox1 = False
End If
If Me.CheckBox2 = True Then
Sheets("Facture").CheckBox2 = True
Else
Sheets("Facture").CheckBox2 = False
End If
If Me.CheckBox3 = True Then
Sheets("Facture").CheckBox3 = True
Else
Sheets("Facture").CheckBox3 = False
End If
If Me.CheckBox4 = True Then
Sheets("Facture").CheckBox4 = True
Else
Sheets("Facture").CheckBox4 = False
End If
If Me.CheckBox5 = True Then
Sheets("Facture").CheckBox5 = True
Else
Sheets("Facture").CheckBox5 = False
End If
If Me.CheckBox6 = True Then
Sheets("Facture").CheckBox6 = True
Else
Sheets("Facture").CheckBox6 = False
End If
CmdButtonAnnuler_Click
End Sub
Private Sub CmdButtonAnnuler_Click()
End
End Sub
Private Sub CmdButtonGenererDevis_Click()
plusfor
With Sheets("Facture")
.[L9] = Me.ComboBoxAdressesSites
.[L11] = Me.ComboBoxClients
.[C21] = Me.ComboBoxTypeProtection.Value ' à revoir
.[M20] = Me.TextBox13 ' remplacer XXXX par l'adresse où écrire dans la feuille DEVIS
.[N15] = Val(TextBox3)
.[M21] = Val(TextBox12)
.[M22] = Val(TextBox14)
.[M23] = Val(TextBox9)
.[M24] = Val(TextBox10)
.[n26] = Val(TextBox11)
End With
TraiterCheckBox
End Sub
Private Sub ComboBoxAdressesSites_Change()
Set D1 = CreateObject("Scripting.Dictionary")
x = Replace(Replace(Me.ComboBoxAdressesSites, ".", ""), " ", "")
tmp = "*"
For i = 1 To Len(x): tmp = tmp & Mid(x, i, 1) & "*": Next i
tmp = UCase(tmp)
For Each c In d
tmp2 = "*" & Replace(Replace(c, ".", ""), " ", "") & "*"
If UCase(tmp2) Like tmp Then D1(c) = ""
Next c
Me.ComboBoxAdressesSites.List = D1.keys
Me.ComboBoxAdressesSites.DropDown
End Sub
Private Sub ComboBoxClients_Change()
tmp = UCase(Me.ComboBoxClients) & "*"
Set MonDico = CreateObject("Scripting.Dictionary")
Debug.Print tmp
For Each c In a
If c Like tmp Then MonDico(c) = ""
Next c
Me.ComboBoxClients.List = MonDico.keys
Me.ComboBoxClients.DropDown
End Sub
Private Sub UserForm_Initialize()
a = [listeclientg].Value
Me.ComboBoxClients.List = a
Me.ComboBoxClients.MatchEntry = 2
b = [kitbase].Value
Me.ComboBoxTypeProtection.List = b
Me.ComboBoxClients.MatchEntry = 2
d = [adressechantier].Value
Me.ComboBoxAdressesSites.List = d
factchantiervierge
End Sub
Voici le code de mon userform pour remplir mes devis, ca fonctionne nikel
Dim a(), b()
Private Sub TraiterCheckBox()
If Me.CheckBox1 = True Then
Sheets("Devis").CheckBox1 = True
Else
Sheets("Devis").CheckBox1 = False
End If
If Me.CheckBox2 = True Then
Sheets("Devis").CheckBox2 = True
Else
Sheets("Devis").CheckBox2 = False
End If
If Me.CheckBox3 = True Then
Sheets("Devis").CheckBox3 = True
Else
Sheets("Devis").CheckBox3 = False
End If
If Me.CheckBox4 = True Then
Sheets("Devis").CheckBox4 = True
Else
Sheets("Devis").CheckBox4 = False
End If
If Me.CheckBox5 = True Then
Sheets("Devis").CheckBox5 = True
Else
Sheets("Devis").CheckBox5 = False
End If
If Me.CheckBox6 = True Then
Sheets("Devis").CheckBox6 = True
Else
Sheets("Devis").CheckBox6 = False
End If
CmdButtonAnnuler_Click
End Sub
Private Sub CmdButtonAnnuler_Click()
End
End Sub
Private Sub CmdButtonGenererDevis_Click()
With Sheets("Devis")
.[K6] = Me.ComboBoxAdressesSites
.[K8] = Me.ComboBoxClients
.[C20] = Me.ComboBoxTypeProtection.Value ' à revoir
.[L15] = Me.TextBox13 ' remplacer XXXX par l'adresse où écrire dans la feuille DEVIS
.[M10] = Val(TextBox3)
.[L16] = Val(TextBox12)
.[l17] = Val(TextBox14)
.[l18] = Val(TextBox9)
.[l19] = Val(TextBox10)
.[J23] = Me.TextBox4
.[J25] = Me.TextBox5
.[M21] = Val(TextBox11)
End With
TraiterCheckBox
End Sub
Private Sub UserForm_Initialize()
a = [listeclientg].Value
Me.ComboBoxClients.List = a
Me.ComboBoxClients.MatchEntry = 2
b = [kitbase].Value
Me.ComboBoxTypeProtection.List = b
devisvierge
End Sub
Private Sub ComboBoxClients_Change()
tmp = UCase(Me.ComboBoxClients) & "*"
Set MonDico = CreateObject("Scripting.Dictionary")
Debug.Print tmp
For Each c In a
If c Like tmp Then MonDico(c) = ""
Next c
Me.ComboBoxClients.List = MonDico.keys
Me.ComboBoxClients.DropDown
End Sub
Et voici le code inscrit dans l'userform pour remplir mes factures electrique et je ne peux ouvrir l'userform uniquement en mettant en commentaire le 'Private Sub UserForm_Initialize()
Dim a(), b(), d()
Private Sub TraiterCheckBox()
If Me.CheckBox1 = True Then
Sheets("facture electrique").CheckBox1 = True
Else
Sheets("facture electrique").CheckBox1 = False
End If
If Me.CheckBox2 = True Then
Sheets("facture electrique").CheckBox2 = True
Else
Sheets("facture electrique").CheckBox2 = False
End If
If Me.CheckBox6 = True Then
Sheets("facture electrique").CheckBox6 = True
Else
Sheets("facture electrique").CheckBox6 = False
End If
CmdButtonAnnuler_Click
End Sub
Private Sub CmdButtonAnnuler_Click()
End
End Sub
Private Sub CmdButtonGenererDevis_Click()
plusforelec
With Sheets("Facture electrique")
.[K6] = Me.ComboBoxAdressesSites
.[K8] = Me.ComboBoxClients
.[L15] = Me.TextBox13
.[L16] = Me.TextBox12
.[M15] = Val(TextBox3)
.[M16] = Val(TextBox15)
.[M21] = Val(TextBox14)
End With
TraiterCheckBox
End Sub
Private Sub ComboBoxAdressesSites_Change()
Set D1 = CreateObject("Scripting.Dictionary")
x = Replace(Replace(Me.ComboBoxAdressesSites, ".", ""), " ", "")
tmp = "*"
For i = 1 To Len(x): tmp = tmp & Mid(x, i, 1) & "*": Next i
tmp = UCase(tmp)
For Each c In d
tmp2 = "*" & Replace(Replace(c, ".", ""), " ", "") & "*"
If UCase(tmp2) Like tmp Then D1(c) = ""
Next c
Me.ComboBoxAdressesSites.List = D1.keys
Me.ComboBoxAdressesSites.DropDown
End Sub
Private Sub ComboBoxClients_Change()
tmp = UCase(Me.ComboBoxClients) & "*"
Set MonDico = CreateObject("Scripting.Dictionary")
Debug.Print tmp
For Each c In a
If c Like tmp Then MonDico(c) = ""
Next c
Me.ComboBoxClients.List = MonDico.keys
Me.ComboBoxClients.DropDown
End Sub
'Private Sub UserForm_Initialize()
a = [listeclientg].Value
Me.ComboBoxClients.List = a
Me.ComboBoxClients.MatchEntry = 2
b = [kitbase].Value
Me.ComboBoxTypeProtection.List = b
Me.ComboBoxClients.MatchEntry = 2
d = [adressechantier].Value
Me.ComboBoxAdressesSites.List = d
factelecvierge
End Sub
Je suis presque certain que ca vient du scrpting.dictionary. non?
Private Sub ComboBoxClients_Change()
tmp = UCase(Me.ComboBoxClients) & "*"
Set MonDico = CreateObject("Scripting.Dictionary")
Debug.Print tmp
For Each c In a
If c Like tmp Then MonDico(c) = ""
Next c
Me.ComboBoxClients.List = MonDico.keys
Me.ComboBoxClients.DropDown
End Sub
A savoir que sur le formulaire qui bug, je ne me sert pas de cela
b = [kitbase].Value
Me.ComboBoxTypeProtection.List = b
Me.ComboBoxClients.MatchEntry = 2
D'ailleurs pourquoi la Me.ComboBoxClients.MatchEntry = 2 apparait ici aussi alors qu'elle est au dessus dans a =
Bonjour
si toi même tu ne sais pas pourquoi il y a des lignes de codes dans un programme que tu donne .... je ne peux rien pour toi....
tu as mis comme résolu le post je suppose que tu as trouvé le problème... mais si tu n'as pas trouvé, je penses que je ne peux rien pour toi...
fred