Je comprends pas pkoa g ce resultat ???

  • Initiateur de la discussion Creepy
  • Date de début
C

Creepy

Guest
bonjour j'ai mis ce code pour initialiser mes combobox & textbox

Dim DerCell, DerCell1 As String
DerCell = Range("BdeD!A2").End(xlDown).Address
DerCell1 = Range("BdeD!B2").End(xlDown).Address
Feuil1.Clientbox.ListFillRange = "BdeD!A2:" & DerCell
Feuil1.MarcheBox.ListFillRange = "BdeD!B2:" & DerCell1

Feuil1.Clientbox.Text = ""
Feuil1.MarcheBox.Text = ""
Feuil1.Nmr.Text = ""
Feuil1.Periode.Text = ""
Feuil1.Unite.Text = ""
Feuil1.CM.Text = ""
Feuil1.TelCm.Text = ""
Feuil1.Cec.Text = ""
Feuil1.TelCEC.Text = ""
Feuil1.Prod.Text = ""
Feuil1.ProdTel.Text = ""
Feuil1.DU.Text = ""
Feuil1.TelDU.Text = ""
Feuil1.Remarque.Text = ""

Je veux que tous les text et combobox soient vides !

Et bien pour les deux premières ce n'est pas le cas elles prennent le nom des en-tete de mes colonnes de tableaux : Client et Marché.

Par contre toutes les autres sont bien "vide".

Le plus etrange, c'est que quand je trace en pas à pas, ses deux lignes

Feuil1.Clientbox.Text = ""
Feuil1.MarcheBox.Text = ""

Me redirigent vers mes procedures Clientbox_change et Marchebox_change alors que je ne lui demande pas je veux juste mes controls vierges.

Kk1 peut m'expliquer ?,

Merci d'avance

Creepy
 
@

@+Thierry

Guest
=> "TIPS" REMISE A ZERO EN MASSE DES ACTIVESX DE FEUILLES...

Re Salut Creepy

Huum Huum, je regarde ton code....

Première remarque, c'est pas bien du tout de nommer des contrôls de la sorte car personne ne peut comprendre de quel type de control il s'agit ! (même toi dans six moi si tu dois faire évoluer ce truc !!!)

Tu noteras que dans toutes mes démos, soit je laisse carrément le nom par défaut : "TextBox1, ComboBox1, ListBox1, Label1...etc etc", soit dans certains cas j'affine le nom dans ce style : "TextBoxPrix, ListBoxClients, ComboBoxArticles.... Etc Etc"... Sinon je pense que personne ne pourrait interpréter et s'inspirer des astuces que j'essaie de partager ici...

Pour les développeurs Pro, on peut aussi souvent utiliser des conventions d'abréviations que l'on prend soin d'afficher en commentaires en haut du private module du UserForm (ou de la feuille dans ce cas présent) :

Cmb = ComboBox
Lsb = ListBox
Txb = TextBox

Par conséquent je ne sais pas de quels contrôles tu parles dans ton post sans avoir à faire un jeu de piste et de suppositions.

Bien sûr, vu l'initialization avec ListFillRange, il ne peut s'agir que de ComboBox ou de ListBox....Pour le reste j'imagine que ce sont des TextBox..

Pour ton problème, il provient du fait que de faire écrire "", déclenche l'évènement change, puisque c'est un changement...

Si tu travailles avec des ListBox, tu devrais essayer plutôt la méthode ListIndex
ListBox1.ListIndex = -1
qui Retournera laListBox sans sélection donc "Vierge"

Pour les ComboBox, la méthode = "", devrait marcher........

Ensuite, au pire, si l'évènement change se déclenche malgré tout... Tu fais un simple if dans cet évènement comme suit :
Private Sub ComboBox1_Change()
If ListBox1.ListIndex = -1 Then Exit Sub
If Combobox1 = "" then Exit Sub
'...blah blah blah
End Sub

Sinon tant que je suis sur un sujet comme celui-ci et que tu as l'air sympa, voici comment moi je procèderai pour initialiser à zéro tous les Controls ActiveX d'une feuille : (on a Une ou Des TextBox, Une ou Des ComboBox et Une ou Des ListBox)

Sub RAZ()
Dim CTRL As OLEObject
For Each CTRL In [Feuil1].OLEObjects
If CTRL.ProgId = "Forms.TextBox.1" Then CTRL.Object = ""
If CTRL.ProgId = "Forms.ComboBox.1" Then CTRL.Object = ""
If CTRL.ProgId = "Forms.ListBox.1" Then CTRL.Object.ListIndex = -1
Next CTRL
End Sub

Ensuite tu gère les macro évènementielles "Change" respectives avec le If décrit plus haut...

J'ai pas essayé Application.EnableEvents = False, mais sur UserForm çà ne marche pas... A voir sur une feuille...

Bon Dimanche
@+Thierry
 

Statistiques des forums

Discussions
312 489
Messages
2 088 857
Membres
103 979
dernier inscrit
bderradji