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 :

Gérer le format introduit dans un InputBox


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de mat-tech
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2006
    Messages : 202
    Par défaut Gérer le format introduit dans un InputBox
    Bonjour le Forum,
    J’ai une superbe procédure de recherche, mais j'aimerai gérer au maximum les erreurs, donc :
    Dans cette procédure, je fais une recherche sur une colonne complète, les variable pour effectuer cette recherche provienne d'un InputBox et le problème est que si l'utilisateur introduit un mauvais format (ex : 01/15/2003 ou blablabla) il y a une erreur donc j'aimerai tester le format de la variable avant de commencer la recherche et je ne connais pas la syntaxe pour tester un format


    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
     
    Private Sub rech()
     
    Dim i As Integer, Datedeb As Date, Datefin As Date
    Dim graph As Chart
     
    Application.ScreenUpdating = False
    If Sheets("Index").OptionButton10.Value = True Then
    Datedeb = Sheets("Index").TextBox1
    Datefin = Sheets("Index").TextBox2
    End If
     
    If Sheets("Index").OptionButton7.Value = True Then
    Datedeb = Date - 388
    Datefin = Date - 30
    End If
     
    du = Date
    au = Date
     
    'tester si les dates sont dans un format correct
    'If Datedeb OR Datefin <> DATE.Format Then 
    'MsgBox "Les dates doivent être dans un format JJ/MM/AAAA"
    'Exit Sub
    'End If
     
    If Datedeb >= Datefin Then
    MsgBox "la date de fin doit être postérieure à la date de début"
    Exit Sub
    End If
     
    With Sheets("Données")
        For i = 4 To .Cells(Rows.Count, 1).End(xlUp).Row
            If .Cells(i, 2) = Datedeb Then
                Ligdeb = i
                du = .Cells(i, 2)
                Exit For
            ElseIf .Cells(i, 2) > Datedeb Then
                Ligdeb = i - 1
                du = .Cells(i - 1, 2)
                Exit For
            End If
        Next
        For i = 4 To .Cells(Rows.Count, 1).End(xlUp).Row
            If .Cells(i, 2) = Datefin Then
                LigFin = i
                au = .Cells(i, 2)
                Exit For
            ElseIf .Cells(i, 2) > Datefin Then
                LigFin = i - 1
                au = .Cells(i - 1, 2)
                Exit For
            End If
        Next
    End With
     
    End Sub

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2006
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 288
    Par défaut
    Pour "blablabla" tu peux tester avec isDate.
    Par contre pour le problème jour/mois, tout ce que tu peux faire est vérifier si ce que tu crois être le mois ne dépasse pas 12... pas suffisamment fiable car tu vas rater toutes les inversions où le jour est inférieur à 13.
    Le mieux serait encore de bien spécifier ce que tu attends dans le libellé de l'inputbox, éventuellement en mettant un exemple non ambigu.

  3. #3
    Membre confirmé Avatar de mat-tech
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2006
    Messages : 202
    Par défaut
    Oui je crois avoir trouvé une idée, je vais essayé d'ouvrir un calendrier lorsque je click sur les InputBox et récuppérer les valeurs de celles-ci

    Si une personne peut me dire comment ouvrir un calandrier selectionner la date et valider ca m'aiderait beaucoup.

    J'ai trouvé un control calandrier, je pensais en mettre 2 et jouer sur le paramtre .Visible et réccuperer la valeur, mais ca m'a l'aire tirer par les cheuveux non ?

    Merci

  4. #4
    Membre éclairé Avatar de casavba
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    455
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 455
    Par défaut
    Bien penser.

    Regarde le fichier joint tu trouveras peut être ton bonheur.

    Tiens moi au courant

  5. #5
    Membre confirmé Avatar de mat-tech
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2006
    Messages : 202
    Par défaut
    J'ai une erreur "Impossible de charger cette Objet car il n'est pas sur cette machine"
    Pour info j'utilise Excel 2003 Pro, sous Xp Pro SP3

  6. #6
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Tu peux créer un UserForm avec un calendrier, pour ce faire tu ajoutes le contrôle "Contrôle Calendrier xx.x", ensuite tu insères les codes suivants :


    Sinon concernant la vérification de la saisie de la date dans l'InputBox, cela devrait ressembler à ceci
    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
    Sub test_inputbox()
    Dim DateDeb
     
    recom:
    DateDeb = Application.InputBox("Veuillez introduire une date au format JJ/MM/AAAA", "Date de début")
     
    'si l'utilisateur clique sur "annuler"
    If DateDeb = False Then Exit Sub
     
    'si la date introduite est n'importe quoi sauf une date
    If IsDate(DateDeb) = False Then
        MsgBox "la date introduite n'est pas une date correcte"
        GoTo recom
    'si le format JJ/MM/AAAA n'est pas respecté
    ElseIf Not DateDeb Like "##/##/####" Then
        MsgBox "le format de la date introduite n'est pas correcte"
        GoTo recom
    'si MM dépasse 12, par exemple si l'utilisateur introduit 10/25/2008 ce qui est considéré comme le 25 octobre 2008
    ElseIf Mid(DateDeb, 4, 2) > 12 Then
        MsgBox "depuis quand une année compte t-elle plus que 12 mois ?"
        GoTo recom
    'si tout est ok on y go
    Else
        MsgBox "ok"
    End If
     
    End Sub
    Avec la solution du calendrier dans un UserForm cela rend l'erreur de saisie impossible et je trouve cette solution plus conviviale pour l'utilisateur
    .

  7. #7
    Membre éclairé Avatar de casavba
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    455
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 455
    Par défaut
    Citation Envoyé par mat-tech Voir le message
    J'ai une erreur "Impossible de charger cette Objet car il n'est pas sur cette machine"
    Pour info j'utilise Excel 2003 Pro, sous Xp Pro SP3

    As-tu activer les références :

    '"Microsoft MonthView Control 6.0"
    '"Microsoft StatusBar control ,Version 6.0"

    Pourtant je l'ai marqué dans le module en tant que commentaire.

    Et franchement, la solution que j'ai proposé est meilleur et t'as pas besoin d'écrire une multitude de ligne de code, puisque l'utilisateur ne saisie pas, il choisit sa date dans le calendrier.

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

Discussions similaires

  1. Réponses: 12
    Dernier message: 29/01/2024, 15h32
  2. format date dans une inputbox
    Par adelsunwind dans le forum IHM
    Réponses: 1
    Dernier message: 16/02/2009, 19h48
  3. format date dans une inputbox
    Par adelsunwind dans le forum IHM
    Réponses: 2
    Dernier message: 26/01/2009, 23h10
  4. Réponses: 4
    Dernier message: 20/05/2008, 10h28
  5. Format heure dans Interbase
    Par Battomura dans le forum InterBase
    Réponses: 2
    Dernier message: 14/03/2003, 13h17

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