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

Résolu
Telithaldynos Messages postés 9 Statut Membre -  
 Yoda -
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é.

3 réponses

  1. Yoda
     
    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
  2. Yoda
     
    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
  3. Telithaldynos Messages postés 9 Statut Membre
     
    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