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 :

Inversion mois et date ?


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Ingénieur aéronautique
    Inscrit en
    Août 2017
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur aéronautique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2017
    Messages : 363
    Par défaut Inversion mois et date ?
    Bonjour,

    Dans le fichier "donnees.xlsm" j'ai mis en cellule H8 la date suivante : 12/10/2018 (12 octobre 2018). J'ai appliqué pour cette cellule le format date (Format / Format de cellule / Date).

    Ensuite à l'aide d'une macro, je récupère la valeur de cette cellule et je la colle dans le fichier "sortie.xlsm" en cellule B6. Il apparait alors dans cette cellule : 10/12/2018.

    Le jour et le mois sont inversés et cela fausse bien sûr ensuite toute l'analyse qui est faite à partir de la date. Que dois-je faire pour avoir en sortie la bonne date ? Merci par avance.

    Cdlt.
    Jérôme.

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par licpegpon Voir le message
    Ensuite à l'aide d'une macro, je récupère la valeur de cette cellule et je la colle dans le fichier "sortie.xlsm" en cellule B6.
    Pourrais-tu montrer la portion de code qui fais ça ?

  3. #3
    Membre éclairé
    Homme Profil pro
    Ingénieur aéronautique
    Inscrit en
    Août 2017
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur aéronautique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2017
    Messages : 363
    Par défaut
    Bonjour,

    La macro étant (assez) courte la voici dans sa totalité. La récupération des données s'effectue à partir de la ligne 74. Le collage est effectué à partir de la ligne 136. Merci encore.

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    Sub Recup_donnees_pour_TDB()
     
    'Déclaration des variables
    Dim nbr As Integer
    Dim Derlig As Integer
    Dim x As String
    Dim y As Integer
    Dim I As Integer
    Dim Program As String
    Dim PO As String
    Dim PO_Date As String
    Dim Content As String
    Dim Deliv_Target_Date As String
    Dim Deliv_Date_OTD1 As String
    Dim Deliv_Time_OTD1 As String
    Dim Last_Reject_Date As String
    Dim Deliv_Date_OTD2 As String
    Dim Deliv_Time_OTD2 As String
    Dim Quality_OQD As String
    Dim Quality_NC_Iteration As String
    Dim Global_note As String
    Dim Deliv_Note_Testia As String
    Dim Deliv_Note_AIRBUS As String
    Dim Good_Receipt As String
    Dim Status As String
    Dim Comments As String
    Dim Chemin As String
    Dim Fichier As String
    Dim Method As String
    Dim statusBarInitial As Long
     
    Application.Cursor = xlWait ' sablier
     
    'Exécution de la macro "Recuperation_Noms_sous_dossiers"
    Call Recuperation_Noms_sous_dossiers
     
    'Permet de ne pas avoir à cliquer sur OK à chaque fois que c'est demandé (msgbox). Ainsi la validation est automatique
    Application.EnableEvents = False
     
    nbr = 0
     
    'Recherche du numéro de la dernière ligne non vide en partant de B6 (dernier ID) --> derlig
    'Recherche du nombre de références ID en colonne B --> nbr
    Derlig = Application.WorksheetFunction.CountA(Range("B:B")) + 3
    nbr = Range("B6:B" & Derlig).SpecialCells(xlCellTypeVisible).Count
     
    'Affichage dans une boite de dialogue du nombre de références ID
    MsgBox ("You have " & nbr & " ID's references")
     
    'Initialisation des compteurs (on part de la ligne 6)
    I = 1
    y = 6
     
    'Boucle sur le nombre de références ID, nbr (remplissage du tableau)
    statusBarInitial = Application.DisplayStatusBar
    Application.DisplayStatusBar = True
     
    While I <= nbr
    Application.StatusBar = "Calcul en cours... " & I & " / " & nbr
        DoEvents
     
    'Activation du fichier "FOLLOW_UP_TESTIA.xlsm", on active l'onglet "Feuil1"
    Windows("FOLLOW_UP_TESTIA.xlsm").Activate
    Sheets("Feuil1").Activate
     
    'x correspond à la valeur de la cellule B6 (première valeur de la liste)
    x = Range("B" & y).Value
     
    'Ouverture du fichier "Entry_Form_ID.....xlsm" situé dans le dossier racine auquel on rajoute le sous-dossier ID....
    'Activation de l'onglet "ADD_INFOS"
    Workbooks.Open Filename:=Dossier_racine & "\" & x & "\" & "Entry_Form_" & x & ".xlsm"
    Sheets("ADD_INFOS").Activate
     
    'Mise en mémoire des données du fichier "Entry_Form_ID.....xlsm". Celles-ci sont à rapatrier dans le fichier "FOLLOW_UP_TESTIA.xlsm"
    Program = Range("C7").Value
    'MsgBox ("Program = ") & Program
     
    PO = Range("C8").Value
    'MsgBox ("PO = ") & PO
     
    PO_Date = Range("C9").Value
    'MsgBox ("P0_Date = ") & PO_Date
     
    Content = Range("C10").Value
    'MsgBox ("Content = ") & Content
     
    Deliv_Target_Date = Range("H6").Value
    'MsgBox ("Deliv_Target_Date = ") & Deliv_Target_Date
     
    Deliv_Date_OTD1 = Range("H8").Value
    'MsgBox ("Deliv_Date_OTD1 = ") & Deliv_Date_OTD1
     
    Deliv_Time_OTD1 = Range("H9").Value
    'MsgBox ("Deliv_Time_OTD1 = ") & Deliv_Time_OTD1
     
    Last_Reject_Date = Range("H11").Value
    'MsgBox ("Last_Reject_Date = ") & Last_Reject_Date
     
    Deliv_Date_OTD2 = Range("H13").Value
    'MsgBox ("Deliv_Date_OTD2 = ") & Deliv_Date_OTD2
     
    Deliv_Time_OTD2 = Range("H14").Value
    'MsgBox ("Deliv_Time_OTD2 = ") & Deliv_Time_OTD2
     
    Quality_OQD = Range("N8").Value
    'MsgBox ("Quality_OQD = ") & Quality_OQD
     
    Quality_NC_Iteration = Range("M10").Value
    'MsgBox ("Quality_NC_Iteration = ") & Quality_NC_Iteration
     
    Global_note = Range("M12").Value
    'MsgBox ("Global_note = ") & Global_note
     
    Deliv_Note_Testia = Range("F21").Value
    'MsgBox ("Deliv_Note_Testia = ") & Deliv_Note_Testia
     
    Deliv_Note_AIRBUS = Range("F22").Value
    'MsgBox ("Deliv_Note_AIRBUS = ") & Deliv_Note_AIRBUS
     
    Good_Receipt = Range("E30").Value
    'MsgBox ("Good_Receipt = ") & Good_Receipt
     
    Status = Range("E31").Value
    'MsgBox ("Status = ") & Status
     
    Comments = Range("E32").Value
    'MsgBox ("Comments = ") & Comments
     
    Method = Range("C11").Value
    'MsgBox ("Method = ") & Method
     
    'On active le fichier "FOLLOW_UP_TESTIA.xlsm" et on se mets dans l'onglet "Feuil1"
    Windows("FOLLOW_UP_TESTIA.xlsm").Activate
    Sheets("Feuil1").Activate
     
    'On colle les valeurs précédemment mises en mémoire dans le fichier "FOLLOW_UP_TESTIA.xlsm" (onglet "Feuil1")
    Range("C" & y).Value = Program
    Range("D" & y).Value = PO
    Range("E" & y).Value = PO_Date
    Range("F" & y).Value = Content
    Range("G" & y).Value = Deliv_Target_Date
    Range("I" & y).Value = Deliv_Date_OTD1
    Range("J" & y).Value = Deliv_Time_OTD1
    Range("L" & y).Value = Quality_OQD
    Range("M" & y).Value = Last_Reject_Date
    Range("N" & y).Value = Deliv_Date_OTD2
    Range("P" & y).Value = Deliv_Time_OTD2
    Range("Q" & y).Value = Quality_NC_Iteration
    Range("R" & y).Value = Deliv_Note_Testia
    Range("S" & y).Value = Deliv_Note_AIRBUS
    Range("T" & y).Value = Good_Receipt
    Range("U" & y).Value = Status
    Range("V" & y).Value = Comments
    Range("W" & y).Value = Global_note
    Range("X" & y).Value = Method
     
    y = y + 1
    I = I + 1
     
    'Fermer le fichier "Entry_Form_ID....xlsm" sans l'enregistrer (false)
    Workbooks("Entry_Form_" & x & ".xlsm").Close False
     
    Wend
    Application.StatusBar = ""
    Application.DisplayStatusBar = statusBarInitial
     
    'On active le fichier "FOLLOW_UP_TESTIA.xlsm" et on se mets dans l'onglet "Feuil1"
    Windows("FOLLOW_UP_TESTIA.xlsm").Activate
    Sheets("Feuil1").Activate
     
    Range("A1").Select
     
    MsgBox ("Update finished")
     
    Application.EnableEvents = True
     
    'Exécution de la macro "SaveFile"
    Call SaveFile
     
    Application.Cursor = xlDefault
     
    End Sub
    Cdlt.
    Jérôme

  4. #4
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Voici 3 facons correctes d'ecrire une date dans une cellule afin d'eviter l'inversion jour/mois:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Range("G" & y).Numberformat= ""
    Range("G" & y).Value = CDate(Deliv_Target_Date)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Range("G" & y).Numberformat= "m/d/yyyy"
    Range("G" & y).Value = CDate(Deliv_Target_Date)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Range("G" & y).Numberformat= ""
    Range("G" & y).FormulaLocal= CDate(Deliv_Target_Date)

  5. #5
    Membre éclairé
    Homme Profil pro
    Ingénieur aéronautique
    Inscrit en
    Août 2017
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur aéronautique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2017
    Messages : 363
    Par défaut
    Bonjour,
    Je teste cela et vous fais un retour. Merci beaucoup !!
    Cdlt.
    Jérôme

  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    et une 4 eme encore plus sur a condition que ce soit bien une date dans Deliv_Target_Date
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    'Range("G" & y).Numberformat= "m/d/yyyy"
    Range("G" & y).Value = DateSerial(Right(Deliv_Target_Date, 4), Mid(Deliv_Target_Date, 4, 2), Left(Deliv_Target_Date, 2))
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

Discussions similaires

  1. Inversion (mois et jour) dans les dates
    Par hortencia dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 08/02/2012, 19h03
  2. DATES : Inversions mois et jours
    Par hortencia dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 24/06/2011, 14h51
  3. [A-03] inversions entre jour et mois sur dates
    Par thiefer dans le forum IHM
    Réponses: 4
    Dernier message: 31/10/2008, 14h52
  4. Problème format date - SimpleDateFormat inversion mois/jour
    Par juanqui dans le forum Servlets/JSP
    Réponses: 8
    Dernier message: 07/02/2007, 14h37
  5. ajouter 1 mois à une date dans une requete
    Par alain.lc dans le forum PostgreSQL
    Réponses: 6
    Dernier message: 04/04/2005, 12h05

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