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 :

Problème macro dates et textes


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 28
    Par défaut Problème macro dates et textes
    Bonjour,
    j'ai dans le code d'un userform bidouillé avec plusieurs codes et aide un problème.
    En effet, si je met ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    .Range("M" & L) = (TB_date_sortie.Text)
     .Range("M" & L).NumberFormat = "dd/mm/yyyy"
    il ne considère pas la date comme une date et du coup n'effectue pas les calculs et si je met ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If IsDate(TB_date_sortie.Text) Then   '<<<<<============
            .Range("M" & L).NumberFormat = "dd/mm/yyyy"
            .Range("M" & L) = CDate(TB_date_entree.Text)
        .Range("M" & L).NumberFormat = "dd/mm/yyyy"
         End If
    ça marche pour la date mais il ne prends pas en compte "Présent" qui sert également pour des calculs ...
    comment faire ???
    merci de votre aide
    @ bientôt
    Marc

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Avec un Select case

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     With Range("M" & L)
     
           Select Case TB_date_sortie.Text
     
            Case IsDate(TB_date_sortie.Text)
                    .Value = CDate(TB_date_sortie.Text)
                    .NumberFormat = "dd/mm/yyyy"
            Case Else
                    .Value = TB_date_entree.Text
           End Select
     
      End With
    Cordialement.

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 28
    Par défaut
    Bonjour,
    merci de ton aide.
    Il continue à me la reproduire comme du texte ... donc pas de calcul à l'arrivée ...
    je ne sais quoi faire ...
    @ bientôt
    Marc

  4. #4
    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 174
    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 174
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Si ta variable est un texte, tu peux utiliser la fonction Val pour effectuer un calcul. Ainsi Val("15") * 2 donnera 30
    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

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 28
    Par défaut
    Bonjour,
    j'ai soit une date qu'il doit considérer comme une date, soit présent.
    les calculs s'effectuent dans la base données
    merci de ton aide
    @ bientôt
    Marc

  6. #6
    Invité
    Invité(e)
    Par défaut
    En reprenant la proposition de Philippe,

    Citation Envoyé par Philippe Tulliez Voir le message
    Bonjour,
    Si ta variable est un texte, tu peux utiliser la fonction Val pour effectuer un calcul. Ainsi Val("15") * 2 donnera 30

    J'ai testé le code suivant à partir d'un Userform comprenant un Textbox.

    J'ai initialisé une variable ContenuChamp de type Variant pour ne pas être "embêté" avec le type du contenu.

    A la validation du Userform, on affecte le contenu du Textbox à ContenuChamp.

    Le code suivant fonctionne pour tous les cas : Champ Date, Date sous forme Texte, Texte.

    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
     
    Public ContenuChamp As Variant
     
    Sub TesterInjection2()
     
    Dim L As Long
     
            For L = 1 To 4
                Range("M" & L).Clear
            Next L
     
            L = 1
     
            For L = 1 To 4
                With UserForm1
                    .TB_date_sortie = Range("A" & L)
                    .Show
            End With
     
     
             With Range("M" & L)
     
                   If IsDate(ContenuChamp) Or Val(ContenuChamp) > 0 Then
                        .Value = CDate(ContenuChamp)
                        .NumberFormat = "dd/mm/yyyy"
                    Else
                        .Value = ContenuChamp
                   End If
     
              End With
     
            Next L
     
    End Sub
    Il vous suffit de récupérer la partie With jusqu'à End With et de créer la variable ContenuChamp.

    Cordialement.

  7. #7
    Membre averti
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 28
    Par défaut
    génial ça marche
    merci beaucoup à vous
    c'est fantastique cette aide que l'on trouve sur les forums
    bonne journée
    Marc

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

Discussions similaires

  1. Problème macro importer un fichier texte
    Par aviat3ur dans le forum Excel
    Réponses: 4
    Dernier message: 15/12/2012, 15h47
  2. Problème de dates sur importation fichier texte
    Par Invité dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 23/04/2012, 10h40
  3. [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
  4. [AC-2007] Problème convertir une date en texte
    Par christophe31 dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 16/04/2010, 14h51
  5. problème macro et filtre automatique par une variable texte
    Par Drozo dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 28/08/2007, 09h05

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