XL 2010 VBA --> colorer toutes les cellules comportant un nom

  • Initiateur de la discussion Initiateur de la discussion Nairolf87
  • Date de début Date de début

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 !

Nairolf87

XLDnaute Nouveau
Bonjour,
Je cherche à colorer toutes les cellules comportant un nom une zone bien précise.
Je suis obligé de définir une zone (plage) car sinon j'ai l'impression que ca peut colorer les cellules fusionnées.

J'ai fait cet ébauche de code mais j'ai un blocage sur la ligne :
Code:
For Each Nom In plage.Names

Merci d'avance


Code:
Sub CouleurNom()
    Dim Nom As Name
    Dim plage As Range
    Dim derlig As Integer
   
    derlig = Cells.SpecialCells(xlCellTypeLastCell).Row
   
 Set plage = Range("A5:AN" & derlig)

    For Each Nom In plage.Names
        Nom.RefersToRange.Interior.color = 15
    Next Nom
   
End Sub
 
Bonjour Nairolf87,

On ne peux trouver les plages nommées qu'au niveau workbook:
For Each Nom In ActiveWorkbook.Names

puis vérifier que la plage définie et la plage nommée "s'intersectent"

Code:
  If Not Intersect(Plage, Range(nom)) Is Nothing Then
        Nom.RefersToRange.Interior.ColorIndex = 15
  End If

à adapter. Non testé

A+




 
Bonjour nairolf87

Salut Paf 🙂

A tester:
Code:
Sub CouleurNom()
    Dim Nom As Name
    Dim plage As Range
    Dim derlig As Integer
  
    derlig = Cells.SpecialCells(xlCellTypeLastCell).Row
  
Set plage = Sheets("Feuil1").Range("A5:AN" & derlig)
    For Each Name In Names
     If Not Intersect(plage, Range(Replace(Name.RefersTo, "=", ""))) Is Nothing Then
         Range(Replace(Name.RefersTo, "=", "")).Interior.Color = 15
     End If
    Next
  
End Sub
 
Merci beaucoup pour vos réponses, je ne connais pas trop la fonction Intersect, après l'essai de vos 2 propositions j'ai à chaque fois le message suivant :

Erreur d'execution '1004'
La méthode 'Intersect' de l'objet '_Global' a échoué.

Merci d'avance
 
Re

Un zest capillotracté et à tester:
Code:
Sub CouleurNom()
    Dim Nom As Name
    Dim plage As Range
    Dim derlig As Integer
    Dim Ad As String
    derlig = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row
Set plage = Sheets("Feuil1").Range("A5:AN" & derlig)
    For Each Name In Names
    feuille = Mid(Split(Name.RefersTo, "!")(0), 2)
    Ad = Split(Name.RefersTo, "!")(1)
    If ActiveSheet.Name = feuille Then
      If Not Intersect(plage, Range(Ad)) Is Nothing Then
        ActiveSheet.Range(Ad).Interior.Color = 15
       End If
     End If
    Next
End Sub
 
- 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

Discussions similaires

Réponses
7
Affichages
316
Réponses
2
Affichages
426
Réponses
3
Affichages
799
Retour