Limiter la selection de cellule possible dans VBA

Bonjour,

Je viens vers vous car je n'arrive pas a écrire mon code.

J'ai un tableau Excel dans lequel je dois, pour une future fonction, sélectionner 1 ou plusieurs cellules dans la colonne Repères cotes (A01 ...)

pour copier le(s) copier dans une autre feuille (via un bouton)

Je voudrais limiter les sélections possibles, à la colonne "Repère Cote"

avec une range connu (B10 à B15) qui corresponde a tous les repères disponibles

1PJ = ma sélection est "correcte" vu qu'elle est dans la plage voulue.

2PJ= ma sélection ne fonctionne pas car, ma sélection n'est pas dans la plage.

3PJ= ma sélection marche alors qu'une cellule est hors plage de donnée.

hors j'aimerai que quand 1 cellule sur la sélection est hors plage la sélectionne ne fonctionne pas

Mon code

Set Plage_Rep_cote = Range("B10:B14")

If Intersect(Plage_Rep_cote, Selection) Is Nothing Then MsgBox "Veuillez sélectionner les repères des cotes choisies.", vbCritical, "Sélection des données impossible"

Une idée ?

Une autre méthode serait de trouver les address de chaque cellules sélectionnées et de la comparer avec les address autorisées.

mais ça me semble un peu compliqué.

D'avance merci

1 2 3

Bonjour,

A mon avis la solution la plus simple (et c'est prévu pour ça) est de poser une protection sur la feuille avec impossibilité de sélection des cellules verrouillées.

[Excel 2007]

Dans le format des cellules sélectionnables : Clic droit/Format/Onglet protection -> décocher Verrouillé

Pui

Dans la ruban Révision/Protéger la feuille -> décocher "sélectionner les cellules verrouillées"

'jai déjà pensé a cette solution, mais pas viable pour d'autre fonction, a moins de déverrouiller et verrouiller a chaque fois

C'est tout à fait simple par macro. Mais il faut qu'elle se déclenche judicieusement par exemple un bouton préparer la copie. Un exemplaire du fichier serait le bienvenu.

Une question cependant : le nombre de cellules sélectionnées varie en fonction d'un critère calculé ?

Bonjour d4r, ouisansdoute,

une solution qui a l'air de bien fonctionner dans la limite imposée par 4dr : "B10:B15"

Une sélection dynamique de la zone autorisée est évidemment toujours envisageable ultérieurement.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'
If Not Application.Intersect(Target, Range("B:B")) Is Nothing Then
    iRow1 = Target.Cells(1).Row
    iCol1 = Target.Cells(1).Column
    iRow2 = Target(Selection.Count).Row
    iCol2 = Target(Selection.Count).Column
    If iRow1 < 10 Or iRow1 > 15 Or iRow2 < 10 Or iRow2 > 15 Or iCol1 <> 2 Or iCol2 <> 2 Then
        MsgBox "Cette sélection n'est pas autorisée!"
    Else
        MsgBox "Sélection autorisée!"
    End If
    [A1].Select
End If
'
End Sub

Avec plaisir!

A+

En faite je veux juste que pour lancer la macro via le bouton Nouvelle feuille:

il faut que seule des cellules comprise entre B10 et B14 soient sélectionnées, si cette condition est fausse alors la macro s'arrete

1

Ben, v'là aut' chose, asteûre!

Comprends pas l'interaction entre ton bouton (dont tu ne parlais pas au début) et la sélection des cellules??

Tu peux expliquer?

A+

d4r a écrit :

Bonjour,

pour copier le(s) copier dans une autre feuille (via un bouton)

C'est juste que je copie la sélection des cellules pour la coller ailleurs avec un bouton, et que si je sélectionne une seule cellule hors plage de donnée, j'ai une erreur.

^^

Salut d4r,

exact, tu parlais d'un bouton...

Bon, peut-on avoir un morceau de fichier et un détail de ce qu'il faut faire avec la sélection?

On pourrait arrêter de tourner en rond et clôturer l'affaire avant Noël!

Ce serait chouette, non?

A+

Je vous joins ça:

Le code que tu vas voir fonctionne, la n'est pas la question, mais je code, pour qu’une personne avec un QI d'huitre y arrive.

Aujourd'hui je sélectionne mes repères, et les copie sur une sheet (CC bis)

Hors si je sélectionne une cellule dans la colonne Valeur (dans la sheet Liste_cote), forcement il la copie en sheet (CC bis), chose que je veux éviter, vu que les rechercheHouV de la sheet(CC)sont câblées pour fonctionner avec le "repère cote".

D'ou mon souhait de "brider" la sélection possibles

j'ai perdu personne ?

Merci !

45cc-test.xlsm (75.17 Ko)

Bonsoir d4r,

à mon sens, ça devrait être ce que tu veux!

A tester, bien sûr, avec toutes les sélections possibles et imaginables!

8)

