Posez votre question Signaler

[Excel VBA] différents types d'objets 'range'

Zorglub - Dernière réponse le 22 sept. 2010 à 12:31
Bonjour,
Je cherche désespérément à comprendre les subtiles nuances des objets regroupés sous le type 'range'.
En effet, l'aide et l'explorateur d'objets prétendent dans de nombreux cas qu'une collection contient des objets 'range', mais souvent de nombreuses opérations sont interdites sur ces objets.
ex: ActiveSheet.columns(1) est censé renvoyer un objet range, mais de nombreuses propriétés/méthodes des objets range vont produire une erreur
Autre exemple, plus frappant:
Si on essaye de typer des variables as 'Range', de nombreuses opérations sont interdites:
Sub testtypes()

    Dim CellA As Range
    Dim CellB As Range
    
    For Each CellA In Range("A1:C3")
            
            CellB = CellA ' <- provoque une erreur !!
    
    Next

End Sub

Comment se fait-il qu'un objet de type range ne puisse pas être copié dans un autre ?
D'expérience, il semble que les range de 'sous-type' colonne ou cellule seule soient différents des ranges classiques, mais je ne parviens pas à manipuler ces objets en les typant. Quand ils ne sont pas typés, ou variant, je reste bloqué par des erreurs m'indiquant (plus ou moins clairement) que mon objet range ne me permet pas d'utiliser telle ou telle propriété (genre .value !) ou telle opération (genre copie dans une autre variable)
Quelqu'un comprend-t-il ses nuances de types ?
Lire la suite 

[Excel VBA] différents types d'objets 'range' »

2 réponses
Réponse
+1
moins plus
Bon,

J'ai résolu le problème d'affectation des objets:
Il faut utiliser l'instruction 'Set' pour affecter à un objet la référence d'un autre.
Set CellB = CellA


Bon, mais il reste des trucs louches sur les types rangée / colonne...
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour,

Un objet doit être instancié pour qu'il existe.

Dans ton exemple CellB est bien déclaré comme un objet Range mais il n'est pas créé.

Il faut faire un Set pour créer l'objet:
Set plage = Range("A1:G10")


;o)
Ajouter un commentaire
Ce document intitulé « [Excel VBA] différents types d'objets 'range' » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?