Aide pour une macro de mise en forme conditionnelle

vinze2085

XLDnaute Nouveau
Bonjour tout le monde,

Je suis à la recherche d'un moyen de contourner la fameuse limite des 3 conditions max imposées par microsoft et malheureusement je n'ai pas trouver (ou réussit) à trouver une solution en épluchant les sujets dèja existants donc je me permet de poster.

J'ai trouvé sur le forum comment faire des macros pour appliquer une nombre infini de conditions mais a chaque fois les exemples testaient une cellule et appliquaient le format à la cellule testée...

Mais mon problème est que je souhaite tester une valeur dans une colonne et appliquer une mise en forme particuliere dans une tierce colonne figurant sur la même ligne.

Concretement:

J'ai un fichier rempli à ras bord (65500 lignes sur 50 colonnes)
En colonne B j'ai déja appliquer 3 conditions (sans macro) et j'ai envie de faire une macro qui viendrait souligner certaines cellules de cette même colonne 2 si la valeur correspondante en colonne 50 est supérieur à telle ou telle valeur (que je définirai dans une cellule du classeur)

Je sais pas si j'ai réussi à être clair, si vous avez besoin de de renseignement complémentaires demandez moi ^^

Je vous remercie d'avance pour vos conseils!

Vincent

Edit: je sais pas comment mes colonne sont maintenant affichées en chiffre et non en lettres, ca m'arrange pour programmer les macro avec la formule cells() par exemple mais pour range() spa top, si quelqu'un connait une facon simple de basculer d'un mode à l'autre ca me serait bien util ;)

Edit2: en fouinant dans les options j'ai trouver la solution=> option, general , option R1C1 decoché ^^ Vous savez s'il existe un raccourcis clavier pour ca?
 
Dernière édition:

wilfried_42

XLDnaute Barbatruc
Re : Aide pour une macro de mise en forme conditionnelle

bonjour

tu as des macros existantes sur le forum, soit celle De MDF, sur son site MyDearFriend
soit dans de Forum Salon Ce fil
Cette macro est en XLA (Macro complementaire), elle fonction sur la Base de MFC, et peut etre declanchée par la saisie d'une cellule, ou encore par un bouton
 

vinze2085

XLDnaute Nouveau
Re : Aide pour une macro de mise en forme conditionnelle

Je n'arrive pas à comprendre ce la macro "sur la base de MFC" :S c'est juste pas de mon niveau je pense.

Je joins un fichier exemple pour mieux illustrer l'objectif de la macro

Merci de bien vouloir y jeter un coup d'oeil ^^ Jpense pas que pour un pro ca soit un gros challenge (moi par contre je galère :s)
 

Pièces jointes

  • exemple mfc vinze.xls
    19.5 KB · Affichages: 59

wilfried_42

XLDnaute Barbatruc
Re : Aide pour une macro de mise en forme conditionnelle

re:

voici une macro evennementielle à mettre dans la feuille des la saisie de la valeur en E4, ellle se declanche

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim cel As Range
    If Target.Address = "$E$4" Then
        For Each cel In Range("E6:E" & Range("E65536").End(xlUp).Row)
            cel.Offset(0, -3).Font.Underline = xlNone
            If cel > Target Then cel.Offset(0, -3).Font.Underline = True
        Next
    End If
End Sub
 

vinze2085

XLDnaute Nouveau
Re : Aide pour une macro de mise en forme conditionnelle

Merci ca marche super bien!!!!
Et le coup du offset c'est ce que je cherchais depuis hier ;) J'avais environ le même code sauf que comme je connaissais pas la fonction ofset bin... je pouvais influer seulement sur la mise en forme des valeur testées (pas cool)

Encore un grand merci a toi Wilfried

A+
 

vinze2085

XLDnaute Nouveau
Re : Aide pour une macro de mise en forme conditionnelle

En fait le code est trop lourd comme ca et peu pasêtre utilisé sur des millier de cellules sans figer l'ordinateur pendant très longtemps (ma patience a craquée a 5minutes et j'attends d'une mise en forme conditionnelle de se faire presque intantanement)

Si quelqu'un a une idée ^^
 

wilfried_42

XLDnaute Barbatruc
Re : Aide pour une macro de mise en forme conditionnelle

re:

voici une macro à base de filtre, dificile de faire plus rapide

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim plage As Range
    If Target.Address = "$E$4" Then
        Application.ScreenUpdating = False
        Set plage = Range("B5:E" & Range("B65536").End(xlUp).Row)
        plage.Font.Underline = xlNone
        plage.AutoFilter Field:=4, Criteria1:=">" & Range("E4")
        Range("B6:B" & Range("B65536").End(xlUp).Row).Cells.SpecialCells(xlCellTypeVisible).Font.Underline = True
        plage.AutoFilter
        Application.ScreenUpdating = True
    End If
End Sub
 

vinze2085

XLDnaute Nouveau
Re : Aide pour une macro de mise en forme conditionnelle

merci ^^ je vais tester ca sur mon fichier

Sinon en attendant une réponse j'ai planché sur une macro ki marche pas mal :

Code:
Sub souligner()

critere_mini = Cells(8, 5)
Max = Cells(7, 5)

For i = 16 To Max

If Cells(i, 50) > critere_mini Then
Cells(i, 50).Offset(0, -48).Font.Underline = True

Else
Cells(i, 50).Offset(0, -48).Font.Underline = xlnone

End If
Next

End Sub

Le seul probleme c'est que je ne comprend pas pourquoi quand je relance la macro les cellules qui devraient se "d´souligner" restent soulignées...

Ta macro est surement meilleurs mais dans un soucis d'apprentissage, j'aimerai savoir comment quitter le soulignement quand les conditions ne sont plus là.

Merci ^^

jai trouvé :

Cells(i, 50).Offset(0, -48).Font.Underline = xlUnderlineStyleNone
 
Dernière édition: