Mise en forme conditionnelle

Dartagnan

XLDnaute Nouveau
Bonjour ou bonsoir,
Je souhaiterais savoir si une solution existe à mon problême!
J'utilise comme mise en forme conditionelle, la formule ô combien precieuse de myDearFriend pour colorer des cellules qui ont plus de trois conditions. Cela marche du tonerre, mais j'aimerais que la ou les cellule(s) adjacentes prennent la même couleur. Est-ce possible?????????
 

criscris11

XLDnaute Accro
Re : Mise en forme conditionnelle

Bonsoir Dartagnan,
Tout d'abord sans vouloir t'offenser, ta réponse de 22h18 n'est pas très bien acceptée sur ce forum. D'ailleurs, si tu n'as pas lu la charte, c'est un forum de gens bénévoles qui mettent leurs connaissances en ligne pour aider ceux qui en ont besoin donc si tu n'as pas de réponses, c'est peut-être qu'ils sont occuppés à aider d'autres personnes comme toi et moi.
Si tu n'a pas de réponses, c'est peut-être aussi (et souvent le cas) une mauvaise formulation dans le développement de ta question : donc bien se relire et modifier si besoin est.
Et, pour info également, quand tu postes un fichier (.zip et moins de 50 ko) ces gens formidables qui vont travailler pour toi n'auront pas à le faire dans le vide.
En résumé : sois patient, ton tour viendra.
Je te souhaite une bonne soirée en attendant.
 

Excel-lent

XLDnaute Barbatruc
Mfc

Slt Dartagnan,

1/ "il n'y a pas de question idiotes! Il n'y a que ..."
2/ oui c'est possible. La méthode la plus simple, prendre la même que celle que tu as déjà utilisé!

Si tu trouves la réponse pas suffisament personnalisé, ou si tu as besoin de plus d'explications, comme le dit si bien Criscris11 : met ton fichier en pièce jointe.
 

myDearFriend!

XLDnaute Barbatruc
Re : Mfc

Bonsoir Dartagnan, criscris11, Excel-lent,

Je n'ai pas vraiment le temps de me replonger dans cette macro en ce moment, ni de tester complètement....

Mais si tu utilises la macro mDF MFCmultiples v2, et si tu souhaites par exemple faire agir le format sur la ligne entière, tu peux essayer d'ajouter la ligne ci-dessous en gras :

Code:
[SIZE=2][COLOR=GRAY][B][I]DANS LE MODULE DE CODE DE L'OBJET THISWORKBOOK[/I][/B][/COLOR]

[COLOR=NAVY]Option Explicit[/COLOR]
[COLOR=GREEN]'---------------------------------------------------------------------------------------[/COLOR]
[COLOR=GREEN]' Auteur    : Didier FOURGEOT (myDearFriend!)[/COLOR]
[COLOR=GREEN]' Date      : 18/09/2005[/COLOR]
[COLOR=GREEN]' Sujet     : MFC multiples v2[/COLOR]
[COLOR=GREEN]'---------------------------------------------------------------------------------------[/COLOR]
[COLOR=NAVY]Private Sub[/COLOR] Workbook_SheetChange([COLOR=NAVY]ByVal[/COLOR] Sh [COLOR=NAVY]As Object[/COLOR], [COLOR=NAVY]ByVal[/COLOR] Target [COLOR=NAVY]As[/COLOR] Range)
[COLOR=NAVY]Dim[/COLOR] TabTemp [COLOR=NAVY]As Variant
Dim[/COLOR] L [COLOR=NAVY]As Long
Dim[/COLOR] V [COLOR=NAVY]As Variant[/COLOR]
    [COLOR=GREEN]'Ne gère pas les sélections de plages[/COLOR]
    [COLOR=NAVY]If[/COLOR] Target.Cells.Count > 1 [COLOR=NAVY]Then Exit Sub[/COLOR]
    [COLOR=GREEN]'Vérifie la présence du format conditionnel "spécial"[/COLOR]
    [COLOR=NAVY]If[/COLOR] Target.FormatConditions.Count < 1 [COLOR=NAVY]Then Exit Sub
    If[/COLOR] Target.FormatConditions(1).Formula1 = "=mDF" [COLOR=NAVY]Then
        With[/COLOR] Sheets("MFC")
            [COLOR=GREEN]'Charge les préférences dans un tableau variant temporaire[/COLOR]
            L = .Range("A65536").[COLOR=NAVY]End[/COLOR](xlUp).Row
            TabTemp = .Range(.Cells(1, 1), .Cells(L, 1)).Value
            [COLOR=GREEN]'Détermine le format à utiliser suivant la valeur de la cellule[/COLOR]
            [COLOR=NAVY]If[/COLOR] Target.Value = "" [COLOR=NAVY]Then[/COLOR]
                L = 1
            [COLOR=NAVY]Else
                For[/COLOR] L = 2 [COLOR=NAVY]To UBound[/COLOR](TabTemp, 1)
                    [COLOR=GREEN]'Fonctionne en minuscule/majuscule pour les chaines de caractères[/COLOR]
                    [COLOR=NAVY]If[/COLOR] UCase(Target.Value) = UCase(TabTemp(L, 1)) [COLOR=NAVY]Then Exit For
                Next[/COLOR] L
            [COLOR=NAVY]End If[/COLOR]
            [COLOR=GREEN]'Gestion des erreurs (impératif, compte tenu de la désactivation des évènements)[/COLOR]
            [COLOR=NAVY]On Error GoTo[/COLOR] Fin
            Application.EnableEvents = [COLOR=NAVY]False[/COLOR]
            [COLOR=GREEN]'Applique le format (sauf les bordures)[/COLOR]
            .Cells(L, 2).Copy
            V = Target.Formula
            Target.PasteSpecial Paste:=xlPasteAllExceptBorders, Operation:=xlNone, _
                    SkipBlanks:=[COLOR=NAVY]False[/COLOR], Transpose:=[COLOR=NAVY]False[/COLOR]
            Target.Formula = V
            [B]Target.EntireRow.PasteSpecial Paste:=xlPasteFormats     [COLOR=GREEN]'<============= ligne ajoutée ici ===========[/COLOR]
