Re Bonjour
Un membre bien sympathique m'a crée un code vba pour gérer des salles informatiques : 2 salles ne peuvent pas être disponibles pour la même date.
J'ai donc sur certaines colonnes des listes déroulantes qui me permettent de choisir les salles.
Sauf qu'il se passe un truc de ouf, quand je sélectionne une plage de cellule, toutes les cellules passent en liste déroulantes ?!?
Je vous mets le code, si vous y comprenez quelque chose ça me sauverait 😎
merci d'avance
Un membre bien sympathique m'a crée un code vba pour gérer des salles informatiques : 2 salles ne peuvent pas être disponibles pour la même date.
J'ai donc sur certaines colonnes des listes déroulantes qui me permettent de choisir les salles.
Sauf qu'il se passe un truc de ouf, quand je sélectionne une plage de cellule, toutes les cellules passent en liste déroulantes ?!?
Je vous mets le code, si vous y comprenez quelque chose ça me sauverait 😎
merci d'avance
Code:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
[A1].Select
End Sub
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Set champ = _
Range("d4:d34,f4:f34,k4:k34,M4:M34,R4:R34,T4:T34,y4:y34,aa4:aa34,af4:af34,ah4:ah34,am4:am34,ao4:ao34")
PremSem = Array("1er SemestreDD", "1er SemestreCF", "1er SemestreAM", _
"1er SemestreFL", "1er SemestreRV", "1er SemestreYB", _
"1er SemestreOccas1", "1er SemestreOccas2", "1er SemestreOccas3", "1er SemestreOccas4", "1er SemestreOccas5")
DeuxSem = Array("2nd SemestreDD", "2nd SemestreCF", "2nd SemestreAM", _
"2nd SemestreFL", "2nd SemestreRV", "2nd SemestreYB", _
"2nd SemestreOccas1", "2nd SemestreOccas2", "2nd SemestreOccas3", "2nd SemestreOccas4", "2nd SemestreOccas5")
'---
p = Application.Match(Sh.Name, PremSem, 0)
If Not IsError(p) And Not Intersect(champ, Target) Is Nothing Then
temp = ""
ligne = Target.Row
col = Target.Column
For Each c In [SALLES]
témoin = False
For Each s In PremSem
If c = Sheets(s).Cells(ligne, col) Then témoin = True
Next s
If Not témoin Then temp = temp & c.Value & ","
Next c
Target.Validation.Delete
ActiveSheet.Unprotect Password:=""
Target.Validation.Add xlValidateList, Formula1:=Left(temp, Len(temp) - 1)
ActiveSheet.Protect Password:=""
End If
'---
p = Application.Match(Sh.Name, DeuxSem, 0)
If Not IsError(p) And Not Intersect(champ, Target) Is Nothing Then
temp = ""
ligne = Target.Row
col = Target.Column
For Each c In [SALLES]
témoin = False
For Each s In DeuxSem
If c = Sheets(s).Cells(ligne, col) Then témoin = True
Next s
If Not témoin Then temp = temp & c.Value & ","
Next c
Target.Validation.Delete
Target.Validation.Add xlValidateList, Formula1:=Left(temp, Len(temp) - 1)
End If
End Sub
Dernière édition: