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 :

Récupération & affectation de l'heure et la date système [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2012
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Récupération & affectation de l'heure et la date système
    Bonjour à tous,
    Je suis nouveau sur ce site ainsi que sur ce forum, sans oublier débutant sur excel. En effet j'aurais bien besoin de vos connaissances approfondies sur excel afin de résoudre mon problème sur ce dernier (Excel 2007) qui est le suivant:

    J'aimerais qu'à chaque saisie suivant la colonne F du N°OT,que j'ai l'affichage automatique et simultané de la date système suivant la colonne G, et enfin l'affichage automatique et simultané de l'heure système suivant la colonne H.

    Merci d'avance pour vos aides diverses.

    Vous trouverez ci-joint mon fichier excel 2007 (Ayant de même des commentaires pour mieux vous servir j'espère).

    NB: pour l'affichage automatique et simultané de la date système suivant la colonne G, j'ai utilisé la formule dans la cellule G11 comme suite:

    G11=SI(F11="";"";MAINTENANT())
    Fichiers attachés Fichiers attachés

  2. #2
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2009
    Messages
    1 794
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 85
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 1 794
    Points : 3 094
    Points
    3 094
    Par défaut
    Bonjour,
    Avec la fonction MAINTENANT() et la cellule qui la contient au format Date courte vous aurez 13/01/2013
    Avec la cellule au format Heure vous aurez 07:29


    Mais cette formule ne convient pas car le résultat va changer à chaque recalcul, j'avais oublié de le préciser. Seul VBA permet d'avoir le temps figé à l'instant de l'encodage.
    Comme montrer dans le post suivant

  3. #3
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Points : 3 974
    Points
    3 974
    Par défaut
    Bonjour,

    Pour obtenir le résultat attendu, tu peux utiliser l'évènement Change de la feuille. La date et l'heure système seront renseignées au moment de la validation de la saisie de l'OT.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Plage As Range
        Set Plage = Range(Range("A2"), Range("A" & Rows.Count).End(xlUp))
        If Target.Count = 1 And Not Application.Intersect(Target, Plage) Is Nothing Then
            Application.EnableEvents = False
            If Target = "" Then
                Target.Offset(0, 1).Resize(1, 2) = ""
            Else
                Target.Offset(0, 1).Resize(1, 2) = Now
            End If
            Application.EnableEvents = True
        End If
        Set Plage = Nothing
    End Sub
    Cordialement.
    Fichiers attachés Fichiers attachés

  4. #4
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2012
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Bonjour à tous,

    Je tiens à vous remercier pour cette superbe formule qui marche tant et que je cherchais.
    J'aurais encore une dernière chose à vous demander, particulièrement à gFZT82 qui a bien voulu taper ce code VBA pour moi, de m'expliquer chaque ligne du code afin que je comprenne mieux et le fasse mieux une fois moi-même de mon côté, et ce en cas de besoin.

    Cordialement.

  5. #5
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Points : 3 974
    Points
    3 974
    Par défaut
    Bonjour,

    Voilà; voilà ...
    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
    17
    18
    19
    20
    21
    22
    23
    24
    Option Explicit
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Plage As Range
        'On définit la plage concernée par le traitement (colonne des OT)
        Set Plage = Range("A1").CurrentRegion
        Set Plage = Plage.Offset(1, 0).Resize(Plage.Rows.Count - 1, 1)
        'Si une seule valeur a été modifiée et si cette valeur est incluse dans la plage
        If Target.Count = 1 And Not Application.Intersect(Target, Plage) Is Nothing Then
            'On désactive les évènements
            Application.EnableEvents = False
            'Si la cellule modifiée est vide
            If Target = "" Then
                'la date et l'heure sont effacées
                Target.Offset(0, 1).Resize(1, 2) = ""
            Else
                'sinon, on copie la date et l'heure système
                Target.Offset(0, 1).Resize(1, 2) = Now
            End If
            'On réactive les évènements
            Application.EnableEvents = True
        End If
        'On libère la mémoire
        Set Plage = Nothing
    End Sub
    Cordialement.

  6. #6
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2012
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Bonjour,

    Merci bien pour ces explications A très bientôt pour de nouvelles réponses aux questions.

    Cordiallement.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 28/11/2012, 19h20
  2. Durée en jour, minute et heure entre 2 dates
    Par nora_ora dans le forum Oracle
    Réponses: 7
    Dernier message: 10/08/2005, 22h47
  3. [MFC] Pb avec Heure et date système
    Par spirit_1999 dans le forum MFC
    Réponses: 5
    Dernier message: 07/06/2005, 16h31
  4. [Tomcat - Servlet] Récupérer l'heure et la date
    Par david71 dans le forum Tomcat et TomEE
    Réponses: 2
    Dernier message: 01/02/2005, 15h46
  5. [Sybase] Récupération de la date système
    Par atos dans le forum Sybase
    Réponses: 2
    Dernier message: 03/03/2004, 14h29

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