[VBA] Créer un range à partir d'une recherche

Résolu/Fermé
Telithaldynos Messages postés 9 Date d'inscription jeudi 12 avril 2012 Statut Membre Dernière intervention 5 août 2012 - Modifié par Telithaldynos le 12/04/2012 à 11:48
 Yoda - 12 avril 2012 à 14:10
Bonjour,

Je travaille sur une macro permettant d'ajouter des articles dans un colis. La fiche de description définitive du colis doit être dans un autre document excel.

Pour éviter les incohérences, il est important d'interdire la modification d'un valeur une fois le colis créé par la macro.

Dans cette optique, je souhaite verrouiller la page complète, à l'exception des articles n'ayant pas encore été ajouté à un colis.

Ma problèmatique est donc de crée un range dépendant d'une recherche.
Je contrôle la présence d'une date dans la colonne C. Je souhaite inclure dans mon range les cellules de la colonne A dont la colonne C est vide.

Malheureusement ,je ne parviens pas à faire cet ajout au range.

Si "C i" est vide alors "A i" est libre
Si "C i" est renseigner alors "A i" est verrouillé.

A voir également:

3 réponses

Plus simplement, voila comment je voyais la chose:

    ActiveSheet.Unprotect
    For i = 1 To j
      Range("A" & i).Select
      If Range("C" & i).Value = "" Then
         Selection.Locked = False
      Else
         Selection.Locked = True
     End If
    Next
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True


Cette ligne
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
dépend des options de protection. Tu peux aussi définir un mot de passe.
Fais des essais en passant par l'enregistreur de macros.
1
Bonjour,

Dans Excel, une cellule est verrouillée lorsque la protection de la feuille est active.
Par défaut, toutes les cellules sont verrouillées. Il faut donc définir avant les cellules qui doivent rester accessibles (Propriété cellule).

Dans ton cas:
-desactiver la protection de la feuille
-Si "C i" est vide alors "A i" est déverrouillé
-Si "C i" est renseigner alors "A i" est verrouillé
-activer la protection de la feuille

;)
0
Telithaldynos Messages postés 9 Date d'inscription jeudi 12 avril 2012 Statut Membre Dernière intervention 5 août 2012
12 avril 2012 à 13:49
C'est tout à fait mon but. Toutefois je souhaite que la sélection des cellules à verrouillé soit porté par la macro VBA.

Ma question est donc : comment définir un "range" à partir de liste de cellule retournée par une boucle de recherche type :

For i = 1 To j
if cells (i,3) <> "" then "ajouter la cellule au range sélectionné"
Next i
ActiveSheet.Protection.AllowEditRanges.Add _
Title:="Libre" _
range:=range("selection")
0