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 :

Macro Format date


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 110
    Par défaut Macro Format date
    Bonjour,

    Dans la macro contrôle Sub Test2() 'Contrôle Format Date et Client
    il y'a un script qui dit si :
    - Le format date "début et fin" de l'onglet "Feuil1" colonne BB et BC est jj/mm/aaaa alors OK => si Faux indiquer le "Numéro célulle" dans onglet feuil2 (Format date jj/mm/aaaa)

    Cela fonctionne, mais lorsque par exemple je fais un copier / coller de date d'un fichier vers celui-ci, malgré le bon format date jj/mm/aaaa biensur, en lancant la macro, il détecte comme incorrect.

    Pour que cela fonctionne, je dois valider chaque cellule par la touche "entrée", du coup la date s'alligne de la gauche vers droite de la celulle.
    Et en relancant la macro ca marche bien.

    Je vois pas comment corriger cela, dans le fichier que j'ai joins, j'ai fais le copier/coller, merci de votre aide

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub Test2() 'Contrôle Format Date et Client
    MonMax = Application.Max(Sheets(DATA).Range("BB65536").End( xlUp).Row, Sheets(DATA).Range("BC65536").End(xlUp).Row)
    For Each x In Sheets(DATA).Range("BB2:BC" & MonMax)
    If x = "" Or x = 0 Then Sheets(CONTROLE).Cells(10, 256).End(xlToLeft).Offset(0, 1) = x.Address(REF_ABS, REF_ABS) 'Date manquante
    If x.NumberFormat <> "m/d/yyyy" Then Sheets(CONTROLE).Cells(8, 256).End(xlToLeft).Offset(0, 1) = x.Address(REF_ABS, REF_ABS) 'Format date
    Fichiers attachés Fichiers attachés

  2. #2
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Bonjour

    Des erreurs sont détectées en ligne 11 (incohérence) et non en 8 ou 10. Tu constates autre chose?
    JE ne comprends pas ce contrôle de cohérence.

    Je ne comprends pas non plus trop ton idée de contrôler les format. Il me semble qu'il serait préférable de vérifier qu'il s'agit de dates (IsDate(...)) et de forcer le format.


    PGZ

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 110
    Par défaut Macro format date
    Bonjour

    Les erreurs sont détectées en BB4 à B19 et de BC4 à BC19 pour des "Dates Incohérentes" dans la feuil2 car il s agiet d un copier /coller.

    Tu verras que les date en BB2 BB3 et BC2 BC3 ont été validé en appuyant sur la touche entrée pour forcer la sate.

    Dit moi si tu as une solution a me proposer pour forcer le format ou si tu as autre chose a me proposer pour ameliorer cela.. je suis partent.

    Merci d avance

  4. #4
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Citation Envoyé par roidurif Voir le message
    Les erreurs sont détectées en BB4 à B19 et de BC4 à BC19 pour des "Dates Incohérentes" dans la feuil2 car il s agiet d un copier /coller.
    Donc nous sommes bien d'accord. La "fausse" détection d'erreur se produit sur la ligne "contrôle de cohérence" et non pas "date manquante" ou "format date".

    Et la ligne de code concernée n'est pas dans celle que tu as données. Ce serait plutôt celle-ci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        If x <> Sheets(DATA).Cells(2, x.Column) Then Sheets(CONTROLE).Cells(11, 256).End(xlToLeft).Offset(0, 1) = x.Address(REF_ABS, REF_ABS) 'Incoherence date
    Mais il est bizarre ce contrôle. Toutes les dates doivent être égales dans chaque colonne?
    Si en BB3 tu saisis "30/01/2009", tu peux faire 'entrer' autant de fois que tu veux mais BB3 sortira incohérent.

    Pour vérifier que c'est une date, tu pourrais faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Not IsDate(x.Value) Then ...
    Et si en BB et BC ce sont bien 2 dates, vérifier que cDate(BB)<=CDate(BC).

    Mais c'est juste un avis.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 110
    Par défaut
    Bjr,

    Excuse moi, La ligne de code concernée est bien dans celle ci.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If x <> Sheets(DATA).Cells(2, x.Column) Then Sheets(CONTROLE).Cells(11, 256).End(xlToLeft).Offset(0, 1) = x.Address(REF_ABS, REF_ABS) 'Incoherence date
    Le contrôle quelle doit faire c'est que les saisies de date début (BB) doit être la même dans cette colonne et ensuite pour la date de fin (BC) pareil

    Le fait de faire un copier / coller de date comme en BB4 à B19 et de BC4 à BC19, sont identifies comme une erreur d incohérence date, elle dit que ces date début sont différente de BB2 et la date de fin BC2 sont differentes.

    Merci de ton aide

  6. #6
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Bonjour.

    Je ne vois pas à quoi ça sert de faire un tableau avec des colonnes dates qui doivent avoir les mêmes valeurs sur toutes les lignes... Et pourquoi alors le contrôler et pas simplement copier les valeurs de la première ligne?

    C'est toujours embêtant de donner une réponse quand on a l'impression qu'il y a un pb de conception derrière.

    Mais bon pour répondre au pied de la lettre, veux-tu essayer ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        If CDate(x.Value) <> CDate(Sheets(DATA).Cells(2, x.Column).Value) Then Sheets(CONTROLE).Cells(11, 256).End(xlToLeft).Offset(0, 1) = x.Address(REF_ABS, REF_ABS) 'Incoherence date
    Cordialement,

    PGZ

Discussions similaires

  1. [XL-2003] Changement format date selon ouverture manuel ou macro
    Par jguenot dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 03/04/2017, 11h42
  2. [XL-2003] Probléme macro recup web-format date
    Par koni77 dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 22/08/2011, 17h38
  3. Comparaison macro-variable en format date
    Par jogin38 dans le forum Macro
    Réponses: 1
    Dernier message: 07/12/2010, 09h08
  4. Macro variable format date
    Par alejandro27 dans le forum Macro
    Réponses: 5
    Dernier message: 11/03/2010, 17h22
  5. Réponses: 5
    Dernier message: 10/01/2008, 15h13

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