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 Jour VBA excel macro


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club Avatar de kader15
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2016
    Messages : 65
    Points : 43
    Points
    43
    Par défaut Inversion Mois Jour VBA excel macro
    Bonjour à tous,

    Voilà j'ai besoin de saisir une date dans mon inputbox, jusque la tout va bien le souci c'est que lorsque je colle la date saisie dans mon fichier excel, le mois est le jour sont inversés aléatoirement.

    Exemple: Dans mon inputbox je saisie 08/09/2016 et sur ma feuille je retrouve noté 09/08/2016

    J'ai vu que c'était un problème courant, mais je n'arrive pas à trouver une solution concrète c'est pour cela que j'en appelle à votre aide, please Help me.

    Cordialement

  2. #2
    Expert confirmé Avatar de jerome.vaussenat
    Homme Profil pro
    Formateur Bureautique
    Inscrit en
    Janvier 2011
    Messages
    1 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Formateur Bureautique
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 629
    Points : 4 299
    Points
    4 299
    Par défaut
    Salut,

    Ton input box, tu stockes le résultat dans une variable déclarée ?
    Si ce n'est pas le cas déclare la variable de type date et dis nous ce que cela donne.

  3. #3
    Membre du Club Avatar de kader15
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2016
    Messages : 65
    Points : 43
    Points
    43
    Par défaut
    Oui je stocke ma variable mais meme résultat :/

  4. #4
    Expert confirmé Avatar de jerome.vaussenat
    Homme Profil pro
    Formateur Bureautique
    Inscrit en
    Janvier 2011
    Messages
    1 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Formateur Bureautique
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 629
    Points : 4 299
    Points
    4 299
    Par défaut
    Re,

    La question n'est pas de savoir si tu stockes ta vairable.
    As tu au début de ta macro une instruction du style ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim mavariable as date
    
    mavariable = inputbox ...

  5. #5
    Expert éminent sénior 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
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par kader15 Voir le message
    lorsque je colle la date saisie dans mon fichier excel, le mois est le jour sont inversés aléatoirement.
    Il est peu probable que ce soit "aléatoire".
    Corrige-moi si je me trompe mais je pense que cette inversion ne se produit que lorsque le jour est inférieur ou égale à 12, non ?

    Pour ce qui est de ton problème, je viens de tester et la méthode décrite par jerome marche dans tous les cas que j'ai expérimenté.
    A condition bien sûr que la cellule dans laquelle tu vas placer cette valeur soit elle-même au format date ou au format Standard (pas au format Texte).

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    mavariable = inputbox
    If mavariable<>"" then 
      if isdate(mavariable) then mavariable=format(mavariable,"yyyy-mm-dd")
       range("A1")=mavariable
    End if

  7. #7
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Bonjour à tous,

    rdurupt, je vois que tu passes régulièrement par Format alors que CDate utilise les paramètres régionaux.

    Je ferais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim mavariable as Date
     
    mavariable = CDate((InputBox ...)

  8. #8
    Invité
    Invité(e)
    Par défaut
    Bonjour Alain,
    Je me suis redu compte que dans nombre de cas Cdate inversait également le jour et le mois!

    De plus cette écriture fonctionne dans différentes langage ce qui me permet de garder la même syntaxe!

  9. #9
    Membre du Club Avatar de kader15
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2016
    Messages : 65
    Points : 43
    Points
    43
    Par défaut
    Tout d'abord merci de votre aide,

    J'ai essayé la solution de rdurupt qui a l'air de fonctionner, cependant lorsque je saisie ma date j'aimerai pouvoir la rechercher dans ma feuille excel mais sans succès, la plage sélectionnée se retrouve à la fin de mon tableau, voici mon code :

    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
    Sub rechercheHorizon()
     
        Application.ScreenUpdating = False                                          'Animation de macro = désactiv
        Application.DisplayAlerts = False                                           'Désactive le message d'alerte
     
         Dim MaVariable As String, CelluleDate As Range, Horizon As Range                 'Déclarations
     
    MaVariable = InputBox("Renseigner la date yyyy-mm-dd", "Jour du début de l'horizon PHP")
     
        If MaVariable <> "" Then
            If IsDate(MaVariable) Then
            MaVariable = Format(MaVariable, "yyyy-mm-dd")
            End If
        End If
     
        Sheets("Planning").Activate                                                 'Active la feuille "Planning"
        Range("C3") = MaVariable
        Set CelluleDate = Sheets("Planning").Rows(6).Find(what:=C3, LookAt:=xlWhole)  'La variable "cellulemois" est égale à la cellule dont la valeur est égale à la variable Mois que l'on a saisie plus tôt
        If Not CelluleDate Is Nothing Then                                          'Si pas de résultat trouvé, la variable cellulemois est nulle
        Cells(CelluleDate.Row, CelluleDate.Column).Offset(1, 0).Select              'Selection la cellule qui se trouve 4 cases en dessous de la cellule trouvée avec la fonction ".find"
        Set Horizon = Range(ActiveCell, ActiveCell.Offset(19, 8))                   'Définir "Horizion" comme tableau. Il part de la cellule selectionnée et fait 19 lignes + 8 colonnes
        Horizon.Select
        End If                                                                      'Fin de condition
     
    End Sub

  10. #10
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 652
    Points : 34 356
    Points
    34 356
    Par défaut
    SAlut,

    pour connaitre l'ordre d'apparition des jour, mois et annee dans les dates, tu peux recuperer l'info via Application.International()

    http://jpcheck.developpez.com/tutori...international/

    Ton cas de fugure peut eter pris directement avec http://jpcheck.developpez.com/tutori...ional/#LIV-5-i

  11. #11
    Membre émérite
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Points : 2 684
    Points
    2 684
    Par défaut
    Bonjour.

    Voici qui devrait fonctionner avec FIND:

    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
    Sub rechercheHorizon()
     
    Dim MaVariable As String, CelluleDate As Range, Horizon As Range                 'Déclarations
     
    Sheets("Planning").Activate
     
    MaVariable = InputBox("Renseigner la date ", "Jour du début de l'horizon PHP", Date)
     
    Cells(1, 1).Select
     
     ok = False
        If MaVariable <> "" Then
            If IsDate(MaVariable) Then
             ok = True
             MaVariable = Format(MaVariable, "yyyy-mm-dd")
            End If
        End If
     
     If ok = False Then
      MsgBox MaVariable & vbLf & "n'est pas valide"
      Exit Sub
     End If
     
     
        Range("C3").NumberFormat = "m/d/yyyy"
     
        Range("C3").Value = MaVariable
     
        Dim Quoi As Date
     
         Quoi = Range("C3").Value
     
         Rows(6).NumberFormat = "m/d/yyyy"
     
         Set CelluleDate = Sheets("Planning").Rows(6).Find(What:=Quoi, LookIn:=xlFormulas, LookAt:=xlWhole) 'La variable "cellulemois" est égale à la cellule dont la valeur est égale à la variable Mois que l'on a saisie plus tôt
     
        If Not CelluleDate Is Nothing Then                                          'Si pas de résultat trouvé, la variable cellulemois est nulle
         Cells(CelluleDate.Row, CelluleDate.Column).Offset(1, 0).Select              'Selection la cellule qui se trouve 4 cases en dessous de la cellule trouvée avec la fonction ".find"
         Set Horizon = Range(ActiveCell, ActiveCell.Offset(19, 8))                   'Définir "Horizion" comme tableau. Il part de la cellule selectionnée et fait 19 lignes + 8 colonnes
         Horizon.Select
        End If                                                                      'Fin de condition
     
    End Sub

  12. #12
    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
    Points : 3 666
    Points
    3 666
    Par défaut
    Bonjour,

    alors que CDate utilise les paramètres régionaux
    Je ne suis pas sûr de ça même si on le trouve sur MSDN, ayant également eu des surprises avec.
    Par contre pour dateValue() :
    la fonction DateValue associe ces valeurs au mois, au jour et à l'année selon le format Date courte que vous avez défini pour votre système.
    Je ne me rappelle pas avoir eu de soucis
    eric

  13. #13
    Membre du Club Avatar de kader15
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2016
    Messages : 65
    Points : 43
    Points
    43
    Par défaut
    Merci infiniment Docmarti ça marche nickel, encore merci.

    Résolu

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

Discussions similaires

  1. [VBA-Excel] Macro de mise à jour de Report
    Par strifer dans le forum Macros et VBA Excel
    Réponses: 22
    Dernier message: 13/07/2006, 11h23
  2. [Requete] Inversion mois/jours lors de resultat nul
    Par Jeremie_Vi dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 06/07/2006, 12h47
  3. [VBA Excel] macro création de feuille
    Par Viper7 dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 29/06/2006, 11h13
  4. [ACCESS] probleme Inversion Mois/Jours
    Par fredrider dans le forum Access
    Réponses: 10
    Dernier message: 26/06/2006, 17h37
  5. [VBA] Excel + macro + aléatoire
    Par spopo dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 02/01/2006, 15h42

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