IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Méthode Select de la classe Range échoué [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Mai 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant fonctionnel

    Informations forums :
    Inscription : Mai 2014
    Messages : 3
    Points : 5
    Points
    5
    Par défaut Méthode Select de la classe Range échoué
    Bonjour,

    Après avoir navigué sur les forums, je ne trouve pas vraiment de réponse à mon petit problème.
    J'aurais besoin de corriger le code suivant, qui génère l'erreur : La méthode Select de la classe Range a échoué.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    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
    Un bienfaiteur m'a suggéré de coller le code suivant dans un module simple, mais rien ne se passe lorsque je change de cellule.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    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
    Si l'un de vous aurait une solution, ce serait avec grand plaisir.

    Merci

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 942
    Points : 28 941
    Points
    28 941
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Au lieu de nous afficher deux codes de procédures événementielles d'objets différents (La première étant de l'objet ThisWorkbook, l'autre de la feuille où se trouve la procédure), il serait plus constructif que tu nous dises ce que tu veux obtenir comme résultat.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Mai 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant fonctionnel

    Informations forums :
    Inscription : Mai 2014
    Messages : 3
    Points : 5
    Points
    5
    Par défaut
    Désolé, oui.

    Voici mon besoin :

    Interdire la sélection de plusieurs cellules
    Je clique sur la colonne C (ou I), n'importe quelle ligne, un V s'affiche et les 2 cellules de droite sont effacées.
    Je clique sur la colonne D (ou J), n'importe quelle ligne, un N s'affiche et les 2 cellules autour de celle-ci sont effacées.
    Je clique sur la colonne E (ou k), n'importe quelle ligne, un V s'affiche et les 2 cellules de gauche sont effacées.

    Pour moi, il s'agit d'un code à insérer dans thisworkbook (Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range))
    mais dans le code qu'on m'a proposé (le même que le mien en amélioré, je suppose), on m'a suggéré de créer un module simple.

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 942
    Points : 28 941
    Points
    28 941
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Pour moi, il s'agit d'un code à insérer dans thisworkbook (Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range))
    S'il s'agit de faire ce que tu souhaites sur plusieurs feuilles de ton classeur, il faut privilégier la procédure Workbook_SheetSelectionChange. Dans le cas contraire il faut choisir la procédure Sub Worksheet_SelectionChange
    Dans les deux cas, le code est pratiquement identique.
    Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     With Target
      If .Count > 1 Then Exit Sub
      If .Row = 1 Then Exit Sub ' Action sur lignes > 1
      Select Case .Column
       Case 3 ' Colonne C
       .Value = "V": .Offset(, 1) = "": .Offset(, 2) = ""
       Case 4 ' Colonne D
       .Value = "N": .Offset(, -1) = "": .Offset(, 1) = ""
       Case 5 ' Colonne E
       .Value = "V": .Offset(, -1) = "": .Offset(, -2) = ""
      End Select
     End With
    End Sub
    Exemple 2 : La procédure se déroule sur toutes les feuilles exceptée la feuille nommée [Feuil1]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
     If Sh.Name = "Feuil1" Then Exit Sub
     With Target
      If .Count > 1 Then Exit Sub
      If .Row = 1 Then Exit Sub ' Action sur lignes > 1
      Select Case .Column
       Case 3 ' Colonne C
       .Value = "V": .Offset(, 1) = "": .Offset(, 2) = ""
       Case 4 ' Colonne D
       .Value = "N": .Offset(, -1) = "": .Offset(, 1) = ""
       Case 5 ' Colonne E
       .Value = "V": .Offset(, -1) = "": .Offset(, -2) = ""
      End Select
     End With
    End Sub
    D'autres tests sont possibles évidemment

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Mai 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant fonctionnel

    Informations forums :
    Inscription : Mai 2014
    Messages : 3
    Points : 5
    Points
    5
    Par défaut
    Bonjour,

    Merci beaucoup pour cette réponse.
    J'ai donc essayé de plusieurs façons, et effectivement, il faut bien que le code soit inséré dans thisworkbook, car dans un module standard il ne fonctionne pas.

    C'est très gentil en tout cas de m'avoir dépanné.

    Merci beaucoup.

    II

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 942
    Points : 28 941
    Points
    28 941
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Mon explication n'était sans doute pas suffisamment claire.
    La procédure événementielle Worksheet_SelectionChange se place dans un module Objet Feuille quant à la procédure événementielle Workbook_SheetSelectionChange elle se place dans le module classeur nommé ThisWorkbook.
    Si l'on doit intercepter un événement se produisant sur plusieurs feuilles l'on choisira Workbook_SheetSelectionChange alors que si la procédure ne concerne qu'une seule feuille on privilégiera Worksheet_SelectionChange.
    Une procédure événementielle ne se place jamais dans un module standard.
    A lire
    Les évènements du module objet ThisWorkbook, dans Excel
    Les évènements dans la feuille de calcul Excel
    Utiliser les évènements dans les graphiques Excel
    Les évènements dans un UserForm

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 11
    Dernier message: 09/07/2014, 16h40
  2. Méthode select de la classe range a échoué
    Par BERRACHED SAID dans le forum Macros et VBA Excel
    Réponses: 23
    Dernier message: 06/06/2013, 13h11
  3. Problème Select (Methode Select de la classe Range à échoué)
    Par linkcr15 dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 05/06/2012, 09h43
  4. Réponses: 4
    Dernier message: 26/08/2010, 13h40
  5. erreur méthode select de la classe range
    Par chloe2 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 27/11/2009, 10h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo