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 :

Conversion de date dans macro VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Master Ingénieur Industriel
    Inscrit en
    Novembre 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Master Ingénieur Industriel
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2018
    Messages : 9
    Par défaut Conversion de date dans macro VBA
    Bonjour à tous,

    Je suis en train de développer un outil excel. Sur la première feuille, j'injecte mes données dont les différents titres de colonnes sont: N° de l'opération / Titre / Statut / Date de début : jj/mm/aaaa hh:mm:ss / Date de fin : jj/mm/aaaa hh:mm:ss / Machine/ Nature.


    Sur la deuxième feuille, je copie les données dont j'ai besoin et j'utilise un filtre avancé pour filtrer les opérations qui m'intéressent:

    Nom : Capture.PNG
Affichages : 338
Taille : 45,9 Ko


    Le problème est le suivant :

    Lorsque j'applique le filtre avancé manuellement, pas de problème.
    Lorsque je clique sur le bouton de la macro qui fait exactement la même chose que le FA (car je l'ai record), tout est filtré et je n'obtiens aucun résultat correspondant à mes critères de filtrage.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub Filter2()
    '
    ' Filter2 Macro
    ' filtre avancé
    '
     
    '
     
        Sheets("FMEA").Range("B17:X500").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _
            Sheets("FMEA").Range("B4:X5"), Unique:=False
    End Sub
    Par contre, si je change le format des dates en F5 et G5 en mm/dd/aaaa hh:mm:ss, pas de soucis. J'ai effectué des recherches (et ça me paraissait évident), ceci est du à un problème de format.


    Avez-vous des idées/solutions pour que je ne sois pas obligé de rentrer des dates en format mm/dd/aaaa hh:mm:ss (je veux uniquement du jj/mm/aaaa hh:mm:ss). Changer le format de la case ne suffit pas. Cela doit se faire dans mon code VBA mais je n'ai aucune idée de comment faire cela étant donné que devant ma date se trouve parfois des symboles <,>,<=, => (cela me permet de filtrer les dates avant/après)


    J'ai bien entendu effectué des recherches avant de poster mon problème. Et le filtre fonctionne parfaitement pour tout les autres critères


    Merci de votre aide. Je reste à votre disposition si cela n'est pas suffisamment clair.
    Images attachées Images attachées  

  2. #2
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    Bonsoir
    je sais pas si ça va aider ou non mais j'ai vu sur ce super site les amis (dont patrick toulon à qui je passe un bonjour) qui recommande ce qui suis pour eregistrer une date d'un USF à une feuille de travail pour éviter tout risque d'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("feuil1").Cells(1, 1) = DateSerial(Year(TextBox1.Value), Month(TextBox1.Value), Day(TextBox1.Value))
    si ma réponse est hors jeu je n'ai que te souhaiter la bonne continuation

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Par défaut
    Bonjour,

    tu peux tester en mettant tes critères de dates-heures en double ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
       dat1 = [F5].Value: dat2 = [G5].Value
        [F5].Value = Left(dat1, 1) & Round(CDbl(CDate(Mid(dat1, 2))), 6)
        [G5].Value = Left(dat2, 1) & Round(CDbl(CDate(Mid(dat2, 2))), 6)
        'filtre avancé
        '...
        'rétablir
        [F5].Value = dat1: [G5].Value = dat2
    Il faudra compléter si tu peux avoir <= ou >=
    Même principe si tu préfères passer par le format mm/dd
    eric

  4. #4
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Bonjour à vous,

    A priori, le problème est récurrent.

    Tu peux, je pense, te pencher sur la solution de Philippe dans cette discussion.

  5. #5
    Membre régulier
    Homme Profil pro
    Master Ingénieur Industriel
    Inscrit en
    Novembre 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Master Ingénieur Industriel
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2018
    Messages : 9
    Par défaut
    Merci Eric, ça a l'air de fonctionner. J'essayerai d'adapter ça pour les <=, >= dans la semaine.

    Merci aussi à toi Marcel, je m'intéresserai au problème et à la solution de Philippe demain dans la matinée.

  6. #6
    Membre régulier
    Homme Profil pro
    Master Ingénieur Industriel
    Inscrit en
    Novembre 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Master Ingénieur Industriel
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2018
    Messages : 9
    Par défaut
    Lorsque je ne rentre qu'un seul critère de date, une erreur se produit:

    Je rentre > 28/09/18 00:00 et j'obtiens :

    Nom : Capture2.PNG
Affichages : 271
Taille : 41,7 Ko

    et le format de la case change.

    Des pistes pour améliorer le code ?


    Si je rentre > date1 dans Start et <date2 dans fin => aucun soucis

  7. #7
    Membre Expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Par défaut
    Tu le laisses tel que, sans chercher à le convertir si c'est vide ?
    Mettre aussi la ligne en erreur si tu en as une...

Discussions similaires

  1. Probleme de conversion de date dans une requete
    Par samsso2006 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 12/10/2009, 22h45
  2. Réponses: 5
    Dernier message: 10/01/2008, 15h13
  3. Pb de conversion de date dans un Insert
    Par Oncle_Pete dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 08/03/2007, 14h07
  4. Conversion de date dans une requête
    Par snoopy69 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 11/08/2006, 08h28
  5. [VBA-E] Problème de tableau dans macro VBA
    Par Chouls dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 12/06/2006, 15h20

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