[/B]            [COLOR=GREEN]'Il semble que sur Mac et dans certaines situations (non ciblées) le format[/COLOR]
            [COLOR=GREEN]'conditionnel "spécial" d'origine ne soit pas écrasé par le nouveau, il convient[/COLOR]
            [COLOR=GREEN]'donc de s'en assurer avant de réimposer ce format spécial.[/COLOR]
            [COLOR=NAVY]If[/COLOR] Target.FormatConditions.Count < 1 [COLOR=NAVY]Then[/COLOR] Target.FormatConditions.Add [COLOR=NAVY]Type[/COLOR]:=xlExpression, Formula1:="=mDF"
            Application.CutCopyMode = [COLOR=NAVY]False[/COLOR]
            Application.EnableEvents = [COLOR=NAVY]True
        End With
    End If
    Exit Sub[/COLOR]
Fin:
    [COLOR=GREEN]'En cas d'erreur dans le code, il convient impérativement de rétablir la gestion des[/COLOR]
    [COLOR=GREEN]'évènements d'application pour la suite. Par une gestion d'erreur, on réaffecte la[/COLOR]
    [COLOR=GREEN]'valeur True à la propriété Application.EnableEvents et on informe l'utilisateur qu'une[/COLOR]
    [COLOR=GREEN]'erreur non gérée est survenue[/COLOR]
    MsgBox "Erreur non gérée dans la procédure Workbook.SheetChange()" & vbLf & "Erreur : " & _
        Err & " " & Err.Description, vbOKOnly, "myDearFriend!"
    Application.EnableEvents = [COLOR=NAVY]True
End Sub[/COLOR][/SIZE]
Un autre exemple : si tu veux que le format s'applique sur la même ligne, mais uniquement sur la cellule précédente et les 3 cellules suivantes, il convient de changer cette ligne ajoutée comme suit :
Remplacer :
Code:
[SIZE=2]Target.EntireRow.PasteSpecial Paste:=xlPasteFormats[/SIZE]
par cette ligne :
Code:
[SIZE=2]Range(Target.[B]Offset(0, -1)[/B], Target.[B]Offset(0, 3)[/B]).PasteSpecial Paste:=xlPasteFormats[/SIZE]
En espérant t'avoir mis sur la piste....

Cordialement,
 

criscris11

XLDnaute Accro
Re : Mise en forme conditionnelle

Re à tous,
Dartagnan, personne ne s'est senti blessé mais il y a des règles à respecter cependant. Mais comme tu auras pu le constater par toi même, tu as eu des réponses mais il faut savoir être patient : c'est une règle de mise sur ce genre de forum où tout est basé sur le bénévolat.
Sans raucune aucune, je te souhaite une bonne soirée et j'espère que les réponses qui t'ont été données ou te seront données répondent à ta question.
 

Statistiques des forums

Discussions
312 606
Messages
2 090 176
Membres
104 435
dernier inscrit
ZAMAZ