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 :

Code VBA pour saisie heure [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur
    Inscrit en
    Décembre 2014
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Décembre 2014
    Messages : 46
    Points : 30
    Points
    30
    Par défaut Code VBA pour saisie heure
    Bonsoir le forum,

    J'ai cherché dans les sujets déjà traités mais je n'ai pas trouvé de solution à mon problème.
    Je cherche un code VBA qui me permettrait de transformer une saisie de l'heure sous forme décimale, sous la forme hh "h" mm.
    Par exemple, si je tape dans la cellule (B20) 9.15 cela se transforme en 9 h 15 ou si je tape 9.25 cela se transforme en 9 h 25.
    Dans ma feuille Excel cela s'appliquerait aux cellules ("B18:B68").
    Si quelqu'un a la solution ...
    Merci.

  2. #2
    Membre chevronné
    Inscrit en
    Septembre 2007
    Messages
    1 132
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 132
    Points : 1 803
    Points
    1 803
    Par défaut
    Bonsoir,

    Pour saisir l'heure sur excel le séparateur implicite est ':'.
    Si tu veux utiliser un autre séparateur comme le '.' dans ton cas il faut coder cette variation en VBA.
    Si tu cherches un tant soit peu, tu vas trouver de multiples variantes
    mais les soucis que cela va te procurer nécessite-t-il cet investissement ?

    Si tu veux, tu peux aussi faire en sorte que ta saisie de '.' se transforme en ':' par correction automatique.
    Personnellement lorsque je saisis '..' j'obtiens ':' : ce n'est pas illogique ?

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Dans ce genre de question, ce qui m'interpelle, c'est la finalité!

    Mettre en place un usine a gaze pour faciliter la saisie aux utilisateurs et demain poser la question pourquoi je ne peux pas faire de somme avec mes valeurs!

    As tu vraiment besoin de cela?

  4. #4
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour Robert
    Il est toujours possible de mettre en place un tel mécanisme qui préserverait la "chèvre" (la saisie) et le "chou" (la valeur réelle de la saisie). Cela nécessiterait l'utilisation d'un tremplin, sous telle ou telle autre forme au selection_change :
    - soit par saisie faite sur une textbox "flottante" se superposant à la cellule à saisir
    - soit par modification temporaire du format de la cellule
    Puis transposition de la saisie faite et au besoin (cas de la modification du format) rétablissement du format.
    Mais ce serait (comme tu le dis clairement) une usine à gaz source de lourdeur et ni justifiée, ni raisonnable.
    Amitiés
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur
    Inscrit en
    Décembre 2014
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Décembre 2014
    Messages : 46
    Points : 30
    Points
    30
    Par défaut
    Bonjour à tous,

    Merci pour vos réponses, qui ne m'aident pas vraiment, mais je ne pensais pas que ma demande serait la mise en place d'une usine à gaz.

    J'ai un classeur Excel, avec une quinzaine d'onglets et dans chacun de ces onglets je dois rentrer l'heure de départ pour tous les participants à une compétition.
    Pour éviter de taper cette heure sous la forme 9 h 28, par exemple, il me semblait plus simple et plus rapide de taper 9.28 et que cela se transforme en 9 h 28.
    Je n'ai absolument pas besoin de faire la somme des heures, c'est juste pour simplifier la saisie.

    J'ai bien cherché dans format cellule, mais je n'ais pas trouvé.

  6. #6
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Citation Envoyé par Sergio33600 Voir le message
    Merci pour vos réponses, qui ne m'aident pas vraiment, mais je ne pensais pas que ma demande serait la mise en place d'une usine à gaz.
    .....
    J'ai bien cherché dans format cellule, mais je n'ais pas trouvé.
    je t'ai alors répondu.
    Je ne connais pas d'autres solutions que celle de l'utilisation d'un tremplin et cette utilisation est à elle seule une petite usine à gaz.
    on en voit mal une justification.
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  7. #7
    Membre émérite
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Points : 2 684
    Points
    2 684
    Par défaut
    Bonjour

    Si les cellules sont au format Texte, ca peut aller.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Private Sub Worksheet_Change(ByVal Target As Range)
     
    If Intersect(Target, Range("B18:B68")) Is Nothing Then
    ElseIf Target.Count = 1 Then
     
     ar = Target.Value
     ar = Replace(ar, ",", ":")
     If IsDate(ar) Then
      heure = Replace(ar, ":", " h ")
      Application.EnableEvents = False
      Target.Value = heure
      Application.EnableEvents = True
     End If
    End If
     
    End Sub
    Cordialement

    Docmarti.

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur
    Inscrit en
    Décembre 2014
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Décembre 2014
    Messages : 46
    Points : 30
    Points
    30
    Par défaut
    Bonjour Docmarti,

    Merci beaucoup pour ta réponse. La solution proposée qui fonctionne parfaitement.
    J'ai légèrement modifié ton code pour pouvoir utiliser soit la virgule, soit le point comme séparateur de décimales.
    Très bonne soirée.

  9. #9
    Membre émérite
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Points : 2 684
    Points
    2 684
    Par défaut
    Excellent.

    Et si tu ne veux pas avoir a te preoccuper de t'assurer que le format de cellule est Texte, ajoute ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Intersect(Target, Range("B18:B68")) Is Nothing Then
    ElseIf Target.Count = 1 Then
     'Format Texte
     Target.NumberFormat = "@"
    End If
    End Sub
    Cordialement

    Docmarti.

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur
    Inscrit en
    Décembre 2014
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Décembre 2014
    Messages : 46
    Points : 30
    Points
    30
    Par défaut
    Bonjour Docmarti,

    Merci beaucoup pour ce code.

    Très bonne journée.

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

Discussions similaires

  1. Un code VBA pour récupérer un type de donnée ?
    Par KEROZEN dans le forum VBA Access
    Réponses: 22
    Dernier message: 26/09/2019, 11h12
  2. Code VBA pour la saisie d'un mot de passe
    Par narr255 dans le forum VBA Access
    Réponses: 2
    Dernier message: 24/10/2010, 12h17
  3. [VBA-A] Code vba pour inclure un formulaire Acces
    Par MadSquirrel dans le forum VBA Access
    Réponses: 2
    Dernier message: 12/04/2006, 18h19
  4. Réponses: 3
    Dernier message: 06/09/2005, 10h27

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