Simplification du code

jmde

XLDnaute Nouveau
Bonjour,

Comment simplifier ces deux codes ?

Le premier code me permet de supprimer sur la plage AF58:BK62 la couleur de fond, et la ligne horizontale du haut :

Code:
'--- Retouche le cadre du bas
Range("[COLOR="red"]AF58:BK62[/COLOR]").Select
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlMedium
    End With
    Selection.Borders(xlEdgeTop).LineStyle = xlNone
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlMedium
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlMedium
    End With
    Selection.Borders(xlInsideVertical).LineStyle = xlNone
    Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
    With Selection.Interior
        .PatternColorIndex = xlAutomatic
        .ThemeColor = xlThemeColorDark1
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
Le deuxième code me permet de supprimer l’intituler Equipe de la plage AH17:BL18,
puis de sélectionner la plage phase finale AF11:AT22, et de créer l’intitulé PHASES FINALES (FINALES doit être sous PHASES, et la plage AH17:BL18 avec une bordure sur les 4 cotés).


Code:
'--- Supprime l'intitulé [COLOR="red"]Equipe[/COLOR]
     Range("[COLOR="Red"]AH17:BL18[/COLOR]").Select
     Selection.ClearContents
     With Selection
         .HorizontalAlignment = xlCenter
         .VerticalAlignment = xlCenter
         .WrapText = False
         .Orientation = 0
         .AddIndent = False
         .IndentLevel = 0
         .ShrinkToFit = False
         .ReadingOrder = xlContext
         .MergeCells = False
    End With
    
'--- Sélection de la plage [COLOR="red"]phase finale[/COLOR]
     Range("[COLOR="Blue"]AF11:AT22[/COLOR]").Select
     With Selection
         .HorizontalAlignment = xlCenter
         .VerticalAlignment = xlCenter
         .WrapText = True
         .Orientation = 0
         .AddIndent = False
         .IndentLevel = 0
         .ShrinkToFit = False
         .ReadingOrder = xlContext
         .MergeCells = True
    End With
    
'--- Création de l'intitulé Phases finales
     ActiveCell.FormulaR1C1 = "[COLOR="red"]PHASES             FINALES[/COLOR]"
     With ActiveCell.Characters(Start:=1, Length:=19).Font
         .Name = "Colonna MT"
         .FontStyle = "Normal"
         .Size = 18
         .Strikethrough = False
         .Superscript = False
         .Subscript = False
         .OutlineFont = False
         .Shadow = False
         .Underline = xlUnderlineStyleNone
         .ColorIndex = xlAutomatic
    End With

Merci pour votre aide.

Salutations
 

soenda

XLDnaute Accro
Re : Simplification du code

Bonjour jmde, le fil

Pour le premier code, je propose :

Code:
Sub test1()
    With Range("AF58:BK62")
      .BorderAround ColorIndex:=0, Weight:=xlMedium
      .Borders(xlEdgeTop).LineStyle = xlNone
    [COLOR=YellowGreen]' traitement de la couleur ici[/COLOR]
   End With
End Sub

A plus
 
Dernière édition:

jmde

XLDnaute Nouveau
Re : Simplification du code

Bonsoir soenda,

Merci pour ta réponse c’est parfait, mais dans mon cas je dois aussi supprimer la couleur de fond,
J’ai donc modifié ton code, qui marche correctement.
Mais est-ce bien la façon de faire ?

Code:
Range("AF58:BK62").Select
    With Selection
        .Borders.LineStyle = xlContinuous
        .Borders.ColorIndex = 0
        .Borders.TintAndShade = 0
        .Borders.Weight = xlMedium
        .Interior.TintAndShade = 0
    End With
    Selection.Borders(xlEdgeTop).LineStyle = xlNone
Par contre je n’ai pas fait attention que cette plage est liée à une cellule BK2 d’une autre feuille Feuil1 du classeur.
Comment faire pour la rétablir ?

Salutations.
 

jmde

XLDnaute Nouveau
Re : Simplification du code

Bonsoir soenda,

Toutes mes excuses le problème de feuille est réglé.

Par contre sur la deuxième question on ne pourrait pas dans un premier temps alléger le code sélection par sélection comme pour la première question.

A +
Salutations..
 

soenda

XLDnaute Accro
Re : Simplification du code

Re,

@jmde : pour te faire patienté,

le code suivant supprime l'intitulé "Equipe"
et place une bordure "Medium" sur les 4 côtés
Code:
Sub test2()
    With [AH17:BL18]
        .ClearContents
        .BorderAround ColorIndex:=0, Weight:=xlMedium
    End With
End Sub
Je regarde le reste demain car il est tard.

Je me pose toutefois une question :
les 2 mots "Phase" et "Finale",
doivent-ils être orientés horizontalement ?

A plus
 

soenda

XLDnaute Accro
Re : Simplification du code

Re,

Excuse moi jmde, j'avais mal lu ta réponse de 18h47,
j'ai rajouté la suppression de la couleur de fond
dans le code suivant (en bleu)
Code:
Sub test1()
    With Range("AF58:BK62")
      .BorderAround ColorIndex:=0, Weight:=xlMedium
      .Borders(xlEdgeTop).LineStyle = xlNone
      [COLOR=RoyalBlue][B][COLOR=Blue].Interior.Pattern = xlNone[/COLOR][/B][/COLOR]
   End With
End Sub
A plus
 

soenda

XLDnaute Accro
Re : Simplification du code

Bonsoir jmde, le fil

Pour placer 2 mots l'un sur l'autre dans une même cellule :

Manuellement : Alt + RETURN

En VBA : exemple en cellule B2 (version simplifiée)

Code:
[B2] = "PHASE" & Chr(10) & "FINALE"
Tu peut bien sur utilisé un "With"...

Et pour la bordure, je te fais confiance maintenant.

A plus
 

Discussions similaires

Statistiques des forums

Discussions
312 329
Messages
2 087 329
Membres
103 517
dernier inscrit
hbenaoun63