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 :

[VBA][Excel]Insertion de l'heure


Sujet :

Macros et VBA Excel

  1. #1
    Membre émérite Avatar de Pollux
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    706
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2005
    Messages : 706
    Par défaut [VBA][Excel]Insertion de l'heure
    Bonjour,

    Je voudrais que lorsque l'utilisateur entre une heure dans une certaine cellule, ma fonction ajoute automatique les ':' afin que l'heure soit correcte

    Exemple:
    l'utilisateur entre 12
    ma macro modifie 12 en 12: pour que l'affichage soit correcte

    Le code marche seulement si je clique à nouveau sur la cellule.. Un problème de rafraichissement...

    Quelqu'un a une idée pour que je n'aie pas besoin de recliquer?

  2. #2
    Membre émérite Avatar de avigeilpro
    Homme Profil pro
    Ambulancier
    Inscrit en
    Janvier 2004
    Messages
    880
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Creuse (Limousin)

    Informations professionnelles :
    Activité : Ambulancier
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2004
    Messages : 880
    Par défaut
    essaye peut-etre la fonction Format. ca devrait pouvoir fonctionner je pense
    La connaissance seule ne suffit pas. La vraie compréhension vient de la mise en expérience.
    Règles|FAQ|Tuto

  3. #3
    Membre émérite Avatar de Pollux
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    706
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2005
    Messages : 706
    Par défaut
    Merci mais non ca ne fonctionne pas

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Mets-nous ton code

    A+

  5. #5
    Membre émérite Avatar de Pollux
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    706
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2005
    Messages : 706
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        'pour l'insertion de l'heure il faut rajouter des : afin que l'entrée soit bonne
        If Target.Address(False, False) = "B13" Then
            On Error GoTo er
            If CInt(Target.Value) >= 1 Then
                Target.Value = Target.Value & ":"
            End If
        End If
     
    er:
    End Sub

  6. #6
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    Bon

    Je connais mal Excel mais déjà :

    Je remplacerais volontiers le Goto er par un Exit sub

    au lieu de dire >= 1 je dirais > 0

    je trouve curieux d'ajouter une chaine ":" à une valeur pure

    Celà ne résout pas ton problème, mais...

  7. #7
    Membre Expert Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Par défaut
    Salut!
    Déjà, on comprend pourquoi ça ne marche que si tu cliques sur la cellule: l'événement "SelectionChange" est appelé (comme son nom l'indique) à chaque fois que la cellule sélectionnée change. On a alors dans Target la nouvelle cellule sélectionnée, et tu vérifies que c'est B13, qui doit être la cellule contenant l'heure. Donc enlève ce test, et à chaque changement de cellule, la vérification se fera.
    Maintenant, pour ce qui est de l'ajout du ":" :
    à ta place, j'enlèverais le "on error". Commence par vérifier que le contenu de ta cellule est ce que tu veux: un entier. Par exemple, vérifie que c'est un nombre (fonction IsNumeric( ) ), puis que sa partie décimale est nulle). Ensuite, rajoute ton ":".

  8. #8
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Pour ton format, as-tu essayé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Target.Value = Format(Target.Value, "0:")
    Il faut que Target.Value soit effectivement une valeur

    A+

    Edit
    NB - Il faut que Target.Value soit effectivement une valeur mais en faisant ça, ça devient un string...

  9. #9
    Membre émérite Avatar de Pollux
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    706
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2005
    Messages : 706
    Par défaut
    Citation Envoyé par Megaxel
    à ta place, j'enlèverais le "on error". Commence par vérifier que le contenu de ta cellule est ce que tu veux: un entier. Par exemple, vérifie que c'est un nombre (fonction IsNumeric( ) ), puis que sa partie décimale est nulle). Ensuite, rajoute ton ":".
    Ce n'est pas forcément un nombre... En effet, l'utilisateur peut entrer 12:30

  10. #10
    Membre émérite Avatar de Pollux
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    706
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2005
    Messages : 706
    Par défaut
    Et pis j'aimerais que ce code se fasse seulement quand l'utilisateur entre une valeur dans la cellule B13

  11. #11
    Membre émérite Avatar de Pollux
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    706
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2005
    Messages : 706
    Par défaut
    Est-il possible de désactiver l'écoute d'un événement en vba?... Parce que j'ai un peu changer le fonctionnement ca devrait marcher mais il faudrait que je désactive l'écoute quand je veux insérer une valeur...

  12. #12
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Citation Envoyé par pollux007
    Et pis j'aimerais que ce code se fasse seulement quand l'utilisateur entre une valeur dans la cellule B13
    utilise workSheet_change...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Worksheet_Change(ByVal Target As Range)
     If Target.Address = "$B$13" Then
      'Rajoute ici ton code de mise en forme
      Debug.Print "Mise en forme : " & Target.Value
     End If
     
    End Sub

  13. #13
    Membre émérite Avatar de Pollux
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    706
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2005
    Messages : 706
    Par défaut
    Oui ca c'est bon j'ai déjà changé... Mais j'aimerais désactiver l'écoute parce que sinon ca tourne infiniment (logique) lorsque j'affecte la nouvelle valeur

  14. #14
    Expert confirmé
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Par défaut
    tu peux jouer sur EnableEvents de l'objet Application

  15. #15
    Membre émérite Avatar de Pollux
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    706
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2005
    Messages : 706
    Par défaut
    Merci!

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

Discussions similaires

  1. [VBA-Excel] insertion de frame dans une frame
    Par Wini29 dans le forum Excel
    Réponses: 0
    Dernier message: 24/01/2013, 13h43
  2. [XL-2007] Creation d'un PowerPoint via VBA Excel + insertion d'un template ".pot"
    Par Calbute dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 30/03/2012, 10h04
  3. Réponses: 2
    Dernier message: 06/02/2007, 15h05
  4. vba excel : insertion d image gif dans feuille excel
    Par chamus dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 03/01/2007, 13h16
  5. [VBA-E]Insertion graphique Excel dans Word
    Par sat478 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 19/04/2006, 14h26

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