XL 2019 couleur et mise en forme conditionnelle (bis)

bobafric

XLDnaute Occasionnel
Je suis désolé de reprendre le fil ( entretenu par Sylvanu) car je me suis aperçu tardivement qu'il n'était pas complet.
La mise en forme doit être "Règle de mise en surbrillance des cellules avec Texte qui contient" car bien entendu le fichier présenté est un exemple que je dois adapté.
je joins à nouveau le dernier fichier traité.
Merci encore pour votre patience
 

Pièces jointes

  • Classeur2.xlsm
    27 KB · Affichages: 12
Solution
;) comme dit au dessus : A mettre en début de macro.
VB:
Sub CopyFormatCC()
Dim wSh As Worksheet, Rng As Range
Application.ScreenUpdating = false
Set Rng = ThisWorkbook.Worksheets("MOD").Columns("C")
Rng.Copy
For Each wSh In ThisWorkbook.Worksheets
If wSh.Name <> "MOD" Then
wSh.Columns("A:H").PasteSpecial Paste:=xlPasteFormats
wSh.Cells.ColumnWidth = 20
wSh.Columns("C:C").ColumnWidth = 70
End If
Next wSh
Set Rng = Nothing
End Sub
Impeccale Sylvanu merci pour votre patience et votre science. A bientôt peut-être

sylvanu

XLDnaute Barbatruc
Supporter XLD
BONJOUR Bobafric,
Si j'ai bien compris, il suffit de reprendre les MFC.
Par ex pour John, remplacez la MFC par :
VB:
=NB.SI($C1;"*John*")>0
On obtient alors :
1673276812097.png

Bien sur il faudra relancer la macro pour remettre à jour les MFC.
Par contre, si deux noms sont reconnus, alors seul le dernier l'emportera, par ex :

1673276938002.png
 

bobafric

XLDnaute Occasionnel
BONJOUR Bobafric,
Si j'ai bien compris, il suffit de reprendre les MFC.
Par ex pour John, remplacez la MFC par :
VB:
=NB.SI($C1;"*John*")>0
On obtient alors :
Regarde la pièce jointe 1159900
Bien sur il faudra relancer la macro pour remettre à jour les MFC.
Par contre, si deux noms sont reconnus, alors seul le dernier l'emportera, par ex :

Regarde la pièce jointe 1159902
Content de te revoir Sylvanu
Je ne suis pas dégourdi et je n'arrive pas à appliquer ta solution.
Je joins le fichier avec quelques modifs (exemple avec john) sur la MFC
 

Pièces jointes

  • Classeur2 (1).xlsm
    27.3 KB · Affichages: 4

sylvanu

XLDnaute Barbatruc
Supporter XLD

Pièces jointes

  • Classeur2 (1) (2).xlsm
    25.7 KB · Affichages: 3

bobafric

XLDnaute Occasionnel
J'ai écrit :

Donc on remplace :
VB:
=$C1="JOHN"
par
=NB.SI($C1;"*John*")>0
et non pas par
=$C1="NB.SI($C1;"*John*")>0"
Dans la PJ j'ai fait le remplacement, ce que je voulais éviter. :)

Excusez-moi pour le retard, j'ai tout compris pour le code.
Mais lorsque je relance la macro toutes les colonnes sont modifiées en largeur.
J'ai essayé de compléter la macro pour remettre les colonnes à la forme initiale, sans résultat.
Je suis nul !!
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Mais lorsque je relance la macro toutes les colonnes sont modifiées en largeur.
Comme depuis le début puisque c'est votre macro ! et que je n'y ai pas touché. Elle fait :
VB:
wSh.Columns("A:H").PasteSpecial Paste:=xlPasteFormats
Donc recopie les formats, largeur de colonnes comprises.
Vous pouvez ajouter après cette ligne :
Code:
wSh.Cells.ColumnWidth = 20
qui figera la largeur des colonnes.
 

bobafric

XLDnaute Occasionnel
Comme depuis le début puisque c'est votre macro ! et que je n'y ai pas touché. Elle fait :
VB:
wSh.Columns("A:H").PasteSpecial Paste:=xlPasteFormats
Donc recopie les formats, largeur de colonnes comprises.
Vous pouvez ajouter après cette ligne :
Code:
wSh.Cells.ColumnWidth = 20
qui figera la largeur des colonnes.
Merci Sylvanu on avance, le code fonctionne les colonnes ont le même format 20, et il me convient pour toutes les colonnes sauf la colonne C qui doit faire 70
 

bobafric

XLDnaute Occasionnel
Merci Sylvanu on avance, le code fonctionne les colonnes ont le même format 20, et il me convient pour toutes les colonnes sauf la colonne C qui doit faire 70
ça y est Sylvanu j'y suis arrivé, le code complet ci-dessous, pas trop catholique mais ça marche
Option Explicit

Sub CopyFormatCC()
Dim wSh As Worksheet, Rng As Range
Set Rng = ThisWorkbook.Worksheets("MOD").Columns("C")
Rng.Copy
For Each wSh In ThisWorkbook.Worksheets
If wSh.Name <> "MOD" Then
wSh.Columns("A:H").PasteSpecial Paste:=xlPasteFormats
wSh.Cells.ColumnWidth = 20
wSh.Columns("C:C").ColumnWidth = 70
End If
Next wSh
Set Rng = Nothing
End Sub
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
;) comme dit au dessus : A mettre en début de macro.
VB:
Sub CopyFormatCC()
Dim wSh As Worksheet, Rng As Range
Application.ScreenUpdating = false
Set Rng = ThisWorkbook.Worksheets("MOD").Columns("C")
Rng.Copy
For Each wSh In ThisWorkbook.Worksheets
If wSh.Name <> "MOD" Then
wSh.Columns("A:H").PasteSpecial Paste:=xlPasteFormats
wSh.Cells.ColumnWidth = 20
wSh.Columns("C:C").ColumnWidth = 70
End If
Next wSh
Set Rng = Nothing
End Sub
 

bobafric

XLDnaute Occasionnel
;) comme dit au dessus : A mettre en début de macro.
VB:
Sub CopyFormatCC()
Dim wSh As Worksheet, Rng As Range
Application.ScreenUpdating = false
Set Rng = ThisWorkbook.Worksheets("MOD").Columns("C")
Rng.Copy
For Each wSh In ThisWorkbook.Worksheets
If wSh.Name <> "MOD" Then
wSh.Columns("A:H").PasteSpecial Paste:=xlPasteFormats
wSh.Cells.ColumnWidth = 20
wSh.Columns("C:C").ColumnWidth = 70
End If
Next wSh
Set Rng = Nothing
End Sub
Impeccale Sylvanu merci pour votre patience et votre science. A bientôt peut-être
 

Discussions similaires

Statistiques des forums

Discussions
312 079
Messages
2 085 131
Membres
102 789
dernier inscrit
raoul6768