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 :

utilité Dim As


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Inscrit en
    Novembre 2010
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 41
    Par défaut utilité Dim As
    Bonjour à tous,

    Je viens de créer un script ou j'ai été contraint d'utiliser un Dim....As. cela marche parfaitement mais je souhaiterai avoir l'explication par rapport au fait que cela ne marche pas si je ne le met pas.

    Merci d'avance

  2. #2
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Bonjour.

    En VBA, l'instruction Dim est la plus courante pour déclarer une variable.
    Si tu utilises une variable sans l'avoir déclarée :
    - si tu as "Option Explicit", cela provoque une erreur de compilation
    - sinon, cela crée un variant et si ce type ne convient pas, tu as une erreur d'exécution.

    Il est recommandé de travailler avec "Option Explicit" et de déclarer toutes les variables dans le type qui convient.

    COrdialement,

    PGZ

  3. #3
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut heu
    bonjour

    "dim" sert a initialiser une variable

    exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    sub allumer ()
     dim nom as string 'string etant le type de variable representant du text
    nom=application.username
    msgbox "bonjour" & nom
    tu a differente sorte de variables

    long: numeriques
    string: text
    object: objet controls et autres
    integer numerique
    bytes: numerique utiliser pour les chrono, compteur
    variant :qui peut prendre plusieurs aspect des precedentes on l'utilise quand une valeur peut etre de plusieur type
    boolean: qui n'autorise que le true ou le false qui sert tres souvent a stoper ou demarer une action


    reste a choisir le bon type dans tes macros
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  4. #4
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    Bonjour,

    "dim" sert a initialiser une variable
    Attention, Dim est une instruction de déclaration * ! et n'a rien à voir avec une initialisation.
    Nous sommes dans un langage de programmation et la définition des mots clefs a son importance et ne peut être prise à la légère.


    *cf message de pgz d'ailleurs

    cordialement,

    Didier

  5. #5
    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
    La question est sans doute : pourquoi s'emmnuyer avec ça? La réponse est : pour eviter de mélanger des choux avec des carottes. Si on ne définit pas les variables explicitement, on peut très bien coder :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    a = "TEXTE"
    b = 124
    c = b / a
    et ça n'est qu'à l'execution que ça se plante.

    alors que si on rajoute "option explicit" en tête de module, hop! dès la compilation il signale qu'il y a des bizarreries.

    En bref, ça oblige à structurer son travail, ce qui permet d'anticiper les erreurs de type. Sur 3 lignes, ça ne change pas grand chose, sur 30,000, c'est le jour et la nuit.

  6. #6
    Membre averti
    Inscrit en
    Novembre 2010
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 41
    Par défaut
    Merci pour vos réponses

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

Discussions similaires

  1. Utilité d'un pointeur vers une fonction ?
    Par Nasky dans le forum C
    Réponses: 10
    Dernier message: 20/03/2010, 19h54
  2. [LG]Utilité du type enuméré ?
    Par tarbala dans le forum Langage
    Réponses: 2
    Dernier message: 10/12/2003, 16h20
  3. Le BIOS et son utilité
    Par le mage tophinus dans le forum Assembleur
    Réponses: 75
    Dernier message: 21/11/2003, 15h37
  4. utilité du binaire et hexadecimaux?
    Par souris78 dans le forum C
    Réponses: 9
    Dernier message: 01/07/2003, 15h08
  5. [VBA-E] Dim dynamique sur un tableau
    Par Vince69 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 12/12/2002, 13h32

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