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.

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"

OK, ce n'est pas le plus difficile.

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

Rechercher des sujets similaires à "remplissage combobox conditions"