XL 2010 Modifier les références d'une sélection multizones déjà nommée.

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

ChRouan

XLDnaute Nouveau
Bonjour.
Je souhaite modifier via Visual Basic les références d'un objet Range nommé "Legende01" comprenant plusieurs zones (cellules bleu clair du fichier joint) afin d'y ajouter les cellules C11:E11 (cellule rose).
Le but, par la suite, est de modifier les attributs de la légende (police, couleur de fond,...) et que cela se répercute sur toutes les activités (voir exemple simplifié en Macro1)
Merci d'avance pour votre aide.
 

Pièces jointes

Solution
Le code :
VB:
Sub SupprSelectionDeLegend01()
   Dim Zone As Range, RngRésu As Range
   For Each Zone In [Legende01].Areas
      If Intersect(Selection, Zone) Is Nothing Then
         If RngRésu Is Nothing Then Set RngRésu = Zone Else Set RngRésu = Union(RngRésu, Zone)
         End If
      Next Zone
   ThisWorkbook.Names.Add "Legende01", RngRésu
   End Sub
Bon sang mais c'est bien sur ! On reconstruit la référence à partir des zones non sélectionnées, donc on exclut de fait la sélection.
Bravo pour la réactivité et merci.
J'ai encore découvert une nouvelle fonction ; Intersect.
Encore merci.👍
Hello

une proposition à adapter.. ou pas..

VB:
Sub Macro2()
Dim AddZone As Range
    With ActiveWorkbook
        ZoneInit = .Names("Legende01").RefersTo 'récupère la cible actuelle'
        Set AddZone = Application.InputBox("Selectionnez la plage à ajouter", Type:=8) 'demande la zone à ajouter'
        NewZone = ZoneInit & "," & AddZone.AddressLocal(, , , True, True) 'Définit la nouvelle cible'
        Names("Legende01").RefersToLocal = NewZone 'applique la nouvele cible'
    End With
End Sub
 
Hello

une proposition à adapter.. ou pas..

VB:
Sub Macro2()
Dim AddZone As Range
    With ActiveWorkbook
        ZoneInit = .Names("Legende01").RefersTo 'récupère la cible actuelle'
        Set AddZone = Application.InputBox("Selectionnez la plage à ajouter", Type:=8) 'demande la zone à ajouter'
        NewZone = ZoneInit & "," & AddZone.AddressLocal(, , , True, True) 'Définit la nouvelle cible'
        Names("Legende01").RefersToLocal = NewZone 'applique la nouvele cible'
    End With
End Sub
Merci, c'est exactement ce qu'il me fallait.
Je n'avais jamais exploré les propriétés RefersTo, RefersToLocal et AddressLocal.
 
Boujour.
Sinon ceci fait aussi le taf :
VB:
Sub UnirSelectionÀLegende01()
   ThisWorkbook.Names.Add "Legende01", Union([Legende01], Selection)
   End Sub
En effet Excel calcule la référence correspondant à un objet spécifié en tant que RefersTo si ce n'est pas un String.
 
Dernière édition:
Boujour.
Sinon ceci fait aussi le taf :
VB:
Sub UnirSelectionÀLegende01()
   ThisWorkbook.Names.Add "Legende01", Union([Legende01], Selection)
   End Sub
En effet Excel calcule la référence correspondant à un objet spécifié en tant que RefersTo si ce n'est pas un String.
En effet ça marche aussi, merci.
En revanche existe-t-il un moyen de retirer une plage de cellules ? Si on le fait directement (ex : supprimer la ligne) le nom "Legende01" disparait de la feuille. J'ai cherché l'équivalent de la propriété Add (ex : Remove) mais je n'ai rien trouvé.
 
Le code :
VB:
Sub SupprSelectionDeLegend01()
   Dim Zone As Range, RngRésu As Range
   For Each Zone In [Legende01].Areas
      If Intersect(Selection, Zone) Is Nothing Then
         If RngRésu Is Nothing Then Set RngRésu = Zone Else Set RngRésu = Union(RngRésu, Zone)
         End If
      Next Zone
   ThisWorkbook.Names.Add "Legende01", RngRésu
   End Sub
 
Le code :
VB:
Sub SupprSelectionDeLegend01()
   Dim Zone As Range, RngRésu As Range
   For Each Zone In [Legende01].Areas
      If Intersect(Selection, Zone) Is Nothing Then
         If RngRésu Is Nothing Then Set RngRésu = Zone Else Set RngRésu = Union(RngRésu, Zone)
         End If
      Next Zone
   ThisWorkbook.Names.Add "Legende01", RngRésu
   End Sub
Bon sang mais c'est bien sur ! On reconstruit la référence à partir des zones non sélectionnées, donc on exclut de fait la sélection.
Bravo pour la réactivité et merci.
J'ai encore découvert une nouvelle fonction ; Intersect.
Encore merci.👍
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Retour