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 :

Explication sur le mot New


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé
    Avatar de tamtam64
    Homme Profil pro
    stagiaire developpement vba
    Inscrit en
    Mai 2012
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : stagiaire developpement vba
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2012
    Messages : 456
    Billets dans le blog
    17
    Par défaut Explication sur le mot New
    Bonjour,

    je recherche une explication sur l'utilite et l'utilisation du mot New , j'ai fait des recherches sur internet mais je ne comprend pas reelement, car j'ai compris que c'etait une nouvelle instantiation d'un objet mais alors pourquoi Range n'en a pas ? pourquoi j'en met un pour dictionary ou pour application.access ?

    En fait c'est flou
    la seul chose que je semble avoir compris c'est que Set signifie l'atribution d'une valeur dans un objet .

    Voila je recherche un peu d'explication car c'est un peu flou cette histoire de new. Je ne comprend pas si range est un objet pourquoi n'a t-il pas de new et dictionary oui .

    Merci

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonsoir,
    Je reconnais que c'est déroutant, le mot new permet effectivement de référencer un objet a une classe.

    Et oui un range est bien une classe!

    Prénom un module de classe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    dim cls as classe1
    Set csl= new classe1
    Dim cls2 as classe1
    Set cls2 = cls
    dans cet exemple j'utilise le mot new pour créer une instance de la classe1
    Mais j'affecte en suite cls a cls2, en d'autres termes j'affecte un objet existant a un autre objet!

    L'objet range lui a un nombre instances défini et fini. Utiliser me mot new revient a en ajouter et la ce n'est pas possible!

  3. #3
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Dans la même veine que Robert, il ne faut pas oublier que BASIC (Beginers All Purpose Symbolic Instruction Code) n'a jamais été prévu pour devenir un langage de programmation objet. C'était prévu comme un langage de transition ou de préparation à l'étude du FORTRAN. Et même que je ne suis pas sûr que le concept de programmation-objet existait à l'époque.

    Au cours des années, Microsoft qui est devenu le fournisseur de presque tous les BASIC (incluant les BASIC d'Apple) a fait évoluer (incomplètement) son Microsoft BASIC et ses différentes variantes vers un langage orienté objet, sauf que la conception même du BASIC et la compatibilité ont rendu la conversion totale de BASIC en langage orienté objet impossible. C'est pour cela que des propriétés d'un objet VBA peuvent être elles-mêmes des objets, et c'est plutôt la règle que l'exception.

    Par contre, VB.net a été prévu pour être un logiciel orienté objet, et c'est principalement pour cela que la compatibilité avec VB6 et VBA n'est pas complète, parce que c'était tout simplement impossible de faire un nouveau BASIC vraiment orienté objet complètement compatible avec les "vieux" BASIC.

    Ce qui demande aussi un peu d'acrobaties, c'est qu'il n'y a pas "UN VBA", mais plusieurs VBA. Même que Microsoft a vendu VBA sous licence à d'autres compagnies qui l'ont intégré à leurs propres produits (Autodesk et Dassault Systèmes, par exemple). Si on prend juste Excel, il y a les dll VBA Office qui sont communes à toutes les applications et des dll particulières pour Access, Word, Excel, PowerPoint etc. font VBA-Excel, VBA-Word etc. Pour l'objet "dictionary" ce n'est même pas un objet de VBA, mais un élément de "SCRIPTING". C'est pour cela que tu dois avoir un new Scripting.dictionnary ou un CreateObject("Scripting.dictionnary"). Mais rendu-là, c'est un autre sujet.

    Ouf! la batterie est presque vide

  4. #4
    Expert confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    6 814
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 6 814
    Par défaut
    Pour dire la même chose que les précédents, mais différemment, l'objet Range EXISTE DÉJÀ. Donc pas besoin de le recréer. Il existe parce qu'on est dans EXCEL. Par contre, des objets importés(comme le dictionary), voire créés directement par le développeur(dans des modules de classe), sont à instancier, puisque même si leur structure(la classe) est définie, elle n'a pas, au lancement du code, les données associées.

Discussions similaires

  1. Question sur le mot new
    Par heeedi dans le forum Débuter avec Java
    Réponses: 5
    Dernier message: 03/08/2009, 11h20
  2. Explication sur formulaire et mot de passe
    Par hugoclo dans le forum Sécurité
    Réponses: 11
    Dernier message: 10/03/2008, 19h07
  3. [final]demande d'explication sur ce mot-clé
    Par Invité dans le forum Langage
    Réponses: 10
    Dernier message: 18/04/2006, 11h32
  4. Réponses: 28
    Dernier message: 18/08/2003, 11h54
  5. recherches des cours ou des explications sur les algorithmes
    Par Marcus2211 dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 19/05/2002, 22h18

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