Encore une petite question quant à la ligne:
Set flag = Columns(cel.Column).Rows.Find(cel.Value))
que jai transformée en:
Set flag = Columns(cel.Column).Rows.Find(cel.Value, , , , , xlNext) pour voir.
Si je remplis ma feuille en commençant par le haut, ça fonctionne super... Mais si je veux re-modifier un choix en amont de ma sélection actuelle (d’où ma modification pour voir), ça ne fonctionne pas...
J'ai bien vu que la méthode Find comportait plein de paramètres optionnels dont le xlNext et le xlPrevious.
J'ai tenté un:
Set flag2 = Columns(cel.Column).Rows.Find(cel.Value, , , , , xlPrevious)
Dont le code complet donne:
Sub interdire(cel)
Set flag = Columns(cel.Column).Rows.Find(cel.Value, , , , , xlNext)
Set flag2 = Columns(cel.Column).Rows.Find(cel.Value, , , , , xlPrevious)
If Not flag Is Nothing And flag.Address <> cel.Address Then
MsgBox cel & " est déjà affecté dans la salle " & flag.Parent.Cells(flag.Row - 1, 3) & " (" & flag.Parent.Cells(flag.Row - 1, flag.Column) & ")"
cel = ""
ElseIf Not flag2 Is Nothing And flag2.adress <> cel.adress Then
MsgBox cel & " est déjà affecté dans la salle " & flag2.Parent.Cells(flag2.Row - 1, 3) & " (" & flag2.Parent.Cells(flag2.Row - 1, flag2.Column) & ")"
cel = ""
End If
End Sub
et j'obtiens une erreur 438: Propriété ou méthode non gérée par cet objet.
Le débogage m'envoie à la ligne
ElseIf Not flag2 Is Nothing And flag2.adress <> cel.adress Then
Je m'y suis mal pris mais je sais pas ou ça pèche.