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 :

Déclarations de variable integer vs long vs double [XL-2016]


Sujet :

Macros et VBA Excel

  1. #1
    Membre éprouvé
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2017
    Messages
    1 274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2017
    Messages : 1 274
    Par défaut Déclarations de variable integer vs long vs double
    Bonjour,

    Je voudrai avoir une précision concernant la déclaration des variables pour les nombres entiers, j'ai beaucoup lu et parcouru le forum, la différence entre "Integer" "Long" et "Double " est clair en terme de limite.

    J'ai aussi noté que nombre d'entres vous ( et pas des moindres) disent avoir définitivement abandonné "Integer" au profit de "Long", certains même ont opté pour "Double"

    Pour ma part j'ai toujours (par ignorance) tout déclaré en "Integer", compte tenu de la limite en valeur j'envisage de tout passer en 'Long"

    Ma question est la suivante, on voit bien les avantages de chaque solution , mais quels sont les inconvénients, on n'en parle pas, à part peut être la mémoire occupée, mais est-ce si important vu la taille mémoire des PC actuels ?

    Quels sont vos préconisations ?

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    Le choix du type dépend directement de la nature des données à traiter
    La "gourmandise" en mémoire de chaque type est différente. Les plus "avares" ont ce souci. Ce qui peut le plus pouvant le moins, les plus "généreux" utilisent le type Long en lieu et place du type integer et/ou le type Double en lieu et place du type single
    Voilà tout

  3. #3
    Membre éprouvé
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2017
    Messages
    1 274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2017
    Messages : 1 274
    Par défaut
    Bonjour,

    ce qui conforte la conclusion à laquelle j'étais arrivé

    entre "générosité" et "avarice", je vais choisir "tranquillité"

    Je vais mettre systématiquement "long" et "double" d'autant qu'à coup de "replace all" c'est rapide et sans risque

    merci

  4. #4
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Sur les configurations les plus modestes de PC actuels (RAM 4Go, swap 4Go), pour que le passage Integer > Long représente 1% de la mémoire (je pense que pour une valeur inférieur, on peut considérer que l'impact est négligeable), il faudrait convertir plus de 4 milliards de variables.

    Donc, à moins d'avoir un tableau de variable de 1000 x 1000 x 1000 dans son code, on peut considérer que c'est une quantité de variables assez rare dans une application VBA.
    Pour une dizaine de variables, dire que le passage de Integer à Long aura un impact sur la mémoire, c'est comme dire que pisser dans la mer va faire monter le niveau des océans.

    CQFD

    Par contre, je ne conseille pas la transformation d'Integer en Double.
    J'ai déjà constaté des résultat entiers qui se transformaient en décimaux (,999999999 ou ,0000000001) sans raison logiques (les méandres des séries infinies).
    Donc passer d'un type entier (Integer ou autre) à un type décimal (Single, Double, etc.) peut présenter un risque, d'autant plus qu'il est souvent difficile à identifier.

  5. #5
    Membre éprouvé
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2017
    Messages
    1 274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2017
    Messages : 1 274
    Par défaut
    Merci oui j'avais déjà lu qu'il ne fallait pas passer d'entier à décimal

    J'ai vérifié les PC où tournent mon application ont 20 Go de RAM… Le niveau des océans ne montera pas même si tous les habitants de notre pauvre planète s'y mettent...

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

Discussions similaires

  1. Concaténation de champs de type string et integer ou long
    Par scrutin dans le forum Langage SQL
    Réponses: 15
    Dernier message: 15/11/2011, 09h40
  2. différence entre long et double
    Par bolltt dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 25/03/2008, 18h46
  3. Type de variable - Integer ou Long
    Par Domi2 dans le forum VBA Access
    Réponses: 2
    Dernier message: 06/02/2008, 08h59
  4. int, long et double
    Par cyrano_de_bergerac dans le forum Langage
    Réponses: 4
    Dernier message: 04/06/2007, 16h36
  5. Comment différencier un click court, long et double ?
    Par tipiweb dans le forum Composants VCL
    Réponses: 2
    Dernier message: 26/07/2005, 19h20

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