Worksheet_SelectionChange

Résolu
amo-51 Messages postés 98 Statut Membre -  
yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour;
j'ai des problèmes avec la fonction worksheet_SelectionChange
excel ne réagit pas à ma macro
normalement cette macro me permet de bloquer les colonnes C , I à K, si on clique sur une cellule de ces colonnes excel nous renvoie a A1

voici ma macro
Private Sub worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Range("c:c, I:K"), Target) Is Nothing Then 'selection des colonnes
Target.Offset(0, 1).Select
End If
End Sub

merci de m'aider

5 réponses

  1. paul
     
    Remplace Target.Offset(0, 1).Select par [A1].Select
    0
    1. amo-51 Messages postés 98 Statut Membre
       
      Merci pour votre aide mais ca n'a pas marché
      0
  2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    bonjour, j'ai testé ton code initial, et l'amélioration proposée par paul. les deux fonctionnent bien, ne permettent pas de sélectionner les colonnes que tu souhaites protéger. celui de paul renvoie à A1, tandis que le tien déplace la sélection vers la droite.
    je me demande si tu as inséré le code VBA au bon endroit: est-il bien associé à la bonne feuille?
    0
  3. paul
     
    Bonjour amo-51,

    Mon 1er message était pour sélectionner la cellule A1 ;
    suite au message de yg_be, je propose 2 autres codes.

    1er code VBA :

    
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
      If Not Intersect(Range("C:C, I:K"), Target) Is Nothing Then
        ' sélection de la colonne de la cellule active (C, I ou K)
        Target.EntireColumn.Select
      End If
    End Sub
    
    

    2ème code VBA :

    
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
      If Not Intersect(Range("C:C, I:K"), Target) Is Nothing Then
        ' sélection des 3 colonnes C, I et K
        Range("C:C, I:I, K:K").Columns.Select
      End If
    End Sub
    
    

    Merci de me donner ton avis.

    Cordialement
     
    0
    1. amo-51
       
      bonjour

      merci mes messieurs pour votre aide

      mais ca marche toujours pas

      bon ce que je veux est simple
      je m'explique

      j'aimerai bloquer la saisie dans les colonnes C et I jusqu'à K

      merci de m'aider
      0
      1. paul > amo-51
         
         
        Bonjour,

        1) Quel est le nom exact de la feuille où tu veux bloquer la saisie ?
            "Feuil6" ? autre ? à supposer que ce soit "Feuil6", le code VBA
            doit être placé dans Feuil6 : Alt F11 pour aller sur Visual Basic ;
            côté gauche, en haut, fais un double-clic sur Feuil6 => à droite :
            page de code de Feuil6.

        2) Tu as écris : « bloquer la saisie dans les colonnes C et I jusqu'à K ».
            Pourquoi vouloir le faire par VBA ? sur "Feuil6", sélectionne ta colonne C
            et tes colonnes I à K ; clic droit sur la sélection, Format de cellule, onglet
            Protection : ☑ Verrouillée (mais normalement c'est déjà coché) ; après
            protection de "Feuil6", c'est alors impossible de saisir dans les cellules
            verrouillées => tes colonnes sont bien bloquées.
         
        Si tu tiens absolument à le faire par une macro événementielle VBA :

        
        Private Sub Worksheet_SelectionChange(ByVal Target As Range)
            ActiveSheet.Unprotect
            Range("C:C, I:K").Columns.Locked = True
            ActiveSheet.Protect
        End Sub
        
        

        Mais c'est inutile de faire ce travail à chaque fois que tu cliques
        sur une cellule de ces colonnes ! enfin, c'est toi qui vois...

        À te lire pour avoir ton avis.
         
        0
  4. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    je me demande si tu as inséré le code VBA au bon endroit: est-il bien associé à la bonne feuille?
    0
    1. amo-51 Messages postés 98 Statut Membre
       
      comment le savoir
      0
    2. amo-51 Messages postés 98 Statut Membre
       
      au faite j'ai ajouté
      feuil6.select en deuxième ligne
      Private Sub Worksheet_SelectionChange(ByVal Target As Range)
      feuil6.select
      If Not Intersect(Range("C:C, I:K"), Target) Is Nothing Then
      0
    3. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > amo-51 Messages postés 98 Statut Membre
       
      Deux façons de vérifier si le code est associé à la bonne feuille:
      Dans l'éditeur VBA, dans l’Explorateur de projets, si tu double cliques sur la "bonne" feuille de calcul, vois-tu le code à droite?
      Quand tu cliques dans le code, quel est l'élément grisé dans l'explorateur de projet?
      0
    4. amo-51 Messages postés 98 Statut Membre
       
      j'ai bien suivi tes orientations

      je n'ai pas trouvé ma macro dans aucune des feuilles soit de 1 à 6

      question où est ma macro

      ceci étant donner, j'ai comme même une solution
      j'ai écris ma macro sur la feuille 6
      merci

      reste que, je ne sais pas encore où se trouve la première macro (initial)
      merci de m'expliquer
      0
    5. amo-51 Messages postés 98 Statut Membre
       
      Peut etre qu'elle est dans le module 1
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. amo-51 Messages postés 98 Statut Membre
     
    merci paul

    et merci yg

    vous m'avez bien aidé
    0