Bonjour,
Effectivement, c'est une liste déroulante qui affiche tous les outils car c'est ainsi que je l'ai paramétré.
C'est donc modifiable.
Sinon, pour le code, je vous met le détail ci après avec des commentaires
Private Sub worksheet_selectionchange(ByVal Target As Range)
'ici, c'est le début de la macro et elle se lance quand vous selectionner la plage
If Not Intersect(Target, Range("E6:E105")) Is Nothing Then 'adapter la plage au besoin
lieu = Target.Address
'toutes les variables nécessaires sont introduites ici avec string pour le texte, range pour la position (B1, A6...), long pour les nombres
Dim colnom As Range
Dim DernLigne As Long
Dim lignom As Range
Dim nom As String
Dim personel As String
Dim materiel As String
Target.Select
'ici, j'affecte le nom de l'outils à la variable nom
nom = ActiveCell.Offset(0, 1).Value
If ActiveCell.Offset(0, -1).Value = "" Then 'si la cellule ne contient rien alors...
personel = ActiveCell.Offset(0, -1).End(xlUp).Value
Else
personel = ActiveCell.Offset(0, -1).Value
End If
'ci après, la recherche de l'emplacement de la référence de l'outil dans la feuil2 (avec la ligne correspondant au nom de l'employé et la 'colonne avec le nom de l'outil)
Set colnom = Sheets("Feuil2").Cells.Find(nom)
place = colnom.Address
place = Sheets("Feuil2").Range(place).Address
col = Range(place).Column
Set lignom = Sheets("Feuil2").Cells.Find(personel)
place = lignom.Address
place = Sheets("Feuil2").Range(place).Address
lig = Range(place).Row
'affectation de la référence de l'outil a la variable materiel (la référence peut être vide si l’outil ne lui appartient pas)
materiel = Sheets("Feuil2").Cells(lig, col).Value
' literalement : si la cellule contenant la reference est differente de rien alors... -->l'outil lui appartient
If materiel <> "" Then
'comme l'outils lui appartient, on place la reference dans la cellule de la feuille "Final"
Target.Value = materiel
Else
'Sinon, on crée une liste déroulante dans la cellule de la feuille "Final"
Range(lieu).Select
With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="='Liste outils'!$C$3:$C$34" 'c'est ici que l'on modifie la référence de la liste déroulante
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
End If
End If
End Sub
Pour la liste modifiable, j'y travaille et je modifie dès que possible.
Si vous avez d'autres questions, n'hésitez pas!
Cordialement