Probleme étendue d'un champ dans une macro

Bonjour,

Dans la macro suivante, j'ai un soucis de limite du champ spécifié "D17:D173"

J'ai tenté de déclarer seulement les cellules que je voulais cocher en modifiant le champ de la façon suivante

plage = ("D17,D19, D21,D25,D27,D29") et ainsi de suite jusqu'à D173 !

Au delà d'un certain nombre de cellules, la macro ne fonctionne plus et affiche une erreur sur la ligne :

Set isect = Application.Intersect(Target, Range(plage))

Quelqu'un pourrait certainement me sortir de cette impasse car en ce moment, dans mon fichier, on peux cocher en dehors des cadres prévus !

Ci-joint fichier exemple pour une meilleure compréhension

Merci par avance

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim isect, Z$, plage

plage = "D17:D173"

If Target.Count = 1 Then

Z = Target.Value

Set isect = Application.Intersect(Target, Range(plage))

If Not isect Is Nothing Then

Target.Value = IIf(Z = "", "ü", "")

End If

End If

End Sub

9classeur1.xlsx (20.91 Ko)

Bonjour,

Tu es limité à 250 caractères pour pl.address.

Si tu as toujours la même régularité :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim pl As Range
    Set pl = Intersect(Target, Range("D17:D173"))
    If Not pl Is Nothing And Target.Count = 1 And Target.Row Mod 8 < 6 And Target.Row Mod 2 = 1 Then
        Target.Value = IIf(Target.Value = "", "ü", "")
    End If
End Sub

eric

Bonjour,

Sinon, si tes cellules n'ont aucune régularité, utilise Application.Union :

Sub Test()

    Dim Plage As Range

    Set Plage = Application.Union(Range("D7,D18,D19,D20,D21,D25,D29,D33,D37,D41,D45,D49,D53,D57,D61,D65,D69,D73,D77,D81"), _
                                  Range("D85,D89,D93,D97,D101,D105,D109,D113,D117,D121,D171,D181,D191,D201,D211,D251,D291"), _
                                  Range("D331,D371,D411,D451,D491,D531,D571,D611,D651,D691,D731,D771,D811,D851,D891,D931,D971"), _
                                  Range("D1011,D1051,D1091,D1131,D1171,D1211,D1331,D1451,D1691,D1731,D1771,D1811,D1831,D1871,D1911"))

    Plage.Select

End Sub

Merci Theze pour cette méthode "sans régularité"

Merci également à Eriiic pour la méthode avec "régularité"

Dans mon cas ou la disposition des différentes feuilles est la même, j'utiliserai la Méthode Eric

Dans les autres cas (fichiers totalement différents) où je dois cocher avec moins de régularité, je choisirai celle de Theze

Merci à vous deux pour votre dévouement et le pragmatisme dont vous faites preuve !

Re,

autre idée, appliquer si police Wingdings :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Count = 1 And Target.Font.Name = "Wingdings" Then Target.Value = IIf(Target.Value = "", "ü", "")
End Sub

eric

Rechercher des sujets similaires à "probleme etendue champ macro"