Méthode Select dans Private Sub

Résolu
Bonjour,

Le code suivant génère l'erreur : La méthode Select de la classe Range a échoué.

Savez-vous comment contourner le problème, sachant que je n'ai qu'une seule feuille dans mon classeur ?

Merci beaucoup.

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)

'Eviter selection multiple
ActiveSheet.Cells(Target.Row, Target.Column).Select

' Cocher resultats
If ActiveCell.Column = 3 Or ActiveCell.Column = 9 Then
ActiveCell.Value = "V"
Selection.Offset(0, 1).Value = ""
Selection.Offset(0, 2).Value = ""
ElseIf ActiveCell.Column = 4 Or ActiveCell.Column = 10 Then
ActiveCell.Value = "N"
Selection.Offset(0, -1).Value = ""
Selection.Offset(0, 1).Value = ""
ElseIf ActiveCell.Column = 5 Or ActiveCell.Column = 11 Then
ActiveCell.Value = "V"
Selection.Offset(0, -1).Value = ""
Selection.Offset(0, -2).Value = ""
End If

End Sub

8 réponses

  1. Contributeur
    Bonjour, comme tu n'as qu'une feuille il est inutile d'appeler "workbook"

    macro à installer dans le module de la feuille
    Option Explicit
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim Col As Byte
    If Target.Count > 1 Then Exit Sub
    Application.EnableEvents = False
    With Target
    Col = .Column
    Select Case Col
    Case 3, 9
    .Value = "V"
    .Offset(0, 1) = ""
    .Offset(0, 2) = ""
    Case 4, 10
    .Value = "N"
    Target.Offset(0, -1) = ""
    ActiveCell.Offset(0, -2) = ""
    Case 5, 11
    .Value = "N"
    .Offset(0, -1) = ""
    .Offset(0, -2) = ""
    End Select
    End With
    Application.EnableEvents = True
    End Sub

    Sub SOS()
    'dépannage pour réamorcer les macros événementielles en cas de sortie intempestive de la procédure
    Application.EnableEvents = True
    End Sub

    1. Bonjour Michel,

      J'aurais besoin que la macro se déclenche à chaque changement de cellule. Malheureusement, je n'arrive pas à faire fonctionner ton code...
      Le fichier joint, si tu as deux minutes pour regarder... C'est un petit loto foot

      https://www.cjoint.com/?3ECnDRixz5D
      1. Je crois qu'il y a un mot de passe, c'est DDDD
        8))
        1. Contributeur
          :-(

          Pourtant, j'avais écris
          macro à installer dans le module de la feuille
          je complète
          et non dans thisworkbook
      2. Tout à fait, c'est bien ce que j'ai fait, mais voyant que ça ne fonctionnait pas, j'ai essayé dans Thisworkbook, et évidemment, rien de plus.

        Depuis tout à l'heure je réessaye, mais visiblement j'ai du mal, je n'arrive à rien de bon.
        1. Contributeur
          J'ai essayé avec victoire du brésil en cliquant sur la cellule colonne 4 à coté de Brésil: ca a bien écrit V et donner 3 points au Brésil

          Terminé
          1. :((

            Est-ce que tu voudrais bien m'envoyer ton fichier, dans lequel ça fonctionne ?
            Parce que moi, j'ai enlevé tous mes modules, effacé thisworkbook et créé un nouveau module pour y mettre ton code, et... rien ne se passe.
            1. En créant un nouveau classeur non plus, pas de réaction et possibilité de sélectionner plusieurs cellules en même temps (ce que If Target.Count > 1 Then Exit Sub devrait interdire, il me semble).
            2. Contributeur
              lance la macro SOS et tu dis
          2. Bonjour,

            J'ai finalement réussi à faire fonctionner le code, mais en l'insérant bien dans thisworkbook, et en modifiant le début :

            With Target
            If .Count > 1 Then Exit Sub
            Select Case .Column
            Case 3, 9
            etc.

            Impossible par contre de le faire fonctionner depuis un module standard, même avec la meilleure volonté...
            Sans doute un mystère qui restera dans l'ombre.

            Je mets en résolu, merci encore et à bientôt !

            II
            1. Contributeur
              Ce n'est pas un module Standard mais un MODULE FEUILLE !!!!

              pourtant j'ai écris et ré écris

              macro à installer dans le module de la feuille


              Désespérant d'essayer d'aider