![]() |
|
Forum
|
|
|
#1 (permalink) |
|
Guest
Messages: n/a
|
Bonsoir à tous
J'ai plusieurs textbox qui changent de couleurs pour autoriser la saisie, elles sont commandées par une cellule qui change de valeur suivant l'action d'un menu déroulant. Quelle est la syntaxe pour ne pas à refaire une ligne de code par numéro. Pour être plus clair comment remplacer ci dessous en une ou deux igne : multiprest.TextBox2.BackColor = &HFF& If sheets(1).Range('G28').Value = 31 Then multiprest.TextBox2.BackColor = &HFFFFFF If sheets(1).Range('G28').Value = 32 Then multiprest.TextBox2.BackColor = &HFFFFFF If sheets(1).Range('G28').Value = 33 Then multiprest.TextBox2.BackColor = &HFFFFFF Par avance merci a++ Yvon |
|
| ANNONCES | |||
|
|
|
|
#2 (permalink) |
|
XLDnaute Accro
Date d'inscription: octobre 2005
Version Excel : Excel 2000 (PC)
Messages: 1 919
|
Bonsoir Yvon,
Je ne sais pas si c'est volontaire ou si c'est une erreur, mais tu mets 3 fois la même couleur d'arrière-plan. En me basant sur ce que tu as écrit, je te donne le code suivant : If Sheets(1).Range('G28') Mod 31 <= 2 then **multiprest.TextBox2.BackColor = &HFFFFFF End If Sans connaître le reste du code et les autres valeurs que peut prendre la cellule G28, difficile de proposer autre chose :unsure: Amicalement Charly Edition : En 1 ligne, cela donne If Sheets(1).Range('G28') Mod 31 <= 2 then multiprest.TextBox2.BackColor = &HFFFFFF Message édité par: Charly2, à: 21/11/2005 04:23 Message édité par: Charly2, à: 21/11/2005 04:25
__________________
Amicalement, Charly2 |
|
|
|
|
|
#3 (permalink) |
|
Guest
Messages: n/a
|
Salut Charly,
C'est fou quand on à la tête dans le guidon l'explication parait limpide, et après une réponse, je m'aperçois que c'est pas super clair. Pour être clair et limpide : J'ai un userform avec 3 texbox, dont la couleur initiale est rouge (saisie interdite), lorque la saisie est autorisée elle passe au blanc en respectant les conditions du menu déroulant, qui renvoi un npmbre dans une cellule ce qui donne : La cellule est Sheets(1).Range('G28') = 30 = textbox1 + texbox3 blanc, textbox2 rouge =31 = textbox1 + textbox2 blanc, texbox3 rouge = 32 = textbox2 blanc, textbox1 + texbox3 rouge =33 = textbox2+ texbox3 blanc, textbox1 rouge Les autres valeurs n'appellent pas le USF En espérant avoir été plus clair Mon souci, malgré le bon numéro les variations de couleurs ne sont pas dans le bon ordre et je pense que c'est du à la mulmtiplication des conditions. Je te livre le code lié au menu déroulant: Sub multiprestations() 'appelle du USF' If Range('K11') >= 3 Then If Range('G28') <> 31 Then Range('E28') = Range('G28') If Range('G28') >= 30 Then If Range('G28') <= 33 Then multiprest.Show With Me 'fond JE' multiprest.TextBox1.BackColor = &HFF& If sheets(1).Range('G28').Value = 30 Then multiprest.TextBox1.BackColor = &HFFFFFF If sheets(1).Range('G28').Value = 31 Then multiprest.TextBox1.BackColor = &HFFFFFF 'Fond loc salle journée' multiprest.TextBox2.BackColor = &HFF& If sheets(1).Range('G28').Value = 31 Then multiprest.TextBox2.BackColor = &HFFFFFF If sheets(1).Range('G28').Value = 32 Then multiprest.TextBox2.BackColor = &HFFFFFF If sheets(1).Range('G28').Value = 33 Then multiprest.TextBox2.BackColor = &HFFFFFF 'Fond loc salle 1/2 journée' multiprest.TextBox3.BackColor = &HFF& If sheets(1).Range('G28').Value = 30 Then multiprest.TextBox3.BackColor = &HFFFFFF If sheets(1).Range('G28').Value = 33 Then multiprest.TextBox3.BackColor = &HFFFFFF End With End If End If End Sub Merci du coup de main a++ Yvon |
|
|
|
#4 (permalink) | |
|
XLDnaute Accro
Date d'inscription: octobre 2005
Version Excel : Excel 2000 (PC)
Messages: 1 919
|
Bonsoir Yvon, bonsoir à toutes et à tous
![]() Yvon, je ne comprends pas bien ton code. Pourquoi ne mets-tu pas le code d'initialisation des TextBox(es) dans le code de ton USF multiprest ? Enfin, je te propose une solution (pas forcément la meilleure) pour répondre à tes conditions : Citation:
Amicalement Charly
__________________
Amicalement, Charly2 |
|
|
|
|
|
|
#5 (permalink) |
|
Guest
Messages: n/a
|
Salut Charly,
Comme tu le sais déjà, je n'est pas encore un VBA super académique et je bricole beaucoup, mais j'évolue petit à petit. Le code dans multiprest initialize, j'ai essayé et cela ne permet pas de se tromper, la position reste figée, une fois pour toute il faut fermer et réouvrir pour avoir une autre configuration. Mes textbox s'initialisent, à l'ouverture mais les couleurs changent de façon quellque peut anarchique, elles ne respectent pas l'ordre donné, mais apparaissent sans logique mais tout y est. Ton code donne le même résultat, je pense que la solution est simple et on est tout proche, il faut que je bosse, je vais bien finir par trouver. en tout cas merci du coup de main, c'est sympa, je te tiens au jus si je trouve. a++ Yvon |
|
|
|
#6 (permalink) |
|
XLDnaute Accro
Date d'inscription: octobre 2005
Version Excel : Excel 2000 (PC)
Messages: 1 919
|
Re Yvon,
Non, non, non !!! La couleur de tes TextBoxes est déterminée à l'initialisation de l'USF, mais si, dans le code de ton USF, tu modifies la valeur de la cellule G28, tu peux créer une procédure qui met à jour leurs couleurs en fonction de cette nouvelle valeur ; tu vois, ce n'est pas figé ![]() @+ Charly Message édité par: Charly2, à: 22/11/2005 02:06
__________________
Amicalement, Charly2 |
|
|
|
|
|
#7 (permalink) |
|
Guest
Messages: n/a
|
Cela marche mais une fois, à la première sélection, il faudrai que le code se réinitialise à chaque selection du menu déroulant, est ce que cela est faisable.
J'ai trafiqué un peu ton code initial de la façon suivante : Case 30 multiprest.TextBox1.BackColor = &HFFFFFF multiprest.TextBox2.BackColor = &HFF& multiprest.TextBox3.BackColor = &HFFFFFF Case 31 multiprest.TextBox1.BackColor = &HFFFFFF multiprest.TextBox2.BackColor = &HFFFFFF multiprest.TextBox3.BackColor = &HFF& Case 32 multiprest.TextBox1.BackColor = &HFF& multiprest.TextBox2.BackColor = &HFFFFFF multiprest.TextBox3.BackColor = &HFF& Case 33 multiprest.TextBox1.BackColor = &HFF& multiprest.TextBox2.BackColor = &HFFFFFF multiprest.TextBox3.BackColor = &HFFFFFF End Select End With End If End If End Sub a++ Yvon |
|
|
|
#8 (permalink) |
|
XLDnaute Accro
Date d'inscription: octobre 2005
Version Excel : Excel 2000 (PC)
Messages: 1 919
|
Re-Re
Naturellement que c'est faisable, mais ce serait plus facile si tu mettais en ligne les parties essentielles de ton fichier, après avoir supprimé les données dont nous n'avons pas besoin... @+ Charly Message édité par: Charly2, à: 22/11/2005 02:10
__________________
Amicalement, Charly2 |
|
|
|
|
|
#9 (permalink) | |
|
Guest
Messages: n/a
|
Charly2 écrit:
Citation:
Heu..tu as surement raison, mais le code dans le usf.initialize est le même que celui la ?, ou il est différent, pourquoi cela restait figé. J'essaye à nouveau et on en reparle a++ yvon |
|
|
|
|
#10 (permalink) | |
|
Guest
Messages: n/a
|
Charly2 écrit:
Citation:
Je te remercie pour ton aide Charly a++ Yvon |
|
|
|
|
#11 (permalink) |
|
XLDnaute Accro
Date d'inscription: octobre 2005
Version Excel : Excel 2000 (PC)
Messages: 1 919
|
Encore moi
![]() Voici ce qui me pose question : - ton menu déroulant est-il dans une feuille, un autre USF ou dans multiprest (je considère que non pour cette dernière solution), - tu fais multiprest.show, pourquoi ? Je m'explique : lorsque je charge un USF, je fais 'Load USFName' et ainsi, je sais que c'est le 1er appel. Quand un USF est chargé mais qu'il perd le focus, je le rappelle ensuite par 'Show'. De cette manière, je suis sûr de ne pas me tromper en relisant le code car si j'utilise 'Show', c'est que mon USF est déjà en mémoire. Ceci est ma façon de procéder et je ne dis pas qu'elle est la meilleure - si ton menu déroulant n'est pas dans ton USF, comment y retournes-tu après chargement de multiprest (un USF est toujours modal, c-à-d qu'il fonctionne de manière exclusive tant qu'il n'est pas fermé ou caché). Voilà. J'espère que tu comprends mieux pourquoi un exemple serait le bienvenu ![]() Sur ce, je te souhaite une bonne nuit pour laisser tes neurones au repos (humm !) @+ Charly
__________________
Amicalement, Charly2 |
|
|
|
|
|
#12 (permalink) |
|
XLDnaute Junior
Date d'inscription: novembre 2005
Localisation: Blois
Version Excel : Excel XP (PC)
Messages: 74
|
Je sais pas si je suis le bienvenu pour vous aider. Je débute moi aussi mais j'ai planché de nombreuses heures sur un problème similaire. Notamment avec changement de couleur pseudo aléatoire.
Mes solutions ont été : - de refaire la userform pour la faire de façon académique (il y avait des textbox en plus qui s'étaient cachées sous d'autres ! C'est pas sympa de leur part.) Ca ne changeait rien directement mais on ne sais jamais ! ![]() - ensuite, j'ai effectivement utilisé initialize() qui est très pratique puis les fonctions exit() et afterupdate() sur les texbox et ça ça marche bien. J'ai retrouvé toute la stabilité de mon fichier (ça plantait aussi...). Seul particularité de taille : pense bien à faire attention aux priorités entre exit, beforeupdate et afterupdate Code:
Option Explicit
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
'Dans les TextBox de DATE, autorise uniquement les touches numériques et /
KeyAscii = AutoriseFrappe(KeyAscii)
End Sub
Private Sub UserForm_Initialize()
' Limitation des
' Initialisation des couleurs de la fenêtre Données Pilote (Echéances...)
With DonnéesPilote
.Caption = Range('C1').Value
.TextBox1.BackColor = Range('A6').Interior.Color
.TextBox1.MaxLength = 10
End With
End Sub
Private Sub TextBox1_Change()
' Mettre le fond blanc pour que la couleur ne soit plus valable : une MAJ s'impose
TextBox1.BackColor = 16777215
End Sub
Private Sub TextBox1_AfterUpdate()
' Mise à jour de la couleur dans la feuille ainsi que dans le textbox
' dès que le focus quitte le textbox
' C'est la seule façon de faire que j'ai trouvée qui fonctionne
' mais ça ne vérifie pas encore complètement le format de la saisie
Call Couleurs.InitPiloteCouleur(DonnéesPilote.Caption)
TextBox1.BackColor = Range('A6').Interior.Color
End Sub
inch: Bon, en gros, je gère une équipe de personnes et j'ai dans une userform 9 textboxes qui affichent des dates. Initialize donne le nombre de caractères et la couleur de fond déjà attirbuée.Si je saisis une nouvelle date, je ne peux mettre que des chiffres et / (fonction keypress et surtout autorisefrappe bien connue sur ce forum) puis, qd le focus quitte la textbox, afterupdate relance la fonction qui code les couleurs, avec un case... comme vous avez fait, sur la feuille de calcul et je reporte la couleur dans la texbox. J'espère que ça pourra vous aider ne serait-ce qu'un peu. Si je suis hors sujet, je suis désolé de vous avoir pris votre temps. Bon courage et bonne journée :whistle: |
|
|
|
|
|
#13 (permalink) |
|
Guest
Messages: n/a
|
Bonjour Charly, ours masqué, le forum,
Merci de ta participation Ours Masqué, toutes les bonnes volonté sont les bienvenues, et tu fait bien d'ajouter ta pierre à mon frèle édifice. Je n'est pas le temps d'étudier ton code sur le champ, j'ai juste pris 5 minutes, pour laisser à charly, le fichier demandé, j''étudie ton code ce soir en rentrant et je te fait un retour, promis. Le fichier demandé à suivre Bonne soirée à tous a++ Yvon |
|
|
|
#14 (permalink) |
|
Guest
Messages: n/a
|
C'est comme dab le fichier est pas arrivé je recommence [file name=textboxcouleur.zip size=10617]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/textboxcouleur.zip[/file] [file name=textboxcouleur.zip size=10617]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/textboxcouleur.zip[/file]
|
|
|
|
#15 (permalink) |
|
XLDnaute Accro
Date d'inscription: octobre 2005
Version Excel : Excel 2000 (PC)
Messages: 1 919
|
Bonsoir Yvon et Ours Masqué
![]() Ours Masqué, je te remercie pour ta contribution : ça fait toujours plaisir de voir qu'on est pas seul à s'intéresser à certaines questions ![]() Pour Yvon, je te joins un petit fichier qui, pour l'exemple donné, me semble répondre à ta demande. J'y ai rajouté la désactivation des TextBox(es) qui ne sont pas à modifier... C'est certainement pas le top, mais c'est déjà un début ![]() A+ Charly [file name=Yvon_textboxcouleur.zip size=15313]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Yvon_textboxcouleur.zip[/file]
__________________
Amicalement, Charly2 |
|
|
|
| ANNONCES | |
![]() |
| Liens sociaux |
| Outils de la discussion | |
|
|