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éfinition de variable [XL-365]


Sujet :

Macros et VBA Excel

Vue hybride

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2017
    Messages : 1 288
    Par défaut Définition de variable
    Bonjour,

    j'ai des cellules Excel définies en personnalisées hh:mm

    Quand je rentre 08:30 la cellule contient bien 08:30

    Je veux récupérer cette valeur dans une variable d'une macro, le problème est que je récupère le résultat de division 8/3

    Le plus logique me semblait être de définir la variable en string, mais j'obtiens ce résultat, idem en Variant

    J'ai essayé maintes possibilités sans trouver comment récupérer le string 08:00 dans la variable

    J'ai réfléchi à une solution de repli qui consiste à transformer 08:00 en 0800 dans une autre cellule et de reconstituer à la fin 0800 en 08:00, mais je préférerai ne pas en arriver là.

    Il doit bien y avoir une solution plus propre

  2. #2
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 415
    Par défaut
    Bonsoir,
    Bizarre, je ne rencontre pas ce problème.
    Cordialement.
    Fichiers attachés Fichiers attachés

  3. #3
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 170
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Ce que vous décrivez là est curieux mais comme vous ne publiez pas votre code, il est difficile de vous aider

    Petit exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub T()
      Dim T As String
      Dim H As Double
      T = Range("B2").Text
      H = Range("B2").Value
      Debug.Print "T = " & T
      Debug.Print "H = " & H
    End Sub
    Affichera dans la fenêtre d'exécution avec comme donnée en cellule B2 de la feuille active 08:30
    T = 08:30
    H = 0,354166666666667
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2017
    Messages : 1 288
    Par défaut
    Bonjour et merci,
    j'ai compris mon erreur grâce au post #3

    j'ai défini initialisé ma variable par :
    au lieu de
    Une mauvaise habitude de ne pas qualifier mes variables

  5. #5
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 170
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Les étapes sont les suivantes
    1. Déclarer et typer la ou les variables
    2. Attribuer une valeur à la variable
    3. Utiliser cette variable

    Une heure étant une valeur numérique comprise entre 0 et 1, normalement on utilise une variable de type Double
    Au lieu de choisir d'assigner la valeur de la propriété Text à une variable de type String, On aurait put utiliser une variable type Double en la transformant en chaîne de caractères à l'aide de la fonction Format

    Exemple avec la même valeur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub t()
      Dim H As Double
      H = Range("B2").Value
      Debug.Print Format(H, "hh:mm")
    End Sub
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut.

    Je complète en disant que si tu déclares ta variable en Date, alors, Debug.print affichera la valeur horaire. Avec 8:30 en A1 et le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub test1()
      Dim h As Date
     
      h = Range("a1").Value
      Debug.Print h
    End Sub
    Tu obtiendras 08:30:00 dans la fenêtre d'exécution.


    Bien faire la différence également entre Range("a1").Text, Range("a1").Value et Range("a1").Value2. Par exemple, avec une date en a1 formatée en jjjj jj mmmm aaaa, tu peux voir les différences entre les trois propriétés:
    • range("a1").Text => mardi 31 août 2021 (Valeur affichée)
    • range("a1").Value => 31/08/2021 (Valeur selon le type déduit par Excel)
    • range("a1").Value2 => 44439 (Valeur réellement utilisée par Excel et VBA)
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  7. #7
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 170
    Billets dans le blog
    53
    Par défaut
    Bonjour Pierre,
    Je complète en disant que si tu déclares ta variable en Date
    C'est juste, j'ai omis d'en parler.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2017
    Messages : 1 288
    Par défaut
    Merci à tous

    Très riche et très intéressant mais pas évident pour un "amateur"

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

Discussions similaires

  1. définition des variables
    Par ValWatt dans le forum C#
    Réponses: 7
    Dernier message: 20/07/2007, 09h21
  2. Définition des variable dans un fichier.m d'une interface graphique
    Par developpeur82 dans le forum Interfaces Graphiques
    Réponses: 1
    Dernier message: 10/05/2007, 14h53
  3. définition de variables statiques
    Par kenny49 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 12/04/2007, 17h43
  4. [Tableaux] Erreur de définition de variable
    Par lifeisgood dans le forum Langage
    Réponses: 1
    Dernier message: 26/10/2006, 19h59
  5. [Système] Problème de définition des variables
    Par SLAM JACK dans le forum Langage
    Réponses: 6
    Dernier message: 29/03/2006, 19h53

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