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 :

macro bordure en fonction de la cellule et de la valeur


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 2
    Par défaut macro bordure en fonction de la cellule et de la valeur
    Bonjour à tous,

    Je suis débutant en programmation sur VBA, depuis quelques jours j'essaye de faire une macro mais là je bloque, est ce que quelqu'un pourrait m'aider svp ?
    Voici mon problème :
    Je veux créer une macro qui modifie les bordures automatiquement des case X si case Y est change de valeur. En gros si je modifie l'une des cases suivantes (BR18, BV18, BZ18, CD18) je veux qu'il sélectionne la case décalé de 0 ligne et 2 colonnes et qu'il modifie ses bordures en fonctions de la valeur de la case (BR18, BV18, BZ18, CD18)

    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
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    Sub NV()
    Dim Rng As Range
    If Not Intersect(ActiveCell, Range("BR19")) Is Nothing Then
        Set Rng = Range("BR18")
    If Not Intersect(ActiveCell, Range("BV19")) Is Nothing Then
        Set Rng = Range("BV18")
    If Not Intersect(ActiveCell, Range("BZ19")) Is Nothing Then
        Set Rng = Range("BZ18")
    If Not Intersect(ActiveCell, Range("CD19")) Is Nothing Then
        Set Rng = Range("CD18")
            If Rng = 1 Then
                Rng.Offset(0, 2).Select
                Selection.Borders(xlDiagonalDown).LineStyle = xlNone
                Selection.Borders(xlDiagonalUp).LineStyle = xlNone
                With Selection.Borders(xlEdgeLeft)
                .LineStyle = xlContinuous
                .ColorIndex = xlAutomatic
                .TintAndShade = 0
                .Weight = xlThick
                End With
                With Selection.Borders(xlEdgeTop)
                .LineStyle = xlDash
                .ThemeColor = 1
                .TintAndShade = -0.249946592608417
                .Weight = xlMedium
                End With
                With Selection.Borders(xlEdgeBottom)
                .LineStyle = xlDash
                .ThemeColor = 1
                .TintAndShade = -0.249946592608417
                .Weight = xlMedium
                End With
                With Selection.Borders(xlEdgeRight)
                .LineStyle = xlDash
                .ThemeColor = 1
                .TintAndShade = -0.249946592608417
                .Weight = xlMedium
                End With
                Selection.Borders(xlInsideVertical).LineStyle = xlNone
                Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
            End If
            If Rng = 2 Then
                Rng.Offset(0, 2).Select
                Selection.Borders(xlDiagonalDown).LineStyle = xlNone
                Selection.Borders(xlDiagonalUp).LineStyle = xlNone
                With Selection.Borders(xlEdgeLeft)
                .LineStyle = xlContinuous
                .ColorIndex = xlAutomatic
                .TintAndShade = 0
                .Weight = xlThick
                End With
                With Selection.Borders(xlEdgeTop)
                .LineStyle = xlContinuous
                .ColorIndex = xlAutomatic
                .TintAndShade = 0
                .Weight = xlThick
                End With
                With Selection.Borders(xlEdgeBottom)
                .LineStyle = xlDash
                .ThemeColor = 1
                .TintAndShade = -0.249946592608417
                .Weight = xlMedium
                End With
                With Selection.Borders(xlEdgeRight)
                Selection.Borders (xlEdgeBottom)
                .LineStyle = xlDash
                .ThemeColor = 1
                .TintAndShade = -0.249946592608417
                .Weight = xlMedium
            End If
            If Rng = 3 Then
                Rng.Offset(0, 2).Select
                Selection.Borders(xlDiagonalDown).LineStyle = xlNone
                Selection.Borders(xlDiagonalUp).LineStyle = xlNone
                With Selection.Borders(xlEdgeLeft)
                .LineStyle = xlContinuous
                .ColorIndex = xlAutomatic
                .TintAndShade = 0
                .Weight = xlThick
                End With
                With Selection.Borders(xlEdgeTop)
                .LineStyle = xlContinuous
                .ColorIndex = xlAutomatic
                .TintAndShade = 0
                .Weight = xlThick
                End With
                With Selection.Borders(xlEdgeBottom)
                .LineStyle = xlDash
                .ThemeColor = 1
                .TintAndShade = -0.249946592608417
                .Weight = xlMedium
                End With
                With Selection.Borders(xlEdgeRight)
                .LineStyle = xlContinuous
                .ColorIndex = xlAutomatic
                .TintAndShade = 0
                .Weight = xlThick
                End With
                Selection.Borders(xlInsideVertical).LineStyle = xlNone
                Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
            End If
    End If
    End If
    End If
    End If
    End Sub

    Je vous remercie par avance de votre aide.

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Une piste à creuser :
    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
     
    Private Sub Worksheet_Change(ByVal Target As Range)
     
        NV Target
     
    End Sub
     
    Sub NV(Cel As Range)
     
        Dim Rng As Range
     
        If Cel.Address(0, 0) = "BR19" Then Set Rng = Range("BR18")
        If Cel.Address(0, 0) = "BV19" Then Set Rng = Range("BV18")
        If Cel.Address(0, 0) = "BZ19" Then Set Rng = Range("BZ18")
        If Cel.Address(0, 0) = "CD19" Then Set Rng = Range("CD18")
     
        If Rng Is Nothing Then Exit Sub
     
        Select Case Rng.Value
     
            Case 1
                Rng.Offset(1, 2).Borders.LineStyle = xlNone
                Rng.Offset(1, 2).Borders.LineStyle = xlContinuous
                Rng.Offset(1, 2).Borders.Weight = xlMedium
                Rng.Offset(1, 2).Borders.ColorIndex = 3
     
            Case 2
                'la suite...
     
        End Select
     
    End Sub

  3. #3
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 681
    Par défaut
    Bonjour,

    ça ne serait pas plus simple a faire avec des MFC ?

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Par défaut
    Bonjour,

    le pb des MFC c'est qu'on ne peut agir sur l'épaisseur, chose qui a l'air d'être présente dans son code.
    Il faudrait qu'il se limite à un changement de couleur.
    eric

  5. #5
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 681
    Par défaut
    Citation Envoyé par eriiic Voir le message
    le pb des MFC c'est qu'on ne peut agir sur l'épaisseur
    J'ignorais ce détail, merci pour la précision

  6. #6
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 2
    Par défaut
    Bonjour,

    Merci beaucoup Theze d'avoir répondu, le code que t'as écrit en commentaire marche niquel (y). C'est exactement ce dont j'avais besoin.

    Pour info : j'ai bien essayé de le faire avec des MFC mais comme précisé par eriiic, tu peux pas modifie l'épaisseur de tes bordures avec une MFC.

    Merci encore à vous, bonne journée .

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 31/01/2014, 08h19
  2. Macro automatique en fonction de la valeur d'une cellule
    Par ElPibeOro dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 17/07/2012, 13h52
  3. lancer une macro en fonction si une cellule est vide ou non
    Par timtof2011 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 26/11/2011, 14h12
  4. lancer une macro en fonction si une cellule est vide ou non
    Par timtof2011 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 15/11/2011, 10h01
  5. Réponses: 2
    Dernier message: 17/03/2011, 21h45

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