Boucle de Mise en forme avec condition
Bonjour à tous,
*EDIT une MFC ne pourra pas convenir ici car les données doivent être exportées dans différents documents, et la MFC ne peut pas être copiée collée
J'aurais besoin d'un peu aide pour mettre en place 2 maccros qui iraient mettre en forme une ligne en fonction d'une valeur dans une des colonnes,
1ere maccro:
Si il y a un X dans la Colonne H , mettre en Jaune toute la ligne
2eme maccro :
Si en col H a valeur est égale à "Whilst stock last" , mettre en forme les COL (B&C&D) en remplissage bleu et bordure haut & bas en pointillé en bleu plus foncé
Si en col H la valeur est égale à supprimé mettre en forme les COL (B&C&D) en remplissage rouge et bordure haut & bas en rouge + foncé
Si en Col H la valeur est égale à new , mettre en forme les COL (B&C&D) en remplissage vert clair et bordure haut et bas en pointillé en vert plus foncé,
j'ai fais un fichier excel avec une idée du resultat attendu,
Mille merci pour votre aide,
Et très bonne journée !
Bonjour,
C'est l'affaire de MFC ce que tu demandes ! Pas besoin de perdre du temps à écrire une macro alors qu'une formule sera plus rapide à insérer pour faire la même chose !
Cordialement.
Non Justement,
J'ai hésité à le préciser car j'attendais cette remarque...
ce sont des données qui seront plus tard exportées dans différents documents donc c'est justement pas la MFC qui sera efficace, réécrire toutes les formules à chaque fois me parait fastidieux, de plus les mise en forme conditionnelle ne peuvent pas être "copiée, collée",
Donc non merci pour la MFC,
Cordialement
Les MFC se copient et se collent.
Tu parles d'opération ultérieure d'export... En l'état, pour l'opération telle qu'indiquée, j'exclue une macro. Sur l'ensemble je ne sais pas, ça se décide après évaluation de la solution la plus économique...
En particulier, dès lors qu'il s'agit de copier-coller, j'évite d'en faire autant que je le peux, je pourrais donc trouver plus économique un transfert direct de valeurs suivi d'une reconstruction de MFC (par macro s'entend, donc dans un cas pareil je pourrais faire la première partie en construisant les MFC par macro, la procédure devant alors être réutilisée).
Mais tant qu'on n'a pas toutes les données de la question globale pour décider, je ne me lance pas (mais je n'ai rien contre que d'autres s'amusent à le faire...)
Cordialement.
MFerrand a écrit :Les MFC se copient et se collent.
Cordialement.
Peux tu me donner plus de précisions car je n'ai jamais réussi a copier une donnée excel sujette à une MFC pour la coller avec cette même mise en forme dans un nouveau document, si cela est possible peux tu m'expliquer ?
Copier coller les formules de MFC est exlcure car trop long,
Je ne comprends pas pourquoi tu exclus la macro, c'est ce qui semble être le plus rapide pour aller mettre en forme la donnée qui vient d’être collée dans un nouveau document, une macro enregistrée dans le Personal.xlsb et le tour est joué non ?
De plus les mises en forme conditionnelle sont rapidement instables, et les utilisateurs finaux de ces fichiers ne sont pas des grand afficionados d'excel, entendez par la qu'il n'auront pas forcément des réflexes de bonne pratique. je souhaiterai donc que les mise en forme soit attachées en dur au au cellules ou elle doivent se trouver et qu'elles ne se supprime pas si l'utilisateur venait a modifier la donnée qui déclenche la MFC.
Ma demande n'a donc rien a voir avec une mise en forme conditionnelle
Cordialement
des fois que ça intéresse ou dépanne quelqu'un voici la solution que j'ai trouvé :
Je remercie également tous ceux qui m'ont apporté de l'aide !
Sub MEF_FCSTLSTG()
'Code pour mise en forme des Statuts du fichier de Forecast Listing
Application.ScreenUpdating = False
Dim ligne As Long: Dim colonne As Long: Dim der_ligne As Long: Dim der_colonne As Long
ligne = 1
'permet de trouver les dernière ligne et dernières colonnes
der_ligne = Cells.SpecialCells(xlCellTypeLastCell).Row
der_colonne = Cells.SpecialCells(xlCellTypeLastCell).Column
'creation du tableau
Cells.Select
Range("A1").Activate
ActiveSheet.ListObjects.Add(xlSrcRange, Range("$1:" & "$" & der_ligne), , xlYes).Name = _
"Tableau1"
While ligne < der_ligne
'26 est ici la colonne ou je cherche si mon test est vrai
If (Cells(ligne, 26).Value = "x" Or ((Cells(ligne, 26).Value = "X"))) Then
Range("A" & ligne, "AG" & ligne).Select
With Selection.Interior
.Color = 10092543
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.ThemeColor = 8
.TintAndShade = 0.399945066682943
.Weight = xlThin
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.ThemeColor = 8
.TintAndShade = 0.399945066682943
.Weight = xlThin
End With
End If
If (Cells(ligne, 25).Value = "NEW") Then
Range("d" & ligne, "h" & ligne).Select
With Selection.Interior
.Color = 5296274
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlDash
.Color = -11489280
.Weight = xlMedium
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlDash
.Color = -11489280
.Weight = xlMedium
End With
ElseIf (Cells(ligne, 25).Value = "WHILST STOCKS LAST") Then
Range("d" & ligne, "h" & ligne).Select
With Selection.Interior
.ThemeColor = xlThemeColorAccent1
.TintAndShade = 0.399975585192419
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlDash
.ThemeColor = 5
.TintAndShade = -0.249946592608417
.Weight = xlMedium
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlDash
.ThemeColor = 5
.TintAndShade = -0.249946592608417
.Weight = xlMedium
End With
ElseIf (Cells(ligne, 25).Value = "SUPPRIME") Then
Range("d" & ligne, "h" & ligne).Select
With Selection.Interior
.Color = 13311
End With
With Selection.Interior
.Color = 13311
End With
With Selection.Font
.Strikethrough = True
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlDash
.Color = -16777024
.Weight = xlMedium
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlDash
.Color = -16777024
.Weight = xlMedium
End With
End If
ligne = ligne + 1
Wend
Application.ScreenUpdating = True
End Sub