Worksheet_SelectionChange

Résolu/Fermé
amo-51 Messages postés 94 Date d'inscription mercredi 21 septembre 2016 Statut Membre Dernière intervention 3 novembre 2019 - Modifié le 27 juil. 2017 à 14:42
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 - 30 juil. 2017 à 18:35
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

Remplace Target.Offset(0, 1).Select par [A1].Select
0
amo-51 Messages postés 94 Date d'inscription mercredi 21 septembre 2016 Statut Membre Dernière intervention 3 novembre 2019
27 juil. 2017 à 14:58
Merci pour votre aide mais ca n'a pas marché
0
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
29 juil. 2017 à 10:31
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
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
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
paul > amo-51
30 juil. 2017 à 12:20
 
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
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
30 juil. 2017 à 11:06
je me demande si tu as inséré le code VBA au bon endroit: est-il bien associé à la bonne feuille?
0
amo-51 Messages postés 94 Date d'inscription mercredi 21 septembre 2016 Statut Membre Dernière intervention 3 novembre 2019
30 juil. 2017 à 11:35
comment le savoir
0
amo-51 Messages postés 94 Date d'inscription mercredi 21 septembre 2016 Statut Membre Dernière intervention 3 novembre 2019
30 juil. 2017 à 11:37
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
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476 > amo-51 Messages postés 94 Date d'inscription mercredi 21 septembre 2016 Statut Membre Dernière intervention 3 novembre 2019
30 juil. 2017 à 12:38
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
amo-51 Messages postés 94 Date d'inscription mercredi 21 septembre 2016 Statut Membre Dernière intervention 3 novembre 2019
30 juil. 2017 à 12:53
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
amo-51 Messages postés 94 Date d'inscription mercredi 21 septembre 2016 Statut Membre Dernière intervention 3 novembre 2019
30 juil. 2017 à 12:54
Peut etre qu'elle est dans le module 1
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
amo-51 Messages postés 94 Date d'inscription mercredi 21 septembre 2016 Statut Membre Dernière intervention 3 novembre 2019
30 juil. 2017 à 13:11
merci paul

et merci yg

vous m'avez bien aidé
0