Couleur de fond d'une textbox

Bonjour, je débute en VBA et je dois réaliser un formulaire pour des opérateurs.

Dans ce formulaire je rencontre 2 problèmes :

-Le premier, est que je n'arrive pas à créer de liste déroulante en cascade, j'aimerais qu'en fonction de la famille de machine choisi, on me propose les machines correspondantes et les opérateurs correspondants.

-Le second est que j'ai mis une fonction pour afficher en rouge des combobox ou des textbox si les champs sont vides. Cela ne marche que pour les combobox et je ne comprend pas pourquoi.

Je vous joins mon fichier en espérant avoir été clair dans mes explications. Merci d'avance !

Bonjour

-Le premier, est que je n'arrive pas à créer de liste déroulante en cascade, j'aimerais qu'en fonction de la famille de machine choisi, on me propose les machines correspondantes et les opérateurs correspondants.

Je regarde pour vous proposer quelque chose. Peut-on considérer que toutes les machines sont attribuées aux opérateurs ?

-Le second est que j'ai mis une fonction pour afficher en rouge des combobox ou des textbox si les champs sont vides. Cela ne marche que pour les combobox et je ne comprend pas pourquoi.

Il faut corriger votre code FUNCTION à la ligne ajouter MSForms--> If TypeOf ctl Is MSForms.TextBox Then

Une chose est d'enlever tous les accents dans gestionnaire de noms et dans les noms de feuilles. Je modifie votre fichier ?

Bonjour, merci de votre réponse, oui vous pouvez considérer que toutes les machines sont associées aux opérateurs.

Je vous en pries modifier le fichier comme vous voulez, cela m'aide grandement.

oui vous pouvez considérer que toutes les machines sont associées aux opérateurs.

Ok. Dans ce cas, la liste des opérateurs dans la combobox est toujours complète et ne dépendra pas des machines

Autre chose : est-ce qu'il se peut que vous ajoutiez d'autres familles de machines (genre rectifieuse, Fraiseuse, ....). L'idée étant de remplacer les colonnes A et B par un tableau qui comprendra autant de colonnes qu'il y a de famille de machine. Pour chaque famille, on met le nom en tête de colonne (ligne 1) et dans chaque ligne, le modèle (16m, 18m, etc...)

Non il n'y a pas besoin de rajouter de famille de machine, les informations de la feuille "paramètres" ne sont pas amenés à changer.

Ok. Par rapport à votre demande, je vais modifier la feuille Paramètres en conservant l'idée décrite dans mon post précédent.

D'accord, merci beaucoup !

Votre fichier en retour pour test

Si ok, veillez bien à repartir de ce fichier pour continuer votre projet

Cordialement

Edit Dan : si par hasard vous devez ajoutez des machines, ajoutez les dans la feuille Paramètres juste à coté donc colonnes H et suivantes.

Whaou juste un énorme merci tout fonctionne exactement comme je le voulais !

Bonne continuation et encore merci d'avoir pris le temps de faire ça pour moi !

OK.

J'ai omis de vous dire que pour vos types de machines dans la feuille paramètres, vous devrez les ajouter en fonction du type de machine.

Oubliez aussi les accents et espaces dans les noms. Avec VBA, on a trop souvent des soucis

Cordialement

C'était trop beau, je suis désolé d'être aussi nul mais j'ai une erreur d’incompatibilité de type lorsque tout est remplis et doit s'ajouter dans le tableau.

Private Sub ListeFmachine_Change()
Dim col As Byte

ListeMachine = ""
col = Application.Match(ListeFmachine.Value, Range("TabFamilleMachine"), 0)

ListeMachine.List = Sheets("Parametres").ListObjects("TabMachines").ListColumns(col).DataBodyRange.Value
End Sub

La partie en gras elle celle ciblée lors de l'affichage de l'erreur.

Je vous joins à nouveau mon fichier

Oui c'est normal. Je n'avais pas testé ce point

Pour vous expliquer, cela vient du fait que lorsque vous valider une saisie, l'userform est vidée de ces données. Cette action relance le code -->Private Sub ListeFmachine_Change() qui renvoie la valeur 0 pour la variable COL.

Remplacez le code dans votre fichier par celui ci-dessous

Private Sub ListeFmachine_Change()
Dim col As Byte

ListeMachine = ""
On Error Resume Next
col = Application.Match(ListeFmachine.Value, Range("TabFamilleMachine"), 0)
If col > 0 Then ListeMachine.List = Sheets("Parametres").ListObjects("TabMachines").ListColumns(col).DataBodyRange.Value
End Sub

Refaite un test

Bonjour, merci de votre explication j'ai compris la logique, j'ai encore un peu de mal avec le code en lui-même mais en tout cas tout marche.

Bonne continuation à vous !

Rechercher des sujets similaires à "couleur fond textbox"