VBA : vérifier la validité d'une adresse de plage avant de l'utiliser avec RANGE

Guy_M

XLDnaute Occasionnel
Bonjour,

J'ai dans une variable une adresse absolue de plage sous forme texte , je souhaite m'assurer qu'elle est sous la forme A1 ou A1: D4 ; R1C1 ou R1C1:R4C4 et que les limites sont respectées avant de l'utiliser dans une instruction RANGE(adresse) ?

Mes recherches n'ayant rien donné, je pense qu'ici je trouverai sûrement quelqu'un de plus perspicace.

Existe-t-il une fonction de VBA qui fait cela (j'ai trouvé des bouts de code qui détournent le traitement d'erreurs -on erreur ... if err.number- je veux éviter) ?
Sinon
Auriez-vous une fonction toute prête ?
Sinon
Y a-t-il des constantes VBA qui donnent les limites max des adresses de la version courante d'Excel (XFD1048576 dans Excel 2007 R65536C256 dans Excel 2003) pour que je puisse écrire une fonction de vérification d'adresse de plage indépendante de la version d'Excel ?

Par avance, je vous remercie de vos réponses.
Guy

Question complémentaire, peut-on vérifier l'existence d'une plage nommée plus simplement qu'avec une boucle sur la collection Names et sans détourner le traitement des erreurs ?
 

Guy_M

XLDnaute Occasionnel
Re : VBA : vérifier la validité d'une adresse de plage avant de l'utiliser avec RANGE

Bonjour,

Merci pour ce premier indice, j'ai l'adresse de la dernière cellule (et donc les limites) avec
Code:
Cells(Rows.Count, Columns.Count).Address

Cela ne fonctionne que si la feuille active est une feuille de calcul et donc uniquement si on a accès à une feuille de calcul (ce qui est en général le cas).

Salutations
Guy
 

Pierrot93

XLDnaute Barbatruc
Re : VBA : vérifier la validité d'une adresse de plage avant de l'utiliser avec RANGE

Re,

Cela ne fonctionne que si la feuille active est une feuille de calcul et donc uniquement si on a accès à une feuille de calcul (ce qui est en général le cas).
bah... préciser la feuille en question dans ce cas....
Code:
With Sheets("NomFeuille")
    .Cells(.Rows.Count, .Columns.Count).Address
End With
 

Guy_M

XLDnaute Occasionnel
Re : VBA : vérifier la validité d'une adresse de plage avant de l'utiliser avec RANGE

Bonjour,

Mon objectif est une fonction universelle, il se peut qu'il n'y ait pas de feuille de type "worksheet" ouverte au moment de l'exécution de la fonction.

Salutations
Guy
 

Guy_M

XLDnaute Occasionnel
Re : VBA : vérifier la validité d'une adresse de plage avant de l'utiliser avec RANGE

Bonjour,

On doit faire quelque chose comme ça :

Code:
For Each Classeur In Workbooks
    For Each Feuille In Classeur.Sheets
       If TypeName(Feuille) = "Worksheet" Then
           Debug.Print "Trouvé : " & Feuille.Cells(Feuille.Rows.Count, Feuille.Columns.Count).Address
           End
       End If
    Next
Next

Mais si j'arrive à "Pas trouvé" je suis légèrement embêté (cela doit être vraiment très très rare).

Salutations
Guy
 

Discussions similaires

Statistiques des forums

Discussions
314 450
Messages
2 109 730
Membres
110 553
dernier inscrit
loic55