Mise à jour d'un combobox (vider et recharger)

Le
JP
Bonsoir,

De l'userform3, je lance l'userform5.
Dans l'userform5, après avoir traité des données en lien avec l'userf=
orm3, je mets à jour un combobox nommé CB_Prof. Après l'avoir vidé,=
je le recharge par l'intermédiaire de cette boucle:

For Charge = 9 To Nbl Step 9
UserForm3.CB_Prof.AddItem Sheets("BD_PFMP").Cells(Charge, 2)
Next Charge

Le problème c'est que des lignes blanches apparaissent dans la liste dé=
roulante du combobox (3 à chaque rechargement) et je ne comprends pas pou=
rquoi!

Quelqu'un aurait une idée?

Voici un extrait du code ci-dessous où on retrouve la boucle.

Merci d'avance.

JP
--



For i = 9 To Nbl Step 9
If TextBox1.Value = Cells(i, 2).Value Then
MsgBox "La personne existe déjà dans la base de données."
Exit Sub: UserForm5.Show
ElseIf ComboBox1 = "" Or TextBox1 = "" Then
MsgBox "Les champs Nom Prénom, et EP/EG sont obligatoires"
Exit Sub: UserForm5.Show
ElseIf Cells(i, 2).Value = "" Then
Cells(i, 1) = ComboBox1.Value
Cells(i, 2) = TextBox1.Value
Cells(i, 3) = TextBox2.Value
For C = 4 To Sheets("BD_PFMP").Range("AF3").Value + 3 ' + 3 p=
our le décalage
Cells(i, C) = Me.Controls("TB_" & C + 46).Value ' TB_ com=
mencent à 50
Next C
MsgBox "Les données ont été enregistrées."
' vide textbox et combobox
TextBox1 = ""
TextBox2 = ""
ComboBox1 = ""
For Efface = 50 To 81
Me.Controls("TB_" & Efface) = ""
Next Efface
'Mise à jour de la combobox Prof de l'userform3
UserForm3.CB_Prof.Clear
For Charge = 9 To Nbl Step 9
UserForm3.CB_Prof.AddItem Sheets("BD_PFMP").Cells(Charge, 2)
Next Charge
Exit For
End If
Next i
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
LSteph
Le #25552572
Bonjour,

Jusqu'à atteindre la valeur de Nbl ...
Dans ces cellules que tu prends toutes les 9 lignes (step 9)
N'y a t il pas des vides...???


--
LSteph
JP
Le #25552692
Bonjour Stephane,

Si il y a des vides. Au début de l'enrichissement de la base de données , j'ai une ligne pleine sur Nbl. Ensuite deux sur Nbl, etc....
Nbl est égale à:
Nbl=Application.CountA(Sheets("BD_PFMP").Range("B9:B404"))

Normalement les lignes vides ne sont pas comptées???

Je vais mettre un point d'arrêt sur cette ligne pour voir la valeur de Nb l.

Je te tiens au courant.

Merci

JP
JP
Le #25552742
En fait, je vois où est l'erreur.
Au tout début, la première ligne sur 9 est vides. Les 8 autres contienn ent des valeurs.
C'est dans la première, des blocs de 9, où je vais écrire.
Peut être puis-je utiliser le code couleur pour les compter. Elles sont b leues
code couleur (16764057).
Si couleur = 16764057 et que la cellule contient quelque chose alors je c ompte la ligne.
Le problème c'est qu'au début, Nbl sera inférieure à 9. Ma boucle n e se déclenchera pas. Je suis un peu perdu.

Si tu as une idée!

Merci

JP
JP
Le #25552732
J'ai omis de préciser qu'au début Nbl est égale à 352. Sur les bloc s de 9, 8 lignes contiennent des variables (titres de lignes).
D'où 396 lignes /9 D blocs et 44 *8 = 352.
MichD
Le #25552792
Bonjour,

Ta question n'est pas très claire!

Pourquoi ne pas utiliser cjoint.com pour publier seulement
cette colonne avec laquelle tu veux initialer ton combobox,
avec une explication des données que tu veux retenir?

Tu nous retournes ici l'adresse que tu auras obtenue.




