sélectionner toutes les plages nommées

_RV

XLDnaute Nouveau
Salut à tous,

je sais que j'arrive un peu comme une fleur en cette fin de journée-semaine... mais voilà, je suis devant un problème qui me semble simple, mais que je ne parviens pas à résoudre.

Je voudrais juste sélectionner toutes les plages qui portent un nom en même temps (le faire l'une après l'autre j'y arrive mais ca ne m'intéresse pas), et pas les autres. Il me faudrait un code VB bien évidement. Qqun a-t-il la baquette magique qui me permettrait de partir en week end serein?

d'avance merci beaucoup...
 

_RV

XLDnaute Nouveau
en fait j'ai une macro qui nomme les plages de cellules qui m'intéressent (pour un graphe ou TCD ultérieurement).

Ces plages sont disséminées dans mon tableau, et varie à chaque fois, c'est la raison pour laquelle je les nomme. Une fois nommées, je voudrais toutes les sélectionner en meme temps, un truc du style

Activeworbook.names.select

sauf que ca ùarche pas comme ca...

j'espere avoir été assez clair

encore merci
 

Jacques87

XLDnaute Accro
Je comprends bien,

Il faudra trouvé un moyen de stocker les noms que tu donnes au fur et à mesure pour pouvoir boucler sur la liste ainsi construite

et je pense alors à un truc du genre

For each nom in selection
Range(nom).Select
Next

à approfondir
 

Hervé

XLDnaute Barbatruc
Bonsoir tout le monde

peut etre comme ceci :


Sub Bouton1_QuandClic()
Dim plage As Range
Dim premier As Byte
Dim i As Integer

With ActiveWorkbook
       
For i = 1 To .Names.Count
               
If premier = 0 Then
                       
Set plage = Range(.Names(i))
                        premier = 1
               
Else
                       
Set plage = Union(plage, Range(.Names(i)))
               
End If
       
Next i
End With
       
plage.Select
End Sub

le problème, c'est que ce code bug si il y a des noms sur les autres feuilles.

je ne sais pas comment syntaxé la collection names pour la feuille active.

salut
 

Jacques87

XLDnaute Accro
Si, tu as raison
Je pense à Range('A1:B2,C3:F5,G6:K7').Select qui te permet de sélectionner 3 plages distinctes, voyons si avec leur nom ça fonctionne

J'ai vérifié et il n'y a aucun problème, tu peux même combiner
Range('toto,F5:H7').Select

Bon courage
 

Abel

XLDnaute Accro
Bonjour _RV, Jacques87, Jeannot45,

_RV, essaie ce code :

Code:
Sub LaGrossePlage()
Dim N
Dim MaPlage As Range
For Each N In Names
If MaPlage Is Nothing Then
Set MaPlage = Range(N)
Else
Set MaPlage = Application.Union(MaPlage, Range(N))
End If
Next N
MaPlage.Select
End Sub

Y a sûrement mieux.

Abel.

Edition:
C'est marrant, pendant que je tapouillais mon code, je me disais 'Tiens, c'est bizarre, Hervé n'est pas encore passé par là.
Va sûrement faire encore un barbatruc avec un tableau, enfin un truc super concis et propre.'
Et paf ! A la relecture ...
Salut Hervé.

Message édité par: Abel, à: 10/02/2006 16:31
 

pierrejean

XLDnaute Barbatruc
bonjour tous

j'ais ceci qui fonctionne sur une page

Sub test1()
Set nms = ActiveWorkbook.Names
Set wks = Worksheets(1)
For r = 1 To nms.Count
If r = 1 Then plage = nms(r).RefersToRange.Address
If r > 1 Then plage = plage + ',' & nms(r).RefersToRange.Address
Next
Range(plage).Select
End Sub

Message édité par: pierrejean, à: 10/02/2006 16:45
 

Jacques87

XLDnaute Accro
Hervé, Abel salut

Abel j'ai la même erreur qu'avec le code d'Hervé si j'ai des plages dans plusieurs feuilles

Hervé j'ai bricolé un truc pas très catholique car il faut connaître le nom de la feuille (bien qu'on peut automatiser cette recherche) et ça semble fonctionner

Private Sub CommandButton1_Click()
Dim plage As Range
Dim premier As Byte
Dim i As Integer

With ActiveWorkbook
For i = 1 To .Names.Count
If Left(.Names(i), 7) = '=Feuil1' Then
If premier = 0 Then
Set plage = Range(.Names(i))
premier = 1
Else
Set plage = Union(plage, Range(.Names(i)))
End If
End If
Next i
End With

plage.Select

End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 438
Messages
2 088 411
Membres
103 847
dernier inscrit
Girardon