RESOLU : Macro pour verrouiller des cellules en fonction de plusieurs critères

chacal33

XLDnaute Junior
Bonjour à tous,

Je voudrais savoir s'il est possible de créer une macro afin de verrouiller des cellules en fonction de plusieurs critères.

Si A2 = 1,00 , alors ligne 2 est verrouillée

Si 0 < A2 < 1,00 et B2 = 0, alors (A2:F2) et J2 sont verrouillées

Si C2 <> 0, alors ligne 2 est verrouillée

Et ceci pour plusieurs milliers de ligne...


J'ai essayé d'enregistrer une macro en y allant pas-à-pas, mais, le résultat est que toutes les cellules sont verrouillées...

Merci d'avance pour votre aide.

Matt
 
Dernière édition:

Fred0o

XLDnaute Barbatruc
Re : Macro pour verrouiller des cellules en fonction de plusieurs critères

Bonjour chacal33,

Tu peux essayer ce code et me dire s'il fonctionne pour la ligne 2. Si tu veux le mettre dans une boucle pour toutes tes lignes, il te faut remplacer le 2 par une variable à incrémenter.
VB:
Sub Verrouiller()
    If [A2] = 1 Or [C2] <> 0 Then
        [2:2].Locked = True
    ElseIf [A2] > 0 And [A2] < 1 And [B2] = 0 Then
        [A2:F2].Locked = True
        [J2].Locked = True
    End If
End Sub

A+
 

chacal33

XLDnaute Junior
Re : Macro pour verrouiller des cellules en fonction de plusieurs critères

Re,

j'ai essayé ça, mais j'ai l'impression de passer complètement à côté du sujet...
Quelqu'un peut-il jeter un coup d'oeil, et ouvrir les miens ;)

Code:
Sub Verrouiller()
Dim Ligne As Integer
Dim iMax As Integer
iMax = 5049
With ActiveSheet
        For Ligne = 2 To iMax
            
    If Cells(Ligne, 10) = 1 Or Cells(Ligne, 16) <> 0 Then
        [Ligne:Ligne].Locked = True
    ElseIf Cells(Ligne, 10) > 0 And Cells(Ligne, 10) < 1 And Cells(Ligne, 16) = 0 Then
        [Cells(Ligne, 1):Cells(Ligne, 14)].Locked = True
        [Cells(Ligne, 22):Cells(Ligne, 33)].Locked = True
    End If
    Next Ligne
    End With
End Sub

Merci

Matt
 

Fred0o

XLDnaute Barbatruc
Re : Macro pour verrouiller des cellules en fonction de plusieurs critères

Re-bonjour chacal33,

Essaie ce code, ça devrait aller mieux :
VB:
Sub Verrouiller()
    Dim Ligne As Integer
    Dim iMax As Integer
    iMax = 5049
    For Ligne = 2 To iMax
        If Cells(Ligne, 10) = 1 Or Cells(Ligne, 16) <> 0 Then
            Range(Ligne & ":" & Ligne).Locked = True
        ElseIf Cells(Ligne, 10) > 0 And Cells(Ligne, 10) < 1 And Cells(Ligne, 16) = 0 Then
            Range(Cells(Ligne, 1), Cells(Ligne, 14)) = "XXXXX"
            Range(Cells(Ligne, 22), Cells(Ligne, 33)).Locked = True
        End If
    Next Ligne
End Sub

A+
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 105
Messages
2 085 350
Membres
102 870
dernier inscrit
Armisa