IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

syntaxe référence cellule: [] ou range ?


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Chewi
    Étudiant
    Inscrit en
    Août 2006
    Messages
    180
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2006
    Messages : 180
    Par défaut syntaxe référence cellule: [] ou range ?
    Bonjour à tous,

    Tout d'abord félicitation pour le succès grandissant de ce forum VBA qui a donc été divisé en plusieurs catégories (oui ça fait longtemps que je ne suis plus passé).

    Je dois retravailler sur un ancien code ou je trouve 2 syntaxes pour le référencement des cellules:

    - l'utilisation de crochet: .[A1]
    - la méthode range: Range("A1")

    Dorénavant, j'utilise le plus souvent les crochets car la lecture du code est plus rapide par l'interpréteur.

    J'aurais voulu savoir si en ré-écrivant le code, je pouvais me lancer à corps perdu dans les crochets.

    Peut-on tout le temps les utiliser? (peu de gens les utilisent)
    Quelle différence y a t'il entre les 2 syntaxes ?

    Question sans grande importance mais je vous remercie grandement.

    Bonne journée,

    Chewi

  2. #2
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Par défaut
    bonjour

    Dorénavant, j'utilise le plus souvent les crochets car la lecture du code est plus rapide par l'interpréteur.
    A mon avis c'est le contraire. les crochets (équivalent de méthode Evaluate) doivent donner un temps de calcul plus long.
    En fait tu remplaces l'objet Range par un appel de la méthode Evaluate, avec en argument l'adresse de la cellule.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub Test_Evaluate()
        Dim i As Integer
        Dim T As Double
     
        T = Timer
     
        For i = 1 To 10000 '1000
            Evaluate("A" & i) = "x"
        Next i
     
        Debug.Print CStr(Timer - T) & " secondes"
    End Sub

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub Test_Range()
        Dim i As Integer
        Dim T As Double
     
        T = Timer
     
        For i = 1 To 10000 '1000
            Range("A" & i) = "x"
        Next i
     
        Debug.Print CStr(Timer - T) & " secondes"
    End Sub


    Résultats :

    Evaluate i= 1000 --> 0,625 secondes

    Range i= 1000 --> 0,546875 secondes

    Evaluate i= 10000 --> 6,125 secondes

    Range i= 10000 --> 5,46875 secondes




    michel

  3. #3
    Membre confirmé Avatar de Chewi
    Étudiant
    Inscrit en
    Août 2006
    Messages
    180
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2006
    Messages : 180
    Par défaut
    Bonjour Silkyroad,

    Par contre, si j'inscris 3000 fois (300fois 10 sur une ligne) Range("A1"), j'ai un classeur de 60ko.

    Et avec [A1], je n'ai que 36ko !

    Donc au total final, ... il n'y a pas grande différence.

    Et j'ai l'impression de gagner en clareté du code.

    Mais ceci dit, je ne suis pas confiant en son utilisation dans un code comme celui-ci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub ess()
    ThisWorkbook.Worksheets(1).[G5].Offset(-1, -2).Resize(7, 4).Select
    End Sub
    Même si là, je n'ai pas de problème.

    Y a t'il des limites à son utilisation ?
    Des syntaxes où il ne fonctionnera pas?

  4. #4
    Membre confirmé Avatar de Chewi
    Étudiant
    Inscrit en
    Août 2006
    Messages
    180
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2006
    Messages : 180
    Par défaut
    Je mets ce sujet en "résolu" mais si quelq'un voit d'autres éléments à apporter ou a d'autres considérations sur la chose ...

    BàT

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] remplissage automatique de cellules (Bug range) Debutant
    Par isfet dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 31/05/2010, 10h43
  2. [XL-2003] Référence cellule nom/adresse absolue
    Par RussellD dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 29/04/2010, 16h40
  3. [XL-2007] Dimensions d'une plage de cellule ? (avec Range.)
    Par Kwick dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 12/03/2010, 08h57
  4. problème de syntaxe sélection cellule et formule
    Par babou466 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 24/02/2009, 13h11
  5. Variable dans référence cellule feuille
    Par spud96 dans le forum Excel
    Réponses: 1
    Dernier message: 29/10/2007, 13h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo