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
    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
    1. 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. :((

        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. 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. 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. 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. 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. 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