Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Simplification pour faire une boucle

  • Initiateur de la discussion Initiateur de la discussion Gexk5
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Gexk5

XLDnaute Occasionnel
Bonsoir le forum;

Voici mon souci, afin de ne pas perdre mes mises en formes conditionnelles par mauvaise manip de l'utilisateur, je voudrais que mes mises en formes soient recrées à l'ouverture de mon fichier, avec l'enregistreur de macro, j'ai sorti un code, il fonctionne tres bien, seulement il ne traite qu'une parti de ma feuille, comment modifier ce code afin qu'il traite toute la feuille???
J'ai un decalage de 8 lignes a chaque fois.
Je vous donne le code

Merci d'avance a tous ceux qui se pencherons sur mon sujet

Sub Macro3()
Range("C7:S10").Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=$T$3=""V1"""
Selection.FormatConditions(1).Font.ColorIndex = 2
Selection.FormatConditions(1).Interior.ColorIndex = 2
Range("U7:W10").Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=$T$3=""V1"""
Selection.FormatConditions(1).Font.ColorIndex = 2
Selection.FormatConditions(1).Interior.ColorIndex = 2
Range("O6:S6").Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=$T$3=""V2"""
Selection.FormatConditions(1).Font.ColorIndex = 2
Selection.FormatConditions(1).Interior.ColorIndex = 2
Range("O10:S10").Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=$T$3=""V1"""
Selection.FormatConditions(1).Font.ColorIndex = 2
Selection.FormatConditions(1).Interior.ColorIndex = 2
Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=$T$3=""V2"""
Selection.FormatConditions(2).Font.ColorIndex = 2
Selection.FormatConditions(2).Interior.ColorIndex = 2
Range("T7").Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=$T$3=""V1"""
Selection.FormatConditions(1).Font.ColorIndex = 2
Selection.FormatConditions(1).Interior.ColorIndex = 2
Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=$T$3=""V2"""
Selection.FormatConditions(2).Font.ColorIndex = xlAutomatic
Selection.FormatConditions(2).Interior.ColorIndex = 35
Range("A1").Select
End Sub

' decalage de 8 lignes a chaque fois jusqu'à la ligne 250
'Range("C15:S18").Select
'Selection.FormatConditions.Delete
'Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=$T$11=""V1"""
'Selection.FormatConditions(1).Font.ColorIndex = 2
'Selection.FormatConditions(1).Interior.ColorIndex = 2


@micalement
 
Re : Simplification pour faire une boucle

Bonsoir Gexk5

J ai 2 autres approche peut etre si tu veut

la premiere tu crée une copie de la feuille en question
(que par la suite tu masquera ) et ensuite tu adapte ce code

pour qu il fonctionne chez toi que voici

Sub Macro1()
'selection de la feuille modele
Sheets("Feuil2").Select
Cells.Select
Selection.Copy
Sheets("Feuil1").Select
'apres le retour sur la feuille
'application de la mise en forme du modele
Range("A1").Select
Selection.PasteSpecialPaste:=xlFormats,Operation:=xlNone,SkipBlanks:=_False, Transpose:=False
Application.CutCopyMode = False
End Sub
 
Re : Simplification pour faire une boucle

Re salut

la 2ème

consiste a verrouillé les cellules qui comporte ces mise en forme conditionnelle

a moins que les utilisateurs de ce fichier aient besoin de saisir des données a

la main dans ces cellules contenant ces MFC

a+
 
Re : Simplification pour faire une boucle

Bonjour,
Tu peux essayer ça :
Code:
Sub Macro3()
For i = 1 To 32
  k = i * 7 + i - 1
  kk = 3 + 8 * (i - 1)
  With Range("C" & k & ":S" & k + 3, "U" & k & ":W" & k + 3)
    .FormatConditions.Delete
    .FormatConditions.Add Type:=xlExpression, Formula1:="=$T$" & kk & "=""V1"""
    .FormatConditions(1).Font.ColorIndex = 2
    .FormatConditions(1).Interior.ColorIndex = 2
  End With
  With Range("O" & k - 1 & ":S" & k - 1)
    .FormatConditions.Delete
    .FormatConditions.Add Type:=xlExpression, Formula1:="=$T$" & kk & "=""V2"""
    .FormatConditions(1).Font.ColorIndex = 2
    .FormatConditions(1).Interior.ColorIndex = 2
  End With
  With Range("O" & k + 3 & ":S" & k + 3)
    .FormatConditions.Delete
    .FormatConditions.Add Type:=xlExpression, Formula1:="=$T$" & kk & "=""V1"""
    .FormatConditions(1).Font.ColorIndex = 2
    .FormatConditions(1).Interior.ColorIndex = 2
    .FormatConditions.Add Type:=xlExpression, Formula1:="=$T$" & kk & "=""V2"""
    .FormatConditions(2).Font.ColorIndex = 2
    .FormatConditions(2).Interior.ColorIndex = 2
  End With
  With Range("T" & k)
    .FormatConditions.Delete
    .FormatConditions.Add Type:=xlExpression, Formula1:="=$T$" & kk & "=""V1"""
    .FormatConditions(1).Font.ColorIndex = 2
    .FormatConditions(1).Interior.ColorIndex = 2
    .FormatConditions.Add Type:=xlExpression, Formula1:="=$T$" & kk & "=""V2"""
    .FormatConditions(2).Font.ColorIndex = xlAutomatic
    .FormatConditions(2).Interior.ColorIndex = 35
  End With
Next
End Sub
A+
 
Re : Simplification pour faire une boucle

Re le forum

Test hyper rapide, le code de Bof fonctionne a merveille, mais ou allez vous chercher tout ca?????
Boucle simple, ca va pour moi , mais des comme celle ci !!!!!!!!!!!!!!!!
Merci encore

@maicalement
 
Re : Simplification pour faire une boucle

Salut

un peu plus condensé :

Code:
Dim Plage1 As Range, Plage2 As Range
Dim Plage3 As Range, Plage4 As Range, Plage5 As Range
  Set Plage1 = Range("C7:S10, U7:W10, O6:S6, T7")
  Set Plage2 = Range("O6:S6, C7:S10, U7:W10, T7")
  Set Plage3 = Range("O6:S6")
  Set Plage4 = Range("O10:S10")
  Set Plage5 = Range("T7")

  Do
    Plage1.FormatConditions.Delete

    With Plage2.FormatConditions.Add(xlExpression, , "=$T$3=""V1""")
      .Font.ColorIndex = 2
      .Interior.ColorIndex = 2
    End With
    Plage3.FormatConditions(1).Modify xlExpression, , "=$T$3=""V2"""

    With Plage4.FormatConditions.Add(xlExpression, , "=$T$3=""V2""")
      .Font.ColorIndex = 2
      .Interior.ColorIndex = 2
    End With

    With Plage5.FormatConditions.Add(xlExpression, , "=$T$3=""V2""")
      .Font.ColorIndex = xlAutomatic
      .Interior.ColorIndex = 35
    End With

    Set Plage1 = Plage1.Offset(8, 0): Set Plage2 = Plage2.Offset(8, 0)
    Set Plage3 = Plage3.Offset(8, 0): Set Plage4 = Plage4.Offset(8, 0)
    Set Plage5 = Plage5.Offset(8, 0)

  Loop Until Plage4.Cells(1, 1).Row > 250

Edition : zut, je n'avais pas tout copié l'exemple, et je n'avais pas vu qu'il fallait répéter l'opération plus bas.
Bon, je la corrige quand même pour ne pas présenter un truc qui ne fonctionne pas, mais ça perd de son intérêt
 
Dernière édition:
Re : Simplification pour faire une boucle

Re
merci de ton interet pour mon problème Ti, avec le code de Bof, cela fonctionne parfaitement, si tu complètes quand meme ton code, peux tu me le commenter car avec les Offset, je suis un peu( beaucoup) paumé.
Merci
@micalement
 
Re : Simplification pour faire une boucle

non, ça y est, tel que je l'ai édité, il est déjà corrigé pour fonctionner correctement.
Les offset, c'est très simple, les plages sont définies au fois au départ, ensuite à chaque boucle, elles sont décalées de 8 lignes. Cette façon de faire est beaucoup plus rapide que n'importe quelle autre.
 
Re : Simplification pour faire une boucle

RE,Ti
merci pour tes explications sur les Offset et les plages, mais ton code ne fonctionne pas contrairement à celui de Bof, en effet, j'ai l'impression qu'il prend pour référence la première plage de cellule , si je mets V1 en T3, ca me met tout le tableau avec la meme MFC, alors qu'en T 19 , je peux tres bien avoir V2, et la MFC n'est pas la mème.
Idem si je mets V2 en T3
Je vais tout de mème étudier ton code pour essayer de trouver ou est le problème.

Merci quand mème
@micalement
 
Re : Simplification pour faire une boucle

ah oui, je n'avais pas vu que $T$3 aussi évoluait, bon voilà la correction. Ceci dit la macro de Bof est fausse, ses plages ne correspondent pas aux tiennes. Pour le vérifier, il faut sélectionner toute la feuille, puis donner aux cellules une couleur quelconque.

Code:
Sub Macro4()
Dim R&, Plage1 As Range, Plage2 As Range
Dim Plage3 As Range, Plage4 As Range, Plage5 As Range
  Set Plage1 = Range("C7:S10, U7:W10, O6:S6, T7")
  Set Plage2 = Range("O6:S6, C7:S10, U7:W10, T7")
  Set Plage3 = Range("O6:S6")
  Set Plage4 = Range("O10:S10")
  Set Plage5 = Range("T7")

  R = 3
  Do
    Plage1.FormatConditions.Delete
    With Plage2.FormatConditions.Add(xlExpression, , "=$T$" & R & "=""V1""")
      .Font.ColorIndex = 2
      .Interior.ColorIndex = 2
    End With
    Plage3.FormatConditions(1).Modify xlExpression, , "=$T$" & R & "=""V2"""

    With Plage4.FormatConditions.Add(xlExpression, , "=$T$" & R & "=""V2""")
      .Font.ColorIndex = 2
      .Interior.ColorIndex = 2
    End With

    With Plage5.FormatConditions.Add(xlExpression, , "=$T$" & R & "=""V2""")
      .Font.ColorIndex = xlAutomatic
      .Interior.ColorIndex = 35
    End With

    Set Plage1 = Plage1.Offset(8, 0): Set Plage2 = Plage2.Offset(8, 0)
    Set Plage3 = Plage3.Offset(8, 0): Set Plage4 = Plage4.Offset(8, 0)
    Set Plage5 = Plage5.Offset(8, 0): R = R + 8
  Loop Until Plage4.Cells(1, 1).Row > 250
End Sub
 
Dernière édition:
Re : Simplification pour faire une boucle

Re le Forum, Ti , Bof

Merci Ti pour la correction, cela fonctionne maintenant, a propos du code de Bof, il fonctionne lui aussi exactement comme le tien, j'ai fais ce que tu m'as dit, colorer toutes les cellules de ma feuille, et que je lance la macro de Bof ou la tienne , j'ai exactement le meme resultat sur toute ma feuille.
Merci encore a tous les deux , de toute manière j'aurai bien été incapable d'ecrire l'un ou l'autre des ces codes, encore un peu complexe pour moi

@micalement
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

S
  • Question Question
Microsoft 365 comparaison texte
Réponses
5
Affichages
827
S
Réponses
2
Affichages
862
B
  • Question Question
Microsoft 365 colorer une plage
Réponses
2
Affichages
970
bd.afaf
B
J
Réponses
22
Affichages
3 K
jui42
J
Réponses
2
Affichages
1 K
M
Réponses
11
Affichages
3 K
Réponses
1
Affichages
1 K
T
  • Résolu(e)
XL pour MAC lenteur du vba
Réponses
16
Affichages
3 K
I
Réponses
0
Affichages
1 K
I
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…