Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 VBA - Lier une MEF conditionnelle à la MEF d'une autre cellule

GiuMon

XLDnaute Nouveau
Bonjour à tous,

Après avoir fait le tour de ce forum (et d'autres) je n'ai pas trouver d'info m'aidant, je me permets donc de vous demander directement

Je vais essayer d'être clair je pense maitriser l'aspect neophyte d'excel mais pas du tout VBA (sauf les bases bases)

Mon fichier est un planning et je souhaiterais pouvoir faire en sorte de colorer les cellules que je remplie suivant la couleur existante d'une autre cellules

Sur le fichier en PJ les celulles concernées sont B25 à B305 et la plage H25:EG305
et l'idée en exemple est que si une cellule BE35 est non vide alors elle se colore de la couleur de la cellule B35
AK30 est non vide elle se colore de la couleur de la cellule B30
P26 non vide elle se colore de la couleur de la cellule B26
... etc


j'imagine qu'il y a des histoires de boucle et de copie de mise en forme suivant le contenu ou le vide des cellules passées en revues mais je ne suis pas capable dans l'etat de faire quelque chose de propre
Je n'ai pqs de problème à avoir un bouton en cellule A4 par exemple qui execute la Macro après qu'on est coloré ou non les cellules de la colonne B

Merci de vos retour

EDIT PS : j'ai deja des mises en forme conditionnelle si possible il ne faudrait pas qu'elles soient alterées
 

Pièces jointes

  • 2020 08 24 - CUGY - Planning Charge Projets.xlsx
    150.3 KB · Affichages: 15

danielco

XLDnaute Accro
Bonjour,

J'ai peut-être mal compris ton problème. Pour tester la mise en forme d'une cellule suite à une MFC, il faut utiliser la méthode DisplayFormat (disponible avec Excel 2010 et versions postérieures).

Cordialement.

Daniel
 

danielco

XLDnaute Accro
J'avais effectivement mal compris. Mets :

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Count > 1 Then Exit Sub
  If Not Intersect([H25:EG75], Target) Is Nothing Then
    If Target = "" Then
      Target.Interior.ColorIndex = xlNone
    Else
      Target.Interior.ColorIndex = Cells(Target.Row, 2).Interior.ColorIndex
    End If
  End If
End Sub

Dans le module de la feuille.

Daniel
 

Pièces jointes

  • 2020 08 24 - CUGY - Planning Charge Projets.xlsm
    160.4 KB · Affichages: 8

GiuMon

XLDnaute Nouveau
J'ai testé c'est top ! pour le moment ça fonctionne dans "un sens" je m'explique

les cellules se colorent bien suivant la couleur que je choisis dans la cellule de la colonne B mais dans l'ordre suivant : je colore la cellule puis je remplis les cellules de la ligne et elles se colorent

mais ça ne fonctionne pas de maniere retro-actrive par exemple ce serait possible que : je colore une cellule de la colonne B et les cellules déjà remplies dans la ligne prennent la couleur ?

merci super encore
 

GiuMon

XLDnaute Nouveau
FFinalemet quelques petits bug de couleur quand meme
et j'ai vu aussi que ça fonctionne pour le moment uniquement au moment de remplir une case par exemple si je C/c plusieurs cellules en même temps elle ne change pas

mais je comprends mieux l'idee je vais peut être avec tes precisions transformer ça en sub et la faire appliquer par un bouton pour ne faire qu'une fois la mise à jour, peut etre mois gourmand en ressource egalement
 

GiuMon

XLDnaute Nouveau
si je traduis le besoin dans mon langage non VBA avec un bouton mise à jour ce serait ça :

-Dans la plage H25:EG305
-Si H25 est non vide alors la couleur de H25 est la meme que B25 et on incremente d'une colonne (sur la droite) jusqu'à EG25 puis à EG25 on descend d'une ligne et on reprend au depart à H26 et ce jusqu'à la cellule finale EG305

//comme ça on balaye toutes la plage de celulle et on verifie le contenu vide ou non et si non vide on prend la couleur de la celulle en B de la meme ligne

à quoi cela pourrait ressembler svp ?
 

Discussions similaires

Réponses
2
Affichages
424
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…