Erreur d'execution, ligne RANGE longue

Bonsoir à tous

Je rencontre un problème inexpliqué à priori ma ligne Range est trop longue, si je supprime à partir de JV14 cela fonctionne !

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 Set zSaisie = Range("B5:B14,L5:L14,V5:V14,AF5:AF14,AP5:AP14,AZ5:AZ14,BJ5:BJ14,BT5:BT14,CD5:CD14,CN5:CN14,CX5:CX14,DH5:DH14,DR5:DR14,EB5:EB14,EL5:EL14,EV5:EV14,FF5:FF14,FP5:FP14,FZ5:FZ14,GJ5:GJ14,GT5:GT14,HD5:HD14,HN5:HN14,HX5:HX14,IH5:IH14,IR5:IR14,JB5:JB14,JL5:JL14,JV5:JV14,KF5:KF14,KP5:KP14")
  If Not Intersect(zSaisie, Target) Is Nothing And Target.Count = 1 Then
    If mémo <> "" Then If IsError(Application.Match(Range(mémo), a, 0)) Then Range(mémo) = ""
    a = Application.Transpose(Sheets("BdD").Range("liste_nom"))
    Me.ComboBox1.List = a
    Me.ComboBox1.Height = Target.Height + 3
    Me.ComboBox1.Width = Target.Width
    Me.ComboBox1.Top = Target.Top
    Me.ComboBox1.Left = Target.Left
    Me.ComboBox1 = Target
    Me.ComboBox1.Visible = True
    Me.ComboBox1.Activate
    mémo = Target.Address
  Else
    Me.ComboBox1.Visible = False
  End If
End Sub

Une idée ?

Bonjour,

Un essai ...

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim zSaisie As Range
Dim xSaisie As Range

    Set zSaisie = Range("B5:B14,L5:L14,V5:V14,AF5:AF14,AP5:AP14,AZ5:AZ14,BJ5:BJ14,BT5:BT14,CD5:CD14,CN5:CN14,CX5:CX14")
    Set xSaisie = Range("DH5:DH14,DR5:DR14,EB5:EB14,EL5:EL14,EV5:EV14,FF5:FF14,FP5:FP14,FZ5:FZ14,GJ5:GJ14,GT5:GT14,HD5:HD14,HN5:HN14,HX5:HX14,IH5:IH14,IR5:IR14,JB5:JB14,JL5:JL14,JV5:JV14,KF5:KF14,KP5:KP14")

    If Not Intersect(Target, Range(zSaisie, xSaisie)) Is Nothing And Target.Count = 1 Then
    ...
    ...
    ...

ric

Bonjour Ric

merci pour ta réponse mais malheureusement ça marche pas

Une autre piste ?

Bonjour Jack95000, ric, le forum,

Un essai....

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim zSaisie As Range, xsaisie As Range, Saisie As Range

 Set zSaisie = Range("B5:B14,L5:L14,V5:V14,AF5:AF14,AP5:AP14,AZ5:AZ14,BJ5:BJ14,BT5:BT14,CD5:CD14,CN5:CN14,CX5:CX14")
 Set xsaisie = Range("DH5:DH14,DR5:DR14,EB5:EB14,EL5:EL14,EV5:EV14,FF5:FF14,FP5:FP14,FZ5:FZ14,GJ5:GJ14,GT5:GT14,HD5:HD14,HN5:HN14,HX5:HX14,IH5:IH14,IR5:IR14,JB5:JB14,JL5:JL14,JV5:JV14,KF5:KF14,KP5:KP14")

 Set Saisie = Union(zSaisie, xsaisie)

  If Not Intersect(Saisie, Target) Is Nothing And Target.Count = 1 Then

    If mémo <> "" Then If IsError(Application.Match(Range(mémo), a, 0)) Then Range(mémo) = ""
     a = Application.Transpose(Sheets("BdD").Range("liste_nom"))
      Me.ComboBox1.List = a
      Me.ComboBox1.Height = Target.Height + 3
      Me.ComboBox1.Width = Target.Width
      Me.ComboBox1.Top = Target.Top
      Me.ComboBox1.Left = Target.Left
      Me.ComboBox1 = Target
      Me.ComboBox1.Visible = True
      Me.ComboBox1.Activate
     mémo = Target.Address
    Else
      Me.ComboBox1.Visible = False
    End If
End Sub

Cordialement,

Bonjour à tous,

Une autre approche ...

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim T
Dim i As Integer
    T = Array("B5:B14", "L5:L14", "V5:V14", "AF5:AF14", "AP5:AP14", "AZ5:AZ14", "BJ5:BJ14", "BT5:BT14", "CD5:CD14", "CN5:CN14", _
    "CX5:CX14", "DH5:DH14", "DR5:DR14", "EB5:EB14", "EL5:EL14", "EV5:EV14", "FF5:FF14", "FP5:FP14", "FZ5:FZ14", "GJ5:GJ14", _
    "GT5:GT14", "HD5:HD14", "HN5:HN14", "HX5:HX14", "IH5:IH14", "IR5:IR14", "JB5:JB14", "JL5:JL14", "JV5:JV14", "KF5:KF14", "KP5:KP14")
    If Target.Count = 1 Then
        For i = LBound(T) To UBound(T)
            If Not Intersect(Target, Range(T(i))) Is Nothing Then
                MsgBox "O.K."
            End If
        Next i
    End If
End Sub

Cordialement.

Merci à vous deux xorsankukai , gyrus

Génial vos deux solutions fonctionnent

Merci

Rechercher des sujets similaires à "erreur execution ligne range longue"