Macro appliquées à certaine cellule

Bonjour,

Voici mon soucis:

J'ai réussi à créer une macro qui me conviens à un détail près, celle-ci s'applique au cellule compris entre les deux "range" que j'ai renseigné.

Je voudrais pouvoir l'appliquer uniquement sur une plage A1:A5 et A10: A15 sans qu'elle ne s'applique sur A6:A9

J’espère avoir été assez clair, je vous joint mon classeur.

Mathieu

8classeur1.xlsm (14.72 Ko)

Bonjour Mathieu,

à tester,

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Union(Range("A1:A5"), Range("A10:A15"))) Is Nothing Then
    With Target
        Select Case .Interior.ColorIndex
        Case xlNone:
            .Interior.ColorIndex = 4
            .Offset(0, 1).Select

        Case 4:
            .Interior.ColorIndex = 45
            .Offset(0, 1).Select

        Case 45:
            .Interior.ColorIndex = 3
            .Offset(0, 1).Select

        Case 3:
            .Interior.ColorIndex = xlNone
            .Offset(0, 1).Select
        End Select
    End With
End If
End Sub

Merci

Il me reste juste un petit soucis, si je met deux plage avec deux cellules collé sur la même ligne, lors de la modification de celle de gauche, celle de droite change également.

Existe t-il une solution pour ça?

Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Not Intersect(Target, Union(Range("A1:A5"), Range("A10:A15"), Range("B2:B5"))) Is Nothing Then With Target Select Case .Interior.ColorIndex Case xlNone: .Interior.ColorIndex = 4 .Offset(0, 1).Select Case 4: .Interior.ColorIndex = 45 .Offset(0, 1).Select Case 45: .Interior.ColorIndex = 3 .Offset(0, 1).Select Case 3: .Interior.ColorIndex = xlNone .Offset(0, 1).Select End Select End With End If End Sub

Il me reste juste un petit soucis, si je met deux plage avec deux cellules collé sur la même ligne, lors de la modification de celle de gauche, celle de droite change également.

c'est normal puisque la macro fait une sélection et donc la macro s'exécute à nouveau,

pour empêcher l'événement de se reproduire il faut ajouter Application.EnableEvents = False

et remettre à True avant la fin

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.EnableEvents = False
If Not Intersect(Target, Union(Range("A1:A5"), Range("A10:A15"), Range("B2:B5"))) Is Nothing Then
    With Target
        Select Case .Interior.ColorIndex
        Case xlNone:
            .Interior.ColorIndex = 4
            .Offset(0, 1).Select

        Case 4:
            .Interior.ColorIndex = 45
            .Offset(0, 1).Select

        Case 45:
            .Interior.ColorIndex = 3
            .Offset(0, 1).Select

        Case 3:
            .Interior.ColorIndex = xlNone
            .Offset(0, 1).Select
        End Select
    End With
End If
Application.EnableEvents = True
End Sub

Parfait !!

Merci à vous deux

Finalement j'ai une autre question:

Est-il possible qu'à la place de choisir une plage, on puisse appliquer cette macro uniquement sur les cellules avec une bordure?

Je gagnerais beaucoup de temps.

En bonus:

Si on peux exclure les cellules avec bordures mais avec du texte également(avec précision sur les textes accepté) ça serait parfait

re,

peux-tu joindre ton fichier avec explication ?

Voici le fichier,

En gros je voudrais que pouvoir utilisé ma macro si une case est encadrée et vide ou si une case est encadré avec un texte en particulier dedans.

Dans mon document par exemple pouvoir utiliser la macro sur la case encadrer avec OK dedans et dans les cases vides et encadrer.

Mais ne pas pouvoir utilisé la macro dans la case encadrée avec NOK dedans.

ou sinon de pouvoir utilisé la macro sur les cases encadrées en "gras" et pas sur les cases encadrées en "normal"

6classeur2.xlsm (16.16 Ko)

re,

tu peux verifier les bordures et la valeur de cette facon

With Target
 If .Borders.LineStyle = xlContinuous And .Borders.Weight = xlThick And .Value = "OK" Then
End With

Merci j'ai réussi à faire ce que je voulais !!

Rechercher des sujets similaires à "macro appliquees certaine"