XL 2010 VBA: Comment déterminer si un range est 3D [Résolu]

Guy_M

XLDnaute Occasionnel
Bonjour,

Je souhaite limiter le travail sur une sélection à la partie utile (la zone en intersection avec "UsedRange").

Or, "Selection" est un range, il peut donc être en 3D et "UsedRange" ne travaille que sur une feuille de calcul (je suis obligé d'utiliser "Selection.Parent.UsedRange") donc si "Selection" est en 3D je suppose que mon appel à "UsedRange" déclenchera un erreur.

Savez vous comment détermine-t-on si un "Range" est en 3D ? Ce test me permettra d'éviter un traitement d'erreur.

Par avance, merci pour vos réponses.
A bientôt
Guy
 

eriiic

XLDnaute Barbatruc
Bonjour,

Or, "Selection" est un range, il peut donc être en 3D
Tu es sûr de ça ?
Même si je fais une sélection 3D, Selection n'a qu'une seule Area et qu'un seul parent.
Et sur :
VB:
Set pl = Union(Sheets("Feuil1").Range("A1"), Sheets("Feuil2").Range("A1"))
tu te fais jeter royalement.
Si tu pouvais mettre un fichier avec un range 3D stp.
eric
 

Dranreb

XLDnaute Barbatruc
Après quelque tests, il semblerait que les référence 3D ne sont prises en charge que par les fonctions d'Excel et comme références dans les noms. Il ne parait pas exister d'objet VBA représentant une telle référence. À la tentative d'en transmettre une à une fonction personnalisée attendant un ByVal X As Variant, celle ci trouve TypeName(X) = "Error". CLng(X) vaut 2015 aussi connu sous le nom de xlErrValue et CVErr(xlErrValue) correspond à #VALEUR!
 
Dernière édition:

Guy_M

XLDnaute Occasionnel
Merci Eriiiic et Dranreb pour ces éclaircissement,

A propos de range Selection en 3D, je n'ai pas d'exemple, je n'ai fait qu'appliquer un raisonnement logique d'après ce que j'ai lu dans le manuel Ce lien n'existe plus où il est écrit
L'objet Range représente une seule cellule, une ligne, une colonne, une sélection de cellules qui contient un ou plusieurs blocs contigus de cellules ou une plage 3D.
Selection est un Range donc potentiellement en 3D.
UsedRange travaille avec un WorkSheet.
La feuille dans la quelle se situe Selection est Selection.Parent.
Je doute que le parent d'un range 3D soit une feuille de calcul et donc il est fort probable que Selection.Parent.UsedRange quand Selection est 3D remonte une erreur ou un résultat que je ne maîtrise pas.
Voilà comment on arrive à se poser cette question.
D'après ce que vous écrivez, je fais le pari, que je ne rencontrerai pas ce cas de figure très particulier, je choisi ne pas créer un traitement d'erreur pour ce cas très particulier.
Merci pour vos réponse.
 

Dranreb

XLDnaute Barbatruc
Bonjour.
On peut noter qu'il n'y a aucun exemple d'utilisation de plage 3D dans la suite du document.
Ce qui laisse à penser que c'est un secteur de l'interface Excel/VBA non finalisé par Microsoft.
Mais comme dit s'il s'agit uniquement de Selection, vous pouvez toujours tester aussi ActiveWindow.SelectedSheets.Count pour éviter de traiter une sélection effectuée par l'utilisateur dans un sens différent, ou même au contraire reproduire le traitement pour toutes les feuilles de cette collection.
 

Discussions similaires

Statistiques des forums

Discussions
312 104
Messages
2 085 346
Membres
102 868
dernier inscrit
JJV