VBA: interdire une selection

A

aniu

Guest
Bonjour!

quelqu'un peut-il m'aider, je suis débutante...

1- je dois créer une procédure qui affiche un message dès que utilisateur selectionne une plage déterminée dont on souhaite interdire l'accès, puis qui déplace le curseur sur la cellule A1 de la feuille.

2- comment créer une fonction qui calcule la moyenne des valeurs, contenues dans une plage de valeurs selectionnées, en ne retenant que les valeurs de la plage comprises entre 2 bornes variables.

Merci et reconnaissance éternelle à tout génie de l'informatique qui pourra m'aider...
:)
 

JC de Lorient

XLDnaute Impliqué
salut
réponse à ta 1ère question
a mettre dans le VBA de la feuille concernée
cette fonction empêche de sélectionner les cellules B2:C10 :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(Target, Range('B2:C10')) Is Nothing Then
MsgBox 'coin - coin'
Range('A1').Select
End If
End Sub

pour la 2ème pas de réponse désolé

JC
 

CBernardT

XLDnaute Barbatruc
Bonsoir Aniu et JC de Lorient,

Pas très génial mais ça marche glupp !

1- La plage interdite est B4:D21.

2- En A2 le nombre de nombres compris entre les bornes C2/D2 et dans B2 la moyenne de ces nombres (2 décimales).

Cordialement

Bernard [file name=PlageMoyenneAniu.zip size=7370]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/PlageMoyenneAniu.zip[/file]
 

Pièces jointes

  • PlageMoyenneAniu.zip
    7.2 KB · Affichages: 75
A

Aniu

Guest
merci beaucoup JC de Lorient,
voici exactement ce que j'ai donc écrit suite à tes conseils:

Sub Question3()
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(Target, Range('A1:B3')) Is Nothing Then
MsgBox 'vous ne pouvez pas selectionner cette plage!'
Range('A1:B3').Select
End If
End Sub

mais je ne comprends pas mon ordinateur bug et me demande un 'End Sub', mais il y est mon 'End Sub'!! Bougre d'ordinateur!!
:angry:

alors pourquoi ça marche pas CHEZ MOI?
 

myDearFriend!

XLDnaute Barbatruc
Bonsoir Aniu, JC de Lorient, CBernardT,

Visiblement Aniu, il semble que tu n'ais pas vu la proposition de CBernardT ci-dessus...

Pour tenter de répondre à tes interrogations concernant le code proposé par JC de Lorient :
[ol][li]Le code de JC de Lorient est à copier dans le module de code de la feuille de calcul.[/li]
[li]Ta ligne de code :
Sub Question3()
est de trop, il convient de la supprimer (c'est la raison pour laquelle Excel te réclame un autre 'End Sub'. Cette situation est impossible, tu ne peux pas imbriquer 2 procédures Sub l'une dans l'autre en VBA).[/li]
[li]JC de Lorient précise également dans son exemple:
Range('A1').Select
et non
Range('A1:B3').Select
[/li]
[li]De plus, si tu analyse ton code, tu affiches un message d'interdiction lorsque l'utilisateur se place dans la plage 'A1:B3' et tu sélectionnes par le code cette plage immédiatement après !???[/li][/ol]
Par ailleurs, tu trouveras ci-joint un autre proposition utilisant une fonction personnalisée VBA pour le calcul de cette moyenne particulière...

Cordialement, [file name=PourAniu.zip size=9106]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/PourAniu.zip[/file]
 

Pièces jointes

  • PourAniu.zip
    8.9 KB · Affichages: 92

Statistiques des forums

Discussions
312 438
Messages
2 088 411
Membres
103 847
dernier inscrit
Girardon