XL 2010 Compiler deux macros Worksheet_SelectionChange

Horusbk

XLDnaute Junior
Bonjour,

Dans mon classeur j'ai deux codes dans la propriété Worksheet_SelectionChange. Vu que cette dernière est déclarée deux fois, mes codes ne fonctionnent pas... comment puis-je compiler ces deux codes ?

Premier code
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim i%, k%, Y As Boolean
'Choix des colonnes ou la macro est active
Y = Target.Column = 17 ' = numero de la colonne pour la date B=2, C=3, E=5, 17=Q... 'Or Target.Column = 17

If Target.Count = 1 And Target.Row > 1 And Y Then
      If Target.Row > 12 Then
      ActiveWindow.ScrollRow = Target.Row - 12
      Else
         ActiveWindow.ScrollRow = 1
      End If
      Calendrier.Show
End If
    End Sub
Deuxième code
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    'on ne veut afficher l'UserForm que si on a sélectionné une cellule de la colonne C qui correspond à un
    'type de véhicule défini en colonne A
    If Not Application.Intersect(Target, Range("A2:A" & Range("A" & Rows.Count).End(xlUp).Row).Offset(0, 2)) Is Nothing Then
        UserForm1.Show
        Target = UserForm1.ComboBox2    'On écrit dans la cellule sélecionnée le camion choisi dans la 2° liste déroulante
    End If
    Unload UserForm1   'vide les mémoires et évite que l'userform ne se réaffiche avec les dernières valeurs choisies
End Sub

Merci de votre aide.
Cdlt; Baptiste :)
 

Bougla972

XLDnaute Occasionnel
Bonjour Baptiste,

Ces 2 macros agissent bien sur le même onglet ? Si tel est le cas pourquoi ne pas mettre les 2 codes sous l'évènement 'Worksheet_SelectionChange' comme ceci:

VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim i%, k%, Y As Boolean
'Choix des colonnes ou la macro est active
Y = Target.Column = 17 ' = numero de la colonne pour la date B=2, C=3, E=5, 17=Q... 'Or Target.Column = 17

If Target.Count = 1 And Target.Row > 1 And Y Then
      If Target.Row > 12 Then
      ActiveWindow.ScrollRow = Target.Row - 12
      Else
         ActiveWindow.ScrollRow = 1
      End If
      Calendrier.Show
End If
'on ne veut afficher l'UserForm que si on a sélectionné une cellule de la colonne C qui correspond à un
    'type de véhicule défini en colonne A
    If Not Application.Intersect(Target, Range("A2:A" & Range("A" & Rows.Count).End(xlUp).Row).Offset(0, 2)) Is Nothing Then
        UserForm1.Show
        Target = UserForm1.ComboBox2    'On écrit dans la cellule sélecionnée le camion choisi dans la 2° liste déroulante
    End If
    Unload UserForm1   'vide les mémoires et évite que l'userform ne se réaffiche avec les dernières valeurs choisies
End Sub
 

Discussions similaires