VB fonction "Sub Workbook_SheetChange"

Résolu/Fermé
diabolo162 Messages postés 1002 Date d'inscription lundi 28 janvier 2008 Statut Membre Dernière intervention 9 octobre 2018 - 18 oct. 2011 à 06:16
diabolo162 Messages postés 1002 Date d'inscription lundi 28 janvier 2008 Statut Membre Dernière intervention 9 octobre 2018 - 5 nov. 2011 à 07:51
Bonjour,

J'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


A voir également:

31 réponses

Mike-31 Messages postés 18352 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 décembre 2024 5 110
20 oct. 2011 à 23:44
Re,

Sur la feuille "Liste_Code_Plat" colonne A colorise selon ton choix chaque cellule de la colonne A
feuille "Nor1" compose ton premier menu
sur la feuille "Création Menu Normal" clic sur le bouton en haut de ta feuille la feuille scintille exactement 45 secondes pour traiter la totalité de la feuille.

Si le fonctionnement te convient, il est possible de supprimer le scintillement et de mon côté je recopierai les formules sur tous les tableaux de chaque feuille et recréerai les feuilles supprimées. Je pense également qu'il serait sage d'intégrer la protection de la feuille dans le code

http://www.cijoint.fr/cjlink.php?file=cj201110/cijng8G94g.xls

1
Mike-31 Messages postés 18352 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 décembre 2024 5 110
Modifié par Mike-31 le 21/10/2011 à 23:07
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.
1
Mike-31 Messages postés 18352 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 décembre 2024 5 110
Modifié par Mike-31 le 18/10/2011 à 08:42
Salut,

Si j'ai bien compris, essaye ce code et à adapter à ton classeur
Colonne A feuille1 tes valeurs changent par formule en fonction des valeurs feuille2

colle ce code dans les propriétés de la feuille

Private Sub Worksheet_Calculate()
Derlign = Range("A100").End(xlUp).Row
For i = 1 To Derlign
If Cells(i, "A") > 2 Then Cells(i, "A").Interior.ColorIndex = 3
'ou pour tester du texte
'If Cells(i, "A") ="titi" Then Cells(i, "A").Interior.ColorIndex = 3
Next i
End Sub

pour oter la colorisation si la valeur est différente

Private Sub Worksheet_Calculate()
Derlign = Range("A100").End(xlUp).Row
For i = 1 To Derlign
If Cells(i, "b") = "titi" Then Cells(i, "b").Interior.ColorIndex = 3
If Cells(i, "b") <> "titi" Then Cells(i, "b").Interior.ColorIndex = xlNone
Next i
End Sub

A+
Mike-31

Une période d'échec est un moment rêvé pour semer les graines du savoir.
0
Bonjour,

Exemple :



Je joins mon fichier car je n'arrive a l'adapter....

Mon texte se rédige dans le fichier "Nor1"

la macro doit aussi faire référence au fichier "MFC" pour coloriser les cellules.

La macro doit s'éxécuter dans le fichier "Création Menu Normal" et "Création Menu Régime"


Fichier :

http://www.cijoint.fr/cjlink.php?file=cj201110/cijLDkC4Ki.xls

Merci de votre aide!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Mike-31 Messages postés 18352 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 décembre 2024 5 110
18 oct. 2011 à 13:35
Re,

j'essaye de comprendre ton fichier, sur la feuille Liste_Code_plat tu as la liste de tes plats
sur la feuille Nort1 tu composes ton menu, qui se reporte par formule sur la feuille Création de menu normal et tu souhaites sur cette feuille avoir une couleur en fonction du plat, c'est cela !

et pourquoi ne pas également faire sur la feuille Création menu régime !
0
diabolo162 Messages postés 1002 Date d'inscription lundi 28 janvier 2008 Statut Membre Dernière intervention 9 octobre 2018 29
Modifié par diabolo162 le 19/10/2011 à 11:25
oui c'est exactement ca.....j'ajouterai juste que la macro actuelle prend ses couleurs dans le fichier "MFC"....
Peut etre que si je colore mes cellule du fichier "Liste_Code_Plat" tu pourrais m'adapter une macro pour qu'elle fonctionne?! comme ca la feuille "MFC" deviendrait inutile!!!
0
Mike-31 Messages postés 18352 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 décembre 2024 5 110
20 oct. 2011 à 14:12
Re,

