XL 2010 Macro qui ne fonctionne pas avec une MFC

Myst

XLDnaute Occasionnel
Bonsoir le forum
J'ai un petit problème avec mon fichier, actuellement tout fonctionne sauf la relation entre les macro et les MFC Je m'explique, dans les cellules de la colonne D en fonction du texte saisie celui-ci change de couleur par l'action d'une MFC, ensuite les macros devraient prendre le relais mais là ça ne fonctionne pas
Il faut que je donne la couleur manuellement au texte pour que la macro la prenne en comptes
Comment pourrai je faire ?
merci
 

Pièces jointes

  • Myst V1.xlsm
    135.8 KB · Affichages: 64

Dranreb

XLDnaute Barbatruc
Bonsoir.
Vous pourriez essayer une instruction de ce genre par exemple :
VB:
  Cells(I, "E").Resize(1, LastColonne - 4).Interior.color = Choose(Asc(Right$( _
  Cells(I, "D").Value, 1)) - 64, &H6DFFB7, &HEDFF7E, &HFFDBDC, &HF3C9FF, &HB0D7FF)
Plus sombres mais plus marquées :
VB:
Cells(I, "E").Resize(1, LastColonne - 4).Interior.color = Choose(Asc(Right$( _
  Cells(I, "D").Value, 1)) - 64, &HDB8D&, &HC9DE00, &HFFAEB1, &HE776FF, &HA6F4&)
Remarque: L'ordre des couleurs est peut être à rectifier.
 
Dernière édition:

Myst

XLDnaute Occasionnel
Re
Sous le tableau "semaine01" j'ai un tableau "semaine02" et ainsi de suite jusqu'à "semaine52"
Après avoir ajouté les deux lignes au code de chaque semaine dans les 51 autres userform, la sélection des cellules a traiter ne fonctionne plus de la semaine 02 a 52
Une idée peut être
merci
 

Dranreb

XLDnaute Barbatruc
Bonjour
C'est quoi cette histoire de 52 UserForm ???
Il y a de fortes chances que vous n'en ayez besoin que d'un seul, même si plusieurs exemplaires différents devaient pouvoir en être affichés en même temps !
(forcément en non modal alors, bien sûr)
 
Dernière édition:

Myst

XLDnaute Occasionnel
Bonsoir le forum, Dranreb
Désoler de l'absence, j'ai pris un peu de repos
Effectivement je pense que 52 Userform n'est pas la meilleur solution, mais comme je ne sais pas faire avec 1 seul
Ci-joint le fichier, si vous pouvez m'orienter dans ce sens
Je cherche aussi a appliquer les codes du bouton valider de l'userform "Machine" directement sur la feuille "36", lorsque l'on déplace une cellule par exemple, la sélection des tableaux pour chaque semaine me pose problème
Par avance merci
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Bonsoir.
Ben affichez toujours le même UserForm, quoi…
Perso pour le .Show je mettrais même dans un module standard une macro que j'affecterais à des Boutons de formulaire plutôt que 52 procédures de boutons ActiveX là !
Ou alors si c'est dans le module Worksheet de la feuille, pas de bouton du tout mais une Worksheet_BeforeDoubleClick.
Et, après examen plus approfondi, je ferais le Show par un Me.Show dans une méthode écrite dans l'UserForm admettant pour paramètre un Range représentant la ligne où se trouve le bouton de formulaire. Ou bien Target dans la seconde solution.
 

Dranreb

XLDnaute Barbatruc
Alors pourquoi pas une Worksheet_SelectionChange qui réagirait quand vous sélectionnez la semaine dans la colonne A ?
Comme ça vous n'auriez plus qu'à transmettre Target à votre méthode Afficher(Byval Cible As Range) de l'UserForm unique.
Évitez de mentionner le nom de l'UserForm dans le module qui lui est propre: c'est toujours Me !

Au début de l'UserForm Machine:
VB:
Private Plage As Range
Public Sub Afficher(ByVal Cible As Range)
Me.Caption = Cible(1, 1).Value
Set Plage = Cible.Resize(, 16)
Me.Show
End Sub
Dans les autres procédure travaillez avec Plage au lieu de Cells.

Dans la Worksheet_SelectionChange:
VB:
Machine.Afficher Target
 
Dernière édition:

Myst

XLDnaute Occasionnel
Bonjour Dranreb
OK pour l'ouverture de l'userform unique, ça fonctionne mais il s'ouvre lorsque l'on clique sur n'importe quelle cellule
Y a t'il moyen de restreindre l'ouverture en cliquant seulement dans les cellules des semaines
Après pour ce qui est de la sélection de la semaine voulue, c'est une autre histoire...
J'ai remplacé les Cells par des Plage mais ne sait pas comment continué
merci
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Au début :
VB:
If Intersect(Me.Columns("A"), Target) Is Nothing Then Exit Sub
Il s'agit de remplacer aussi dans les Plage(L, C) les numéros de lignes L par des valeurs constantes pour les lignes de début et par Plage.Rows.Count pour la dernière.
 
Dernière édition:

Myst

XLDnaute Occasionnel
Re
Depuis ce matin j'essaye de modifier le code mais sans succès, les plage (L,C) correspondent elles bien a LastLigne = 3 et LastColonne = 15 qu'il faut modifier ?
Pour la partie "If Intersect(Me.Columns("A"), Target) Is Nothing Then Exit Sub" a commencer avant la partie concernant les checkbox ou avant celle de la mise a jour des couleurs de cellule ?
Désolé pour mon inexpérience.
 

Dranreb

XLDnaute Barbatruc
Ce sont à priori toujours les mêmes numéros de lignes et de colonne dans Cible, qui est Target dans la colonne A étendue sur 16 colonnes, puisqu'on ne travaille plus avec des numéros de lignes dans la feuille, mais par rapport à la 1ère ligne de la plage, qui est chaque fois différente selon la semaine sélectionnée.
Le test avec Intersect c'est tout en premier, pour que la procédure ne réagisse qu'à la sélection d'une plage fusionnée de semaine dans la colonne A.
 

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 294
Messages
2 086 895
Membres
103 404
dernier inscrit
sultan87