Récupérer le Range d'une plage nommée dynamique

d3d9x

XLDnaute Nouveau
Bonjour à tous,

Je cherche à récupérer les valeurs et dimensions de plages nommées dynamiques, dont la formule est du type:
maPlageNommee = DECALER(A1;0;0;NBVAR(A1:A999);2)

Cette partie fonctionne parfaitement, ma plage nommée fonctionne très bien. Le problème arrive lorsque je veux récupérer cette plage.

Dans la macro que je réalise, je balaye toutes les plages nommées de mon document, et je tri celles qui font 2 colonnes de largeur.

Problème, toutes les plages nommées avec la formule 'DECALER' me génèrent une erreur.

For each plage_nommee in ActiveWorkbook
If Ubound(Range(plage_nommee.Name),2) = 2 then
' Je conserve
Endif
Next plage_nommee

Résultat : La méthode Range de l'objet '_Global' a échouée

Comment puis-je palier à ce problème? En effet je ne peux pas récupérer les dimensions de la plage, ni ses valeurs!

NB : L'objectif final est de réaliser une macro qui crée une mise en forme conditionnelle en fonction du contenu de ma plage nommée.

Merci d'avance !
 

Paf

XLDnaute Barbatruc
Re : Récupérer le Range d'une plage nommée dynamique

Bonjour,

peut-être en passant par une variable intermédiaire:

Code:
 For Each plage_nommee In ActiveWorkbook.Names
    MonTab = Range(plage_nommee)
    If UBound(MonTab, 2) = 2 Then
        ' Je conserve
    End If
 Next


A+
 

Paf

XLDnaute Barbatruc
Re : Récupérer le Range d'une plage nommée dynamique

Re,


le code du post#2 tel qu'il est, fonctionne chez mois. Joignez un extrait représentatif de votre classeur sans données confidentielles. Ce sera plus simple de tester sur vos propres plages nommées.

A+

Edit: Bonjour Chris, effectivement beaucoup plus simple !
 
Dernière édition:

laurent950

XLDnaute Accro
Re : Récupérer le Range d'une plage nommée dynamique

Bonsoir,

Je pense qu'il faut récupérer la plage nommée
la stocké dans une variable tableau
et travailler comme un tableau


code ci-dessous : exemple

Sub test()

Dim tab1 As Variant
tab1 = Range("toto") ' ici toto est la plage nommée

For i = LBound(tab1, 1) To UBound(tab1, 1) ' Lignes
For j = LBound(tab1, 2) To UBound(tab1, 2) ' Colonnes
If tab1(i, j) = 3 Then
MsgBox "Test Ok est Resultat = " & tab1(i, j)
End If
Next j
Next i

End Sub

Laurent
 
Dernière édition:

d3d9x

XLDnaute Nouveau
Re : Récupérer le Range d'une plage nommée dynamique

Toutes mes excuses, je viens de comprendre mon erreur. Le code ne fonctionnait pas car certaines plages nommées faisaient référence à d'autres documents, non ouverts, et donc impossibles à estimer ...
 

Discussions similaires

Statistiques des forums

Discussions
312 489
Messages
2 088 855
Membres
103 976
dernier inscrit
kaizertv2001@gmailcom