limiter accés à plusieurs plages

  • Initiateur de la discussion gepeto
  • Date de début
G

gepeto

Guest
voila je veux limiter l'accés à certaines plages dans une feuill
je mets ça dans une worksheet et ça marche
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Worksheets("Feuil1").ScrollArea = "A1:B3"
End Sub

ou

Private Sub Workbook_Open()
Feuil1.ScrollArea = "A1:B3"
End Sub
dans un workbook, ça marche

mais je ne n'arrive pas pour 2 plages dans une meme feuill, exemple A1:B3 et E1:F3

gd merci d'avance

et bonjour à toutes et à tous
 
P

Popeye

Guest
Bonjour a toi

essaie ca


Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
Dim zone As Range
Dim ok As Byte

For Each zone In Range("a1", "F8") 'il faudra créer autant de boucle que de zone autorisée (je me penche pour tout mettre d'un coup)
If Target = zone Then ok = 1 'ok=1 veut dire que la cellule choisie est ok
Next

If ok = 0 Then Range("a1").Select 'il faut impérativement mettre une cellule que tu acceptes sinon ca va tourner en boucle
End Sub
 
P

Popeye

Guest
Bon bah j'ai trouvé


Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
Dim zone As Range
Dim ok As Byte

For Each zone In Range("B13:E19,G8:J17,G23:J30")
If Target = zone Then ok = 1 'ok=1 veut dire que la cellule choisie est ok
Next

If ok = 0 Then Range("b13").Select 'il faut impérativement mettre une cellule que tu acceptes sinon ca va tourner en boucle
End Sub


attention il ne faut pas faire de multiselection sinon ca plante (désolé)
 
J

Jon

Guest
bonjour

ton "if target=zone" n'est pas une solution optimale il faut plutôt tester l'intersection, cf méthode intersect

bye
stephane

cf <http://xlbysteph.free.fr/aideinformatique/actioncellule.htm>
cf <http://xlbysteph.free.fr/aideinformatique/actionvba2.htm>
 
G

gepeto

Guest
j'ai mis ça :

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
Dim zone As Range
Dim ok As Byte

For Each zone In Range("A1:B5,E1:F5")
If Target = zone Then ok = 1 'ok=1 veut dire que la cellule choisie est ok
Next

If ok = 0 Then Range("b13").Select 'il faut impérativement mettre une cellule que tu acceptes sinon ca va tourner en boucle
End Sub


et ça ne fonctionne pas ?
 
P

Popeye

Guest
c normal
If ok = 0 Then Range("b13").Select 'il faut impérativement mettre une cellule que tu acceptes sinon ca va tourner en boucle
End Sub

b13 appartient pas a ta selection
donc ca tourne en rond ;o)
 

Discussions similaires

Statistiques des forums

Discussions
312 677
Messages
2 090 823
Membres
104 677
dernier inscrit
soufiane12