IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Comment appliquer 1 mise en forme condit. a qq endroits precis de mes worksheets. [XL-2002]


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Comment appliquer 1 mise en forme condit. a qq endroits precis de mes worksheets.
    Bonjour,

    J'ai trouve sur internet les lignes ci-dessous qui me permettent d'appliquer une mise en forme conditionnelle >3 conditions mais le traitement est affreusement long puisqu'il agit partout... je ne sais pas comment modifier ce code pour appliquer cette mise en forme sur seulement deux onglets distincts (onglet 1 "PRO" et onglet 2 "AM0") et surtout des plages de cellules bien précises pour chaque (comme C6:G6 ainsi qu'une autre zone Q6:AN23 pour l'onglet 1 et colonne E + colonne G + colonne I pour l'onglet 2). Merci de votre aide...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    Sub Test()
    'Déclaration des variables -------------------------
    Dim Cel As Range
    Dim F As Worksheet
    'MEI ----------------------------
    Application.ScreenUpdating = False
    'Blocage ragraîchissement écran
    'Traitement------------------------
    For Each F In Worksheets
    'Pour chaque feuille du classeur
    For Each Cel In F.UsedRange
    'Pour chaque cellule de la plage utilisée de la feuille
    Select Case Cel.Value
    'définir case = valeur de cel
        'couleur : vert
    Case "1"
    Cel.Interior.ColorIndex = 4
    Case "1/1"
    Cel.Interior.ColorIndex = 4
    Case "1/2"
    Cel.Interior.ColorIndex = 4
    Case "2/1"
    Cel.Interior.ColorIndex = 4
    Case "V"
    Cel.Interior.ColorIndex = 4
     
        'couleur : jaune
    Case "2"
    Cel.Interior.ColorIndex = 6
    Case "1/3"
    Cel.Interior.ColorIndex = 6
    Case "1/4"
    Cel.Interior.ColorIndex = 6
    Case "2/2"
    Cel.Interior.ColorIndex = 6
    Case "3/1"
    Cel.Interior.ColorIndex = 6
    Case "4/1"
    Cel.Interior.ColorIndex = 6
    Case "J"
    Cel.Interior.ColorIndex = 6
     
        'couleur : orange
    Case "3"
    Cel.Interior.ColorIndex = 44
    Case "2/3"
    Cel.Interior.ColorIndex = 44
    Case "2/4"
    Cel.Interior.ColorIndex = 44
    Case "3/3"
    Cel.Interior.ColorIndex = 44
    Case "3/2"
    Cel.Interior.ColorIndex = 44
    Case "4/2"
    Cel.Interior.ColorIndex = 44
    Case "O"
    Cel.Interior.ColorIndex = 44
     
        'couleur : rouge
    Case "4"
    Cel.Interior.ColorIndex = 3
    Case "3/4"
    Cel.Interior.ColorIndex = 3
    Case "4/4"
    Cel.Interior.ColorIndex = 3
    Case "4/3"
    Cel.Interior.ColorIndex = 3
    Case "R"
    Cel.Interior.ColorIndex = 3
     
     
    Case Else
    Cel.Interior.ColorIndex = xlNone
    End Select
    Next Cel
    Next F
    Application.ScreenUpdating = True
    End Sub

  2. #2
    Membre chevronné Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Points : 1 999
    Points
    1 999
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each F In Worksheets
    Ici tu parcours toutes les feuilles, tu peux faire un test sur F.name ou bien accéder seulement à ta feuille :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    with  worksheets("nom de la feuille")
    . '...
    end with
    Ici aussi une boucle au lieu de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each Cel In F.UsedRange
    tu peux faire :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each Cel In worksheets("nom de la feuille").range(Q6:AN23)

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Merci pour ces éléments de réponse. Toutefois j'ai une méconnaissance de la façon dont je dois utiliser ces instructions... j'ai beau tenter de remplacer tels bouts de codes par ce que vous me proposez cela ne fonctionne plus. Auparavant cela fonctionnait mais c'etait tres long. Avec ces nouvelles lignes je n'arrive plus a faire fonctionner la macro. Pourriez vous m'eclairer de facon plus detaillee ? Merci encore pour votre aide.

  4. #4
    Membre chevronné Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Points : 1 999
    Points
    1 999
    Par défaut
    Bonjour,

    J'ai fait ça mais je ne suis pas sur que ce soit vraiment plus rapide, peut-être que d'autres te donnerons des réponses plus adaptées :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
     
    Sub Test()
    'Déclaration des variables -------------------------
    Dim Macellule As Range
    Dim F As Worksheet
    Dim i As Integer
     
    For i = 1 To 2
    If i = 1 Then
        Set F = Worksheets("PRO")
        Set Macellule = Union(Range("c6:G6"), Range("Q6:AN23"))
    Else
        Set F = Worksheets("AMO")
    Set Macellule = Union(Range("E:E"), Range("G:G"), Range("I:I"))
    End If
    ' For Each F In Worksheets
    'Pour chaque feuille du classeur
     For Each cel In Macellule
        couleur F, cel
    Next cel
    Next i
     
    End Sub
     
    Sub couleur(ByVal F As Worksheet, ByVal cel As Range)
    'Pour chaque cellule de la plage utilisée de la feuille
    Select Case F.Cells(cel.Row, cel.Column)
        Case "1"
        cel.Interior.ColorIndex = 4
        Case "1/1"
        cel.Interior.ColorIndex = 4
        Case "1/2"
        cel.Interior.ColorIndex = 4
        Case "2/1"
        cel.Interior.ColorIndex = 4
        Case "V"
        cel.Interior.ColorIndex = 4
        Case "2"
        cel.Interior.ColorIndex = 6
        Case "1/3"
        cel.Interior.ColorIndex = 6
        Case "1/4"
        cel.Interior.ColorIndex = 6
        Case "2/2"
        cel.Interior.ColorIndex = 6
        Case "3/1"
        cel.Interior.ColorIndex = 6
        Case "4/1"
        cel.Interior.ColorIndex = 6
        Case "J"
        cel.Interior.ColorIndex = 6
        Case "3"
        cel.Interior.ColorIndex = 44
        Case "2/3"
        cel.Interior.ColorIndex = 44
        Case "2/4"
        cel.Interior.ColorIndex = 44
        Case "3/3"
        cel.Interior.ColorIndex = 44
        Case "3/2"
        cel.Interior.ColorIndex = 44
        Case "4/2"
        cel.Interior.ColorIndex = 44
        Case "O"
        cel.Interior.ColorIndex = 44
        Case "4"
        cel.Interior.ColorIndex = 3
        Case "3/4"
        cel.Interior.ColorIndex = 3
        Case "4/4"
        cel.Interior.ColorIndex = 3
        Case "4/3"
        cel.Interior.ColorIndex = 3
        Case "R"
        cel.Interior.ColorIndex = 3
        Case Else
        cel.Interior.ColorIndex = xlNone
    End Select
    End Sub
    Ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set Macellule = Union(Range("E:E"), Range("G:G"), Range("I:I"))
    tu parcours toute la colonne si tu as des lignes vides en fin de colonne tu aurais intérêt a les déterminées avant de boucler sur les cellules.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 13
    Dernier message: 28/11/2011, 13h55
  2. Comment appliquer une mise en forme à de nouvelles feuilles?
    Par jacksparot dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 20/04/2011, 20h09
  3. Réponses: 5
    Dernier message: 17/06/2008, 15h17
  4. Comment garder la mise en forme d'un textarea ?
    Par dns78 dans le forum Langage
    Réponses: 4
    Dernier message: 09/06/2007, 14h53
  5. comment fixer la mise en forme
    Par tenderstoune dans le forum Balisage (X)HTML et validation W3C
    Réponses: 17
    Dernier message: 04/05/2007, 09h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo