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

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
 

Paf

XLDnaute Barbatruc
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+




 

pierrejean

XLDnaute Barbatruc
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
 

Nairolf87

XLDnaute Nouveau
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
 

pierrejean

XLDnaute Barbatruc
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
 

Discussions similaires

Réponses
7
Affichages
327
Réponses
21
Affichages
290

Statistiques des forums

Discussions
312 215
Messages
2 086 329
Membres
103 183
dernier inscrit
karelhu35