Remplissage combobox selon conditions
Bonsoir le forum
D'abord merci pour ce super site qui a déja trouvé des solutions à pas mal de mes problèmes
Débutant en vba, malgrés mes recherches sur le forum et autres je bloque sur deux petits problèmes
Voila mon problême je travaille sur un fichier qui me permet de faire une gestion d'outillage de machines outils
Dans ce fichier je me sers d'userform qui contiennent eux même des combobox pour pouvoir choisir différent numéros d'outillages, eux mêmes réparti en différents types, en sachant que deux outillages tournent simultanement sur la machine,ce qui nous fait deux outillages et donc deux combobox par type (deux combobox qui se servent chacune de la même source pour les alimenter)
Pour alimenter mes combobox je me sers d'une liste qui répertorie la totalité des outillages disponible
Du coup voila ou j'accroche :
-1 : J'aimerais faire en sorte que en modifiant un numéro d'outillage de la liste des outillages (par exemple un changement de couleur de la cellule) le numéro en question n'apparaisse plus dans la liste des combobox liées et y reviendrais en remettant la cellule en état de départ
-2 : Pour les deux combobox liées à la même source, est-il possible de faire en sorte que si mes deux liste contiennent "A,B et C" par exemple, que si je sélectionne "A" sur la première combobox, de faire en sorte que "A" n'apparaisse plus dans la liste de la seconde combobox (vu que déja utilisé par la première combobox) et inversement
Désolé d'avance si je ne suis pas assez claire dans mes demandes
J'ai joins le fichier en enlevant toutes les données confidentielles, pour info:
-Onglet "gestion" : c'est sur cette fenêtre avec le bouton "gestion machine" que j'appelle mon userform
-Onglet "Données machine" : je me sers de cet onglet pour récupérer les valeurs récuperés de mes combobox et en parallèles je me sers de ses valeurs pour les réinjecter dans les mêmes combobox pour qu'a l'ouverture de l'userform "listeoutillage" je récupere les valeurs renseigné la fois d'avant
-Onglet "Inventaire outillage" : la liste complète des outillages, tout les numéro réparti en différent numéro de type, c'est ici la source de mes différentes combobox
-Userform "listeoutillage" se compose comme ca ligne par ligne : à gauche le nom du type d'outillage suivi de deux combobox avec chacune une liste ayant la même source cherché dans l'onglet "inventaire outillage"
Voili voilou j'espère avoir été assez précis dans ce que je recherche, d'avance je remercie ceux qui voudront se pencher sur mon cas, n'hésitez pas si je n'ai pas été assez clair sur certain point
Bonne soirée a vous tous
Streetchris
Bonjour et bienvenue sur le forum
Un essai à tester. Te convient-il ?
Bye !
Bonjour Gmb
Dabord merci pour ton temps, tu as fais du super boulot, c'est exactement le concept que je cherchais
Toutefois j'aurais mes questions :
Pour la partie combobox j'ai un petit soucis, j'ai vu que tu as désactivé la macro contenu dans "sommaireoutillage", il faudrait que je la garde car c'est un fichier dont quelques personnes vont se servir et a l'utilisation l'onglet "données machine" va etre caché et j'aimerais qu'a l'ouverture de l'userform les dernières valeurs sélectionné soit présente
D'ailleurs pourra tu m'expliquer le code que tu utilise car poir le vrai fichier que je vais utilisé le nom des onglets et des combobox sera différent (valeurs que j'ai changé pour le fichier que j'ai posté car données confidentielles)
Pour la partie des valeurs en rouge je n'ai pas eté assez précis désolé,en fait il faudrait l'appliquer a la colonne numéro de série de l'onglet "inventaire outillage" et que les valeurs que je passe en rouge n'apparaissent plus dans la liste combobox concerné
Voila pourquoi : par exemple sur un choix totale d'un type d'outillage A,B et C, si l'outillage C casse par exemple je le passe en rouge mais les montages A et B seront eux encore disponible pour ce type d'outillage et donc dans la liste de mes combox
Encore merci pour ton travail et désolé pour les corrections
Bon courage pour ta journée
A +
Streetchris a écrit :j'aimerais qu'a l'ouverture de l'userform les dernières valeurs sélectionné soit présente
Désolé, j'ai essayé mais n'ai pas réussi.
OK, ce n'est pas le plus difficile.Pour la partie des valeurs en rouge ... ,en fait il faudrait l'appliquer a la colonne numéro de série de l'onglet "inventaire outillage"
Bye !
Bonsoir gmb
Ne t'excuse pas, je te remercie d'avoir essayé en tout cas
Pour le correctif que tu as apporté les bonnes valeurs passent bien en rouge mais apparaissent malheureusement quand meme encore dans les combobox associés
Merci encore pour le boulot effectué et bonne soirée à toi
Décidément, c'est pas mon jour !
Nouvelle version.
Bye !
Super c'est exactement ce que je voulais,un grand merci à toi pour le temps passé sur ce fichier
Je vais étudier ton code avec attention pour essayé de le comprendre
Je te souhaite un excellent week end et longue vie au forum
@+
Bonsoir gmb
J'avais une petite question sur ton code : comment procèdes tu pour remplir chaque combobox a partir de la "liste d'outillage" sans te servir de la propriété "rowsource"? je pensais que tu te servais des valeurs que tu avais ajoutés en colonne F de la "liste d'outillage"
("189,190 etc") mais par essayer j'ai effacé ces valeurs et les combobox se remplissent toujours
Je suis curieux :p
Bien bonne soirée à toi et au plaisir de te relire
Bonjour
Streetchris a écrit :comment procèdes tu pour remplir chaque combobox a partir de la "liste d'outillage" sans te servir de la propriété "rowsource"?
Se servir de la propriété RowSource est équivalent à écrire une liste déroulante en dur dans une macro. On risque le Bug avec le messagesybillin : ‘’Accès refusé’’.
Je préfère et de loin entrer les données de la liste dans la macro ‘’ Private Sub UserForm_initialize()’’ qui s’exécute automatiquement juste avant l’affichage de la boite de dialogue (UserForm’’ :
Private Sub UserForm_initialize()
Set fd = Sheets("Données machine")
Set fi = Sheets("Inventaire outillages")
For i = 189 To 197
'If fd.Range("A" & i - 187).Font.Color <> RGB(255, 0, 0) Then
If i = 189 Then
For d = 0 To 2
If fi.Range("A" & 3 + d).Font.Color <> RGB(255, 0, 0) Then
Controls("Type" & i & "_montage1").AddItem fi.Range("A" & 3 + d)
Controls("Type" & i & "_montage2").AddItem fi.Range("A" & 3 + d)
End If
Next d
ElseIf i = 190
...OK ?
Bye !
Bonjour Gmb
Merci pour tes explications, elles me seront utile
Merci encore pour ton aide et bonne journée à toi
Streetchris