MichD
---------------------------------------------------------------
Jacky
Le #25552832
Bonjour,
As-tu testé cette boucle indépendamment de tout le reste ??
'--------------
'Mise à jour de la combobox Prof de l'userform3
UserForm3.CB_Prof.Clear
For Charge = 9 To Nbl Step 9
UserForm3.CB_Prof.AddItem Sheets("BD_PFMP").Cells(Charge, 2)
Next Charge
'----------------

--
Salutations
JJ


"JP"
Bonsoir,

De l'userform3, je lance l'userform5.
Dans l'userform5, après avoir traité des données en lien avec l'userform3, je mets à jour un combobox nommé
CB_Prof. Après l'avoir vidé, je le recharge par l'intermédiaire de cette boucle:

For Charge = 9 To Nbl Step 9
UserForm3.CB_Prof.AddItem Sheets("BD_PFMP").Cells(Charge, 2)
Next Charge

Le problème c'est que des lignes blanches apparaissent dans la liste déroulante du combobox (3 à chaque
rechargement) et je ne comprends pas pourquoi!

Quelqu'un aurait une idée?

Voici un extrait du code ci-dessous où on retrouve la boucle.

Merci d'avance.

JP
--------------------------



For i = 9 To Nbl Step 9
If TextBox1.Value = Cells(i, 2).Value Then
MsgBox "La personne existe déjà dans la base de données."
Exit Sub: UserForm5.Show
ElseIf ComboBox1 = "" Or TextBox1 = "" Then
MsgBox "Les champs Nom Prénom, et EP/EG sont obligatoires"
Exit Sub: UserForm5.Show
ElseIf Cells(i, 2).Value = "" Then
Cells(i, 1) = ComboBox1.Value
Cells(i, 2) = TextBox1.Value
Cells(i, 3) = TextBox2.Value
For C = 4 To Sheets("BD_PFMP").Range("AF3").Value + 3 ' + 3 pour le décalage
Cells(i, C) = Me.Controls("TB_" & C + 46).Value ' TB_ commencent à 50
Next C
MsgBox "Les données ont été enregistrées."
' vide textbox et combobox
TextBox1 = ""
TextBox2 = ""
ComboBox1 = ""
For Efface = 50 To 81
Me.Controls("TB_" & Efface) = ""
Next Efface
'Mise à jour de la combobox Prof de l'userform3
UserForm3.CB_Prof.Clear
For Charge = 9 To Nbl Step 9
UserForm3.CB_Prof.AddItem Sheets("BD_PFMP").Cells(Charge, 2)
Next Charge
Exit For
End If
Next i
JP
Le #25552922
J'ai fait des modifications qui semblent fonctionner.
mais un regard nouveau peut permettre d'améliorer encore les choses.

Il faut cliquer sur le bouton "Formulaire d'entrée de suivi des élève s"
Dans le formulaire, cliquer sur le bouton nouveau professeur. L'userform5 s 'ouvre.
Il faut entrer des données dans cet usurform.
J'attire votre attention sur le temps qui s'écoule quand on appuie sur le bouton quitter avant de retrouver l'userform3.

Merci pour l'aide

JP
http://cjoint.com/?3GtpJEQ401D
MichD
Le #25553202
As-tu essayé comme ceci :

'--------------------------------
Dim C As Range
With Sheets("BD_PFMP")
For Each C In .Range("B9:B" & .Range("B" & .Rows.Count).End(xlUp).Row)
If C.Value <> "" Then
With Me.ComboBox1
.AddItem C.Value
End With
End If
Next
End With
'--------------------------------

MichD
---------------------------------------------------------------
JP
Le #25553302
Denis,

Je vais essayer ton code mais j'ai fait une modif dans une boucle for i qu i va très bien. J'espère qu'elle n'aura pas d'inconvénient à l'usag e. J'ai juste ajouté la personne avec la ligne suivante:
'ajoute la nouvelle personne à la liste déroulante
UserForm3.CB_Prof.AddItem Sheets("BD_PFMP").Cells(i, 2).Value

En conséquence, je ne réinitialise pas le combobox "CB_PROF" ce qui per met de ne pas relancer toutes les procédures qui y sont liées. Du coup c'est hyper rapide.

Merci

JP
JP
Le #25553352
Denis,

Mon combobox1 est renommé en CB_Prof. J'ai donc modifié ton code mais i l bloque à With Me.CB_Prof

JP
Publicité
Poster une réponse
Anonyme