A+

38cc-test.xlsm (96.03 Ko)

Bonjour,

j'ai essayé avec ton code, cela fonctionne, sauf dans le cas en PJ.

Donc c'eest pas top.

Cependant j'ai résolue le problème autrement.

A titre d'info, j'ai utilisé un tank pour tuer une mouche.

Je cherche les n° de ligne pour chaque cellules sélectionnées, et je regarde si leur ligne est contenue dans les bornes souhaitées.

et en suite je lui dis de copier la cells(ligneselectionee(i), ColonneSouhaitée) sur l'autre page, puis je boucle

Merci beaucoup en tous cas !

Salut d4r,

PJ1-2-3? Pas compris, en fait!

Je peux remplacer ton tank par une plume si tu expliques ce que c'est, PJ...

Je déteste rester sur un "Pas top"!

A+

Bonsoir,

PJ = Piece joint

j'ai oublié de la mettre.

En gros ta macro ne fonctionne pas si tu sélectionnes de cette façon voir PJ, fin si justement elle fonctionne, mais elle devrait pas ahah

Du coup j'ai résolu le problème comme ça :

Je sélectionne une ou plusieurs cellules, en 1 ou 2 groupe de sélections.

- je cherche la ligne de CHAQUE cellules sélectionnées, et si 1 SEULE n'est pas dans la range, alors erreur.

ça ta macro le fait,+/-

et ensuite si tu sélectionnes, (voir PJ) 1.2 au lieu de B01, ben il prendra la valeur B01.

je te link le tableur,

peut être que tu pourras me donner ton avis

2
11cc-test.xlsm (65.32 Ko)

Bonsoir d4r,

Je voudrais limiter les sélections possibles, à la colonne "Repère Cote"

avec une range connu (B10 à B15) qui corresponde a tous les repères disponibles

et maintenant,

ta macro ne fonctionne pas si tu sélectionnes de cette façon voir PJ, fin si justement elle fonctionne, mais elle devrait pas ahah

Probablement que j'ai un QI d'huître aussi!

Comprends pas ce que tu veux! Ré-explique!

A+

J'avoue que je galère a expliquer.

considère que j ai un tableau de 2 colonnes

la première repères cotes

et la seconde qui correspond a leur valeur

A1 4

A2 3.3

A3 12

A4 9

mon but c est de copier les repères sélectionnés vers une autre feuille.

Seulement je veux limiter la possibilité a l'user de sélectionner n'importe quoi, donc je veux limiter les cellules sélectionnable a la colonne rep cote.

En prenant en compte que je peux sélectionner plusieurs cellules.

exemple avec les 8 valeurs du dessus: je sélectionne la cellule A1,A2,A4 et 12

la macro ne se lance pas car 1 cellules n'est pas comprise dans la colonne rep cote

de meme que si il sélectionne A1 A2 et une cellule vide en R(1000)C(1000) la macro s'arrete car la cellule R1000C1000 n est pas dans la bonne colonne.

Mais on est d'accord que j'ai résolu mon problème ? ^^

Rechercher des sujets similaires à "limiter selection possible vba"