Je me casse les dents sur ton fichier qui est d'un compliqué avec des formules en erreur et des codes qui ne fonctionnent pas de façon harmonieuse sans parler de l'excès de poids du fichier.

La feuille MFC est inutile
A partir de la feuille Liste code plat tu peux tout piloter et sans avoir recours au VBA

Peux tu me dire à quoi ou pourquoi toutes ces feuilles Nor ... ainsi que les feuilles Reg ...


Ne serait il plus simple de gérer simplement les feuilles "Création Menu Normal et Régime" avec des ,liste déroulantes appropriées avec bien sur colorisation des plages
0
diabolo162 Messages postés 1002 Date d'inscription lundi 28 janvier 2008 Statut Membre Dernière intervention 9 octobre 2018 29
20 oct. 2011 à 14:37
Les feuilles "Nor" et "Reg"sont les feuilles imprimées pour les clients.....donc non elles me sont utiles.
J'aimerai travailler a partir de ces feuilles car c'est plus simple en visuel pour élaborer les menus

Les documents "création Menu Normal" et "création Menu Régime" sont les documents déstinés à la diététicienne.

La feuille "MFC" peut etre supprimer sans probleme!!! Je l'ai garder uniquement pour la macro car je ne savais pas comment faire....
Je ne vois pas comment faire la "mise en forme conditionnelle sans macro?
0
Mike-31 Messages postés 18352 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 décembre 2024 5 110
20 oct. 2011 à 15:16
Re,

Donc chaque feuille Nor... correspond à un tableau de la feuille Création Menu Normal et la même chose pour les feuilles Reg ... avec Création Menu Régime c'est bien cela !
combien comptes tu avoir de feuille Nor.. et Reg !
0
diabolo162 Messages postés 1002 Date d'inscription lundi 28 janvier 2008 Statut Membre Dernière intervention 9 octobre 2018 29
20 oct. 2011 à 15:56
oui c'est exactement ca!!!! elles sont toutes la les feuilles "Nor" et "Reg". Il y en a 16 maxi
0
diabolo162 Messages postés 1002 Date d'inscription lundi 28 janvier 2008 Statut Membre Dernière intervention 9 octobre 2018 29
Modifié par diabolo162 le 20/10/2011 à 21:56
Apparemment ca l'air d'être galère pour toi....j'espère que tu vas pouvoir m'aider à bidouiller ca!!!
Peut etre qu'avec cette fonction mais je n'arrive pas a l'adapter!!

Private Sub Worksheet_Calculate()
0
diabolo162 Messages postés 1002 Date d'inscription lundi 28 janvier 2008 Statut Membre Dernière intervention 9 octobre 2018 29
20 oct. 2011 à 22:50
oki c'est sympa j'attends avec impatience de voir le résultat...je cherche de mon coté aussi des bout de code mais c'est plutot bof pour le moment.
0
diabolo162 Messages postés 1002 Date d'inscription lundi 28 janvier 2008 Statut Membre Dernière intervention 9 octobre 2018 29
21 oct. 2011 à 06:31
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
0
Mike-31 Messages postés 18352 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 décembre 2024 5 110
21 oct. 2011 à 11:51
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
0
diabolo162 Messages postés 1002 Date d'inscription lundi 28 janvier 2008 Statut Membre Dernière intervention 9 octobre 2018 29
21 oct. 2011 à 15:31
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!!
0
diabolo162 Messages postés 1002 Date d'inscription lundi 28 janvier 2008 Statut Membre Dernière intervention 9 octobre 2018 29
21 oct. 2011 à 20:47
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!
0
diabolo162 Messages postés 1002 Date d'inscription lundi 28 janvier 2008 Statut Membre Dernière intervention 9 octobre 2018 29
Modifié par diabolo162 le 25/10/2011 à 06:28
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....
0
diabolo162 Messages postés 1002 Date d'inscription lundi 28 janvier 2008 Statut Membre Dernière intervention 9 octobre 2018 29
25 oct. 2011 à 16:09
je n'ai plus d'aide??? bouhhhh je n'arrive pas a finaliser mon fichier!!!!
0
Mike-31 Messages postés 18352 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 décembre 2024 5 110
25 oct. 2011 à 17:22
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
0
diabolo162 Messages postés 1002 Date d'inscription lundi 28 janvier 2008 Statut Membre Dernière intervention 9 octobre 2018 29
25 oct. 2011 à 17:53
Re Mike,

merci de ton retour....oui ta proposition est excellente!
0