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 :

scinder en vba la date et l heure dans deux cellules juxtaposees [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Inscrit en
    Avril 2007
    Messages
    1 247
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 247
    Par défaut scinder en vba la date et l heure dans deux cellules juxtaposees
    Bonjour
    J'ai un code vba excel qui me permet d'exécuter une requête SQL à partir d'une feuille Excel.
    J'essaie mais en vain d' apporter une petite modification sur deux lignes de code qui récupèrent dans une cellule une date en format jj/mm/aaa hh:mm.
    Ce que je souhaite faire c'est scinder la date et l heure dans deux cellules différentes.

    Je m'explique:
    voici un morceau de mon code vba pour une meilleur compréhension.
    Les deux lignes que je souhaite modifier sont celles en bleues.
    Actuellement la date de debut (en format JJ/MM/AAAA HH:MM) se trouve dans la cellule B1 de ma feuille Excel.
    Pour une meilleure ergonomie du fichier:
    pour la date de debut :j'ai mis la date en B1 (en format JJ/MM/AAA) et l'heure dans la cellule C1 ( format HH:MM).
    Même chose pour date de fin: En B2 : date en format JJ/MM/AAA et en C2 l'heure en format hh:mm

    Or je ne sais pas comment transformer les lignes de code en bleues pour que le vba puisse recuperer d'une part la date dans la cellule B1 et d'autre part l'heure dans la cellule C1.
    Les futures lignse de code ressembleraient à ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    .Parameters.Append .CreateParameter("P2", adDate, adParamInput, 7, Sheets("Feuil1").Range("B1")+ range("C1")) 'date debut
    
    .Parameters.Append .CreateParameter("P2", adDate, adParamInput, 7, Sheets("Feuil1").Range("B2")+ range("C2")) 'date fin
    
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     Set cm = New ADODB.Command
      With cm
        .ActiveConnection = cn
        .CommandText = sql
        .CommandTimeout = 0 'evite que le delai d'attente de requete expire (que la requte bugue)
        .CommandType = adCmdStoredProc 
        .Parameters.Append .CreateParameter("P2", adDate, adParamInput, 7, Sheets("Feuil1").Range("B1")) 'date debut 
        .Parameters.Append .CreateParameter("P2", adDate, adParamInput, 7, Sheets("Feuil1).Range("B2")) 'date fin
    Merci d'avance de votre aide

  2. #2
    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 173
    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 173
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Or je ne sais pas comment transformer les lignes de code en bleues pour que le vba puisse recuperer d'une part la date dans la cellule B1 et d'autre part l'heure dans la cellule C1.
    Les dates et les heures dans Excel sont des nombres qui sont formatés dont la partie entière est la date et la décimale l'heure et il existe en Excel et en VBA des fonctions qui permettent l'extraction de ceux-ci
    Le simple fait d'utiliser l'entier du nombre renvoie déjà la date
    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

  3. #3
    Membre éprouvé
    Inscrit en
    Avril 2007
    Messages
    1 247
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 247
    Par défaut
    Bonsoir Philippe,
    il faut se mettre du cote de la personne qui va référencer les deux cellules date et heure.
    Ce que j'essaie de faire c'est que le collaborateur référence la cellule B1 avec un date jj/mm/aaa et ensuite il référence la cellule C1 avec une heure en format hh:mm.
    et enfin mon code vba recuperer les valeurs date et heure de ces deux cellules dans mon code vba

  4. #4
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 575
    Par défaut
    Bonsoir,
    Or je ne sais pas comment transformer les lignes de code en bleues pour que le vba puisse recuperer d'une part la date dans la cellule B1 et d'autre part l'heure dans la cellule C1.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    DateDeb = Format(Sheets("Feuil1").Range("B1").Value2 + Sheets("Feuil1").Range("C1").Value2, "yyyy-mm-dd hh:mm:ss")
    DateFin = Format(Sheets("Feuil1").Range("B2").Value2 + Sheets("Feuil1").Range("C2").Value2, "yyyy-mm-dd hh:mm:ss")
     
     
     .Parameters.Append .CreateParameter("DateDeb", adDate, adParamInput, 7, DateDeb) 'date debut
    .Parameters.Append .CreateParameter("DateFin", adDate, adParamInput, 7, DateFin) 'date fin

  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 173
    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 173
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Ce que j'essaie de faire c'est que le collaborateur référence la cellule B1 avec un date jj/mm/aaa et ensuite il référence la cellule C1 avec une heure en format hh:mm.
    Sauf une mauvaise compréhension de la langue française de ma part, il me semble que vous dites tout le contraire ici
    J'essaie mais en vain d' apporter une petite modification sur deux lignes de code qui récupèrent dans une cellule une date en format jj/mm/aaa hh:mm.
    Ce que je souhaite faire c'est scinder la date et l heure dans deux cellules différentes.
    d'où ma réponse
    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
    Membre éprouvé
    Inscrit en
    Avril 2007
    Messages
    1 247
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 247
    Par défaut
    Bonjour
    @Thumb down : c'est exactement ce que je recherchais. Merci énormément.
    Une petite question. Y a t il une différence entre value2 et value dans le code : Si dans le code Range("C1").Value2 , je mets Range("C1").Value, quelle sera l'impact ?

    @Philippe Tulliez: il est vrai qu'il est parfois difficile d'expliquer avec des mots nos attentes. L'essentiel de se faire comprendre au fil des discussions. Et merci encore 'avoir pris le temps de me répondre.
    Je clos la discussion.

  7. #7
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 575
    Par défaut
    Bonjour,
    Comme le disait Philippe les dates sont des nombres avec jour, moi, année pour la partie entière et heures, minutes, seconde pour la partie décimales.

    Value devrait donner des dates et value2 la veleur numérique de la date ! Dans notre cas la partie entière en B1 additionner à la partie décimales en C1.

    5 + 0.5 = 5.5

  8. #8
    Membre éprouvé
    Inscrit en
    Avril 2007
    Messages
    1 247
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 247
    Par défaut
    Merci Thumb down pour cette réponse claire et precises.
    je ferme cette discussion.

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

Discussions similaires

  1. Recuperer la date sans l'heur dans un champ datetime
    Par bob33 dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 22/06/2010, 12h59
  2. Réponses: 3
    Dernier message: 12/02/2008, 09h20
  3. La date est l'heure dans un label ?
    Par gastoncs dans le forum VB.NET
    Réponses: 11
    Dernier message: 10/02/2007, 23h56
  4. [VBA-EXCEL] format de date lors d'écriture dans une cellule
    Par ustilago dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 06/02/2007, 17h44
  5. concatener la date et l'heure dans la meme valeur
    Par abdou.sahraoui dans le forum Oracle
    Réponses: 12
    Dernier message: 23/03/2006, 15h35

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