Gestion nom des plages par VBA
Bonjour a tous,
Je suis confronté à un problème de noms de plage.
Mon fichier comporte deux listes déroulantes liées.
J'ai donc, la première liste déroulante maitre qui fait référence à une plage (A1 à M1).
Et mes listes indirecte (A2 ; A 20) ; (B 2 ; B 20) etc...
Pour que les listes soient liées, la zone de chaque liste indirect doit porter le nom de la cellule maitre.
Si A1 = " Usinage "
A2 = " CN " ; A3 = "Debit " ; etc...
La plage A2 à A 20 doit porter le nom "Usinage".
La valeur des cellules maitres pouvant être modifiée, je dois passer par du VBA.
Code:
1 2 3 4 5 6
|
Sub Renommer_Plage(TargetCell As Range)
If TargetCell.Row = 1 And TargetCell.Column >= 2 And TargetCell.Column <= 16 Then
ActiveWorkbook.Names.Add Name:=TargetCell.Value, RefersTo:=Range(TargetCell.Offset(1, 0), TargetCell.Offset(26, 0))
Else: End If
End Sub |
et Sur les feuilles sources:
Code:
1 2 3
| Private Sub Worksheet_Change(ByVal Target As Range)
Renommer_Plage Target
End Sub |
Les listes déroulantes marchent, mais au lieu de renommer la plage déjà existante, excel crée une nouvelle plage sur la même zone avec un nom différent.
Du coup, les données peuvent avoir des problèmes de fiabilité.
Je voudrais que lorsqu'une modif est faite dans la liste déroulante maitre, que la liste déroulante dépendante de la première renomme la plage au lieu d'en recréer une autre.
Je cherche depuis un moment la solution mais je crois bien avoir besoin d'aide....
Comment puis-je résoudre ce problème ?
Merci de vos commentaires,