XL 2010 Encadrement qui ne suit pas un tri, comment faire ?

seb555

XLDnaute Nouveau
Bonjour,

J'ai un petit outil de planification, pour qu'il me donne le plus de visibilité possible, je lui fait encadrer les durées qui m'intéressent.

ima1.jpg


cela me convient, mon pb est que si je tri par une colonne autre que OF, Outil par exemple, les couleurs suivent, mais pas les encadrements.

ima2.jpg


Auriez-vous une solution pour faire que les lignes des encadrements suivent les tri, comme font les couleurs d'ailleurs.
Sans tout recalculer.

ci-joint exemple du fichier utilisé pour l'explication.
Merci.

Seb.
 

Pièces jointes

  • Planification.xlsm
    21.5 KB · Affichages: 9
Solution
Bonjour seb555, mapomme, Bernard, Marcel32,

Voyez le fichier joint et cette macro dans le code de la feuille :
VB:
Private Sub Worksheet_Calculate()
Dim r As Range, coul As Range, c As Range, i As Byte
With Intersect([A1].CurrentRegion.EntireRow, UsedRange)
    .Borders.LineStyle = xlNone
    For Each r In .Rows
        Set coul = Nothing
        For Each c In r.Cells
            If c.DisplayFormat.Interior.ColorIndex <> xlNone Then Set coul = Union(IIf(coul Is Nothing, c, coul), c)
        Next c
        If Not coul Is Nothing Then For i = 7 To 10: coul.Borders(i).Weight = xlThin: Next i
    Next r
End With
End Sub
Elle s'exécute chaque fois que l'évènement Calculate est créé.

Pour cela il faut une formule volatile dans...

Dranreb

XLDnaute Barbatruc
Bonsoir.
Ce que j'ai trouvé de mieux quant à moi :
En M2, à propager sur 16 lignes et 32 colonnes :
Code:
=SI(ENT(N$1)=ENT($G2);$B2;SI(MIN(MAX(ENT($G2);ENT(M$1));ENT($H2))=ENT(M$1);"—";""))
Et une mise en forme conditionnelles sur les cellules contenant "—" avec fond rouge, bordures inférieure et supérieure, format de nombre ";;;".

Édition: je rectifie :
En M2, à propager sur 16 lignes et 32 colonnes :
Code:
=SI(ENT(N$1)=ENT($G2);$B2;SI(ET(ENT(M$1)>=ENT($G2);ENT(M$1)<=ENT($H2));"—";""))
(quand même plus clair, et plus court d'ailleurs …)
 
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour @Marcel32 :),

@mapomme : est-ce qu'il ne faudrait pas utiliser au moins 3 MFC différentes pour que ça donne le résultat demandé ?

Perso, dans Excel, si on peut faire en une fois (quitte à modifier légèrement la présentation), je prends. Je ne me suis pas occupé des valeurs dans les cellules (qui n'était pas dans la question).

J'ai répondu à la question concernant le format. Si on veut aussi remplir la cellule, on peut utiliser la très bonne solution de @Dranreb (que je salue :))

@seb555 a donc le choix :
  • soit il ne retient que le formatage simplifié (il pourra donc utiliser les formules qu'il veut dans les cellules)
  • soit il utilise la solution de @Dranreb pour aussi remplir les cellules telles que dans l'exemple
  • il existe sans doute encore d'autres solutions
 
Dernière édition:

seb555

XLDnaute Nouveau
Bonjour,
Merci de vos éclairages, @mapomme & @Dranreb ,
oui @Marcel32 avec 3MFC on y arrive (j'ai mis plusieurs couleur pour l'étude du résultat)

ima3.jpg


Mais je trouve la méthode très lourde.
Je pensais naïvement que la propriété Border de la cellule "appartenait" à la cellule, comme pour sa couleur, mais ce n'est manifestement pas le cas.

Maintenant je vais essayer de passer ces 3MFC en automatique, ce doit être faisable via définition du modèle sur une Cellule, puis copy/paste sur la zone, ceci me permettra d'adresser en automatique un tableau aux dimensions multiples.

Seb.
 

TooFatBoy

XLDnaute Barbatruc
Utiliser 3 MFC est une méthode "très lourde" ??? :oops:
Je suppose qu'en fait tu veux simplement dire "plus lourde que la méthode à une seule MFC que tu imaginais au départ". ;)


Quant au reste de ta réponse, j'avoue ne pas avoir compris. :(
Que veux-tu dire par :
- "passer les MFC en automatique",
- "définir un modèle sur une cellule",
- "adresser en automatique un tableau aux dimensions multiples" ?


[edit]
Il y a un truc qui me semble bizarre (mis à part la zone d'application des MFC) dans ta capture d'écran : sur la dernière ligne il y a une case verte après une cas rouge.
Est-ce "normal" ?
[/edit]
 
Dernière édition:

seb555

XLDnaute Nouveau
Bonjour @Marcel32 ,

J'essais généralement de "tout faire" par macro, car l'utilisation de formules m'ont plusieurs fois amené à des non fonctionnement (surtout avec des sommeprod), sur de gros tableau, et après plusieurs mois d'utilisation quotidienne, sans raison apparente, les fichiers de 500Ko de données passent à 10Mo. Certainement une pollution d'informations parasites créées je ne sais pas comment.
C'est pour cela que j'ai décidé de passer en macro avant tout.

Pour le côté complexité, c'est parce-que je pensais déjà à l'automatisation des MFC.
Comme il faut à chaque fois faire des Borders sur les select, ça prend beaucoup de lignes. Et comme au final je dois mettre une couleur par Atelier cela va me faire rajouter des MFC, j'ai commencé, pas encore terminé.

Pour la partie verte, je pense que c'est un résidu mis en dur précédemment, car au début je mettais les couleurs avec un Select.Range.Interior.InteriorColor. Il y a du y avoir une collision.
Sur un fichier propre, le pb disparait. Merci pour la remarque.

A+
 

job75

XLDnaute Barbatruc
Bonjour seb555, mapomme, Bernard, Marcel32,

Voyez le fichier joint et cette macro dans le code de la feuille :
VB:
Private Sub Worksheet_Calculate()
Dim r As Range, coul As Range, c As Range, i As Byte
With Intersect([A1].CurrentRegion.EntireRow, UsedRange)
    .Borders.LineStyle = xlNone
    For Each r In .Rows
        Set coul = Nothing
        For Each c In r.Cells
            If c.DisplayFormat.Interior.ColorIndex <> xlNone Then Set coul = Union(IIf(coul Is Nothing, c, coul), c)
        Next c
        If Not coul Is Nothing Then For i = 7 To 10: coul.Borders(i).Weight = xlThin: Next i
    Next r
End With
End Sub
Elle s'exécute chaque fois que l'évènement Calculate est créé.

Pour cela il faut une formule volatile dans la feuille, elle se recalcule quand on filtre le tableau.

A+
 

Pièces jointes

  • MFC-Bordures(1).xlsm
    23.9 KB · Affichages: 4

seb555

XLDnaute Nouveau
Bonjour @job75

Alors que je m’empêtrais à imaginer des

VB:
s5.Range("M2").FormatConditions.Add Type:=xlExpression, Formula1:=formule(i)

car j'ai au total 8 ateliers donc 24 conditions à prendre en compte, et que je butais sur le format de formule(i) car apparaissait avec des "" après le =, donc ne fonctionne pas, ta solution me permet d'aller directement au but, et le tout sans Select, comme suggéré par @Marcel32.

Je pensais faire appel à une macro suite à mise à jour du tableau de tri (mais mes encadrements auraient été réalisés avec beaucoup moins de finesse que ton code, reconstruction d'un range sur chaque ligne en relisant les dates début/fin et application des border xltop, ...) mais je n'avais pas encore dans ma base de connaissance le Worksheet_Calculate associé à une fonction volatile.

A priori cela semble fonctionner, je mets en test et ferme le post tout est ok d'ici à demain.
 

Statistiques des forums

Discussions
312 104
Messages
2 085 349
Membres
102 869
dernier inscrit
radyreth