VB fonction "Sub Workbook_SheetChange"
RésoluJ'utilise une macro qui colore des cellules en fonction du texte.
Mon soucis est que le texte des cellules a colorer change par liaison par une saisie sur une autre feuille.....Bref je ne sélectionne pas de cellule et donc sans selection ma macro ne fonctionne pas (grrrrrrrr!!!!)
Comment pourrait on faire pour que la macro s'execute automatiquement dès que le texte change dans la cellule (J'insiste sur le fait que le texte change par liaison et que les cellule ne sont donc pas actives)
Un grand merci d'avance pour ceux qui m'apporteront la solution .
Voici ma macro ci dessous :
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim i As Integer, j As Long, Mfc As FormatCondition, c As Range, Ws1 As Worksheet
On Error GoTo fin ' en cas de mauvaise manipulation, ça plante sur l'ordre suivant
Application.EnableEvents = False
Set Ws1 = Sheets("MFC")
For i = 1 To Target.FormatConditions.Count
Set Mfc = Target.FormatConditions(i)
If UCase(Left(Mfc.Formula1, 7)) = "=MA_MFC" Then
Ws1.Range("A1").Value = Target.Value
Set c = Nothing
For j = 2 To Ws1.Range("A65536").End(xlUp).Row
If Ws1.Range("A" & j) = True Then
Set c = Ws1.Range("A" & j)
Exit For
End If
Next j
If c Is Nothing Then Set c = Ws1.Range("A1")
c.Copy
Target.PasteSpecial (xlPasteFormats)
Application.CutCopyMode = False
End If
Next i
Application.EnableEvents = True
fin:
On Error GoTo 0
End Sub
31 réponses
Problème central : une macro Excel qui colore des cellules selon le texte ne s'exécute pas lorsque le texte change par liaison depuis une autre feuille sans sélection active. Plusieurs pistes suggèrent d'utiliser des événements VBA comme Workbook_SheetChange ou Worksheet_Change pour déclencher automatiquement la mise en forme, et d'explorer variantes reposant sur des feuilles dédiées et la copie des formats. D'autres répondants évoquent des choix organisationnels, comme travailler sur les feuilles Création Menu Normal et Nor, ou recourir à des formulaires et à une mise en forme directe plutôt qu'à une macro dépendante. Une nuance utile : la discussion montre que les solutions varient selon l'architecture du fichier et le niveau d'automatisation souhaité, et qu'une approche mixte peut être envisagée.
-
Re,
Le bug!!!
Je n'arrivais plus à laisser de message et je n'arrivais plus non plus à mettre en "résolu"....
Bref grand merci à toi Mike et à tout ceux qui ont participé.... -
Re,
j'ai créé une feuille Explications que tu pourras supprimer, j'ai annoté les différents codes, ces annotations sont en vert.
Utilise ce dernier fichier, j'ai apporté une modification pour les protections de sorte à protéger ou déprotéger d'un coup toutes les feuilles du classeur
http://www.cijoint.fr/cjlink.php?file=cj201111/cijhSwGVqt.xls
si tes attentes sont satisfaites, n'oublie pas de mettre le statut de la discussion en résolu ou demande moi de le faire -
le fichier est tres bien comme ca!!!! je garde la mise en forme de "l'entrée" et du "plat" dans le userform....
-
Re,
Je ne vois pas le dernier fichier que je t'ai posté, je le reposte.
Tu as trois effets au choix de mise en forme de l'userform.
J'ai conservé les listes déroulantes dans l'userform mais elle se comporte de deux façons, soit tu les utilises de façon classique en sélectionnant le menu dans la liste déroulante ou tu saisis manuellement le plat, exemple si tu saisis la lettre a tu auras le premier plat de la liste commençant par a, mais au fur et à mesure que tu compléteras la saisie le plat s'adaptera à chaque lettre ajoutée
https://www.cjoint.com/?AJEsS1vidj3
A+
Mike-31
Une période d'échec est un moment rêvé pour semer les graines du savoir. -
Le dernier fichier que j'ai recupere est celui du poste "#31"
Je voulais juste savoir si c'est possible d'enlever la liste déroulante dans l'userform et que la liste s'affiche directement selon les 1eres lettres saisies (cela m'éviterait de cliquer sur la liste déroulante a chaque fois!!!)
apres ca serait bon!c'est du bon boulot!!
Sur le dernier fichier envoyé, je souhaiterais avoir la mise en forme comme "entrée" dans l'userform....c'est sympa -
Re,
Sur l'userform, je trouve l'effet génial sur "l'entrée"....j'ai toujours la liste déroulante mais c'est pas un soucis.....c'est déja un travail formidable!!!!
merci mille fois. -
Re,
regarde si c'est ce que tu cherches, un autre effet de mise en forme conditionnelle sur l'userform menu Entrée
choisis tes effets et on termine ton projet
https://www.cjoint.com/?AJDwjcNtgLC
-
Re,
C'est du super travail que tu fais...génial!
Je sais que j'en demande déjà beaucoup mais pour finaliser "userform"serait il possible de l'utiliser pour faire les modifications de menu? Il faudrait par exemple que "userform" affiche le menu existantde la feuil "création menu......"!
Cela permettrait d'enlever la liste déroulante.
Sur le userform, je tape les premieres lettre du plat, un seul plat est proposé en saisie automatique...serait il possible qu'il m'affiche toute la liste des plats qui débute par les 1er caractere sans avoir besoin de cliquer sur la liste déroulante?
Promis après je ne demanderai plus rien!!!
Merci encore beaucoup pour ton investigation. -
Re,
Double clic sur Midi ou soir concerné, l'userform s'affiche, composer le menu et clic sur valider
pour effacer un menu
Double clic sur Midi ou soir concerné, l'userform s'affiche, valider sans rien sélectionner
Pour modifier un menu ou supprimer un plat clic sur le bouton Modifier les menus, modifier le ou les menus et clic sur le bouton Clic pour reprotéger la feuille
Lorsque le fichier te conviendra, on mettra un mot de passe pour les déprotections et centraliser les codes
https://www.cjoint.com/?AJBoliwnXLi
-
Re,
Sympa ta proposition....j'adhere totalement!!!
juste 3 petites bricoles à modifier :
- Si je laisse une case vide dans le userform il me colore la cellule en violet...serait il possible de garder la cellule blanche?
- dans le userform, dans le champ "Plat" les caracteres sont en gras et pas les autres....
- quand je clic sur "valider" dans le userform, il me renvoi à chaque fois en haut de la feuille...est il possible de rester sur la ligne ...exemple si je travaille sur la ligne 30 j'aime apres l'execution de la macro me retrouver sur la meme ligne ...est ce possible?
Voila sinon c'est top et je t'en remercie..... -
Re,
Je serai absent jusqu'a demain soir, teste comme je te l'ai dit, les deux premiers tableaux et dis nous si c'est ce que tu attends.
Si tu n'y vois pas d'inconvénient, je supprimerais des post sans intérêt dans la discussion de sorte à retrouver rapidement les post constructifs
regarde l'userform avec mise en forme également
https://www.cjoint.com/?AJzxWzi36V1
A+
Mike-31
Une période d'échec est un moment rêvé pour semer les graines du savoir. -
Re Mike,
merci de ton retour....oui ta proposition est excellente! -
Re,
Je suis pas mal pris mais j'ai regardé plusieurs codes
regarde si c'est ce que tu cherches, pour déclencher la macro, double clic sur Midi ou soir dans les deux premiers tableaux de la feuille "Création Menu Normal "
on verra plus tard la mise en forme de la boite de l'userform
https://www.cjoint.com/?AJzrwNIpDll
-
je n'ai plus d'aide??? bouhhhh je n'arrive pas a finaliser mon fichier!!!!
-
Re Mike-31,
J'ai trouver une fonction intéressante :
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Ta solution en "poste 16" ou "22" me convient totalement.
Elle fonctionne mais elle est tres tres longue dans son execution car elle s'execute sur toute la feuille!!! (poste 16)
Pourrait on la faire exécuter par palier?
Exemple :
macro 1 :Feuille "creation Menu Normal" execution macro de "C4" à "I36"
macro 2 :Feuille "creation Menu Normal" execution macro de "C41" à "I83"
macro 3 : ETC...
et créer un bouton dans chaque feuil "Nor1"; "Nor2"; etc.... -
Re,
Une autre idée,
double clic sur une cellule Midi ou Soir de la feuille "Création Menu Normal", les cellules contenant les infos sur les valeurs nutritionnelles se masquent seule les cellules des menus restent visibles.
La cellule active se positionne automatiquement sur la première cellule au dessous de cette dernière
Etablir le menu, les cellules se coloriseront en fonction des couleurs attribuées sur la feuille "Liste_Code_Plat" les menus se mettent à jour sur les feuilles Nor
Pour rétablir l'affichage complet de la feuille "Création Menu Normal" clic sur le bouton en haut de la feuille "Rétablir le mode apparence"
sur cette même feuille les dates au dessus des menus sont automatisées, il suffit de saisir simplement la date de départ en cellule C3 au format Excel exemple 3/10/11 pour commencer par un lundi
Teste les deux premiers tableaux
https://www.cjoint.com/?AJvwT7BU9sX
Si tu n'y vois pas d'inconvénient, je supprimerais les posts sans intérêt dans la discussion afin d'écourter celle-ci et retrouver rapidement les posts utiles
A+
Mike-31
Une période d'échec est un moment rêvé pour semer les graines du savoir. -
En fait ca fonctionne par saison......on etablit les menus sur 8 semaines en générale mais parfois 4 semaines...le plus simple est de partir sur 8 semaines!
-
Oui au départ j'étais parti à fonctionner comme ca car c'etait beaucoup plus simple pour la gestion de la macro ....je travaillais directement sur la feuille "création Menu Normal" mais dans l'utilisation ca devient moins confortable car je n'avais pas de visu sur les menus du midi et du soir et c'etais galere de créer un menu équilibré (enfin je perdais beaucoup de temps".
Le fait de rédiger mes menus sur les feuilles "Nor" est plus simple d'utilisation et plus rapide! Maintenant le défit c'est de trouver son fonctionnement et la c'est pas simple!!!Bref je cherche toujours la solution...c'est bizarre de ne trouver aucune macro couleur qui fonctionne sans sélectionner les cellules!!!
Enfin bref si ca te viens la solution je serais ravi de la connaitre lol...en tout cas merci beaucoup de ton investissement, c'est sympa!! -
Re,
Et si on prenait le problème à l'envers, tu sélectionnes tes plats directement sur les feuilles "Création Menu Normal" et Création Menu Régime avec mise en forme conditionnelle directe et les feuilles Nor et Reg se mettent à jour automatiquement
teste les deux premiers tableau de la feuille "Création Menu Normal"
https://www.cjoint.com/?AJvlZquEjaC
-
Bonjour Mike-31,
Cela a deja un grand mérite car ca fonctionne et je te remercie..
Je garde ton idée car j'en ai pas d'autre mais l'inconvénient dans ta solution c'est que pour la moindre petite modif dans les menus et c'est parti pour 45 secondes lol (j'espere que je ferais pas trop de modifi lol).
Je veux bien que tu supprime le scintillement par contre....et encore grand merci
- 1
- 2