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 :

Code Condition IF


Sujet :

Macros et VBA Excel

  1. #1
    Membre chevronné Avatar de jackborogar
    Homme Profil pro
    Etudiant Ingénierie Financière
    Inscrit en
    Avril 2012
    Messages
    290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Etudiant Ingénierie Financière
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2012
    Messages : 290
    Par défaut Code Condition IF
    Bonjour,

    J'ai créé un bouton qui permet d'ajouter un tableau. Le bouton affiche un userform contenant un textbox. Voici le format que l'on doit marquer dans ce textbox:

    -2011/2012
    -2013/2014
    -etc...

    J'aimerai créer une condition qui dise: si xxxx"/"xxxx = true alors exécute mon code sinon. Mon problème est de savoir comment dire cela en code.

    Quelque chose du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    If TextBox1= Year & "/" & Year + 1 = True Then
     
       'exécute mon code
    Else
    OU

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If TextBox1 = Format(yyyy) & "/" & Format(yyyy) = True Then
    Cdt,

  2. #2
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Par défaut
    Bonjour,

    Une solution
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim Tablo() As String
        Tablo = Split(Me.TextBox1.Value, "/")
        If Tablo(1) - Tablo(0) = 1 Then
            MsgBox "Correct !"
        Else
            MsgBox "Incorrect !"
        End If
    Cordialement.

  3. #3
    Membre chevronné Avatar de jackborogar
    Homme Profil pro
    Etudiant Ingénierie Financière
    Inscrit en
    Avril 2012
    Messages
    290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Etudiant Ingénierie Financière
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2012
    Messages : 290
    Par défaut
    Tout d'abord merci beaucou pour ton temps pris.
    J'ai essayé ton code quand je marque bien avec des nombres cela fonctionne parfaitement.

    Cad
    2012/2013 => If fonctionne
    2013/2012=> Else fonctionne
    2013/2013=> Else Fonctionne

    Cependant il faut également que AZER/IEHD nous renvoi sur le Else que ici sa fait bugger le code.

  4. #4
    Membre Expert Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Par défaut
    Bonjour,
    c'est un peu tiré par les cheveux mais ceci peu fonctionner
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub test()
    Dim chaine1 As Single, chaine2  As Single
    'vnom = "ABCD/EFGH" 'ici c'est erreur
    vnom = "2012/2013" 'ici c'est OK
    On Error Resume Next
    chaine1 = CSng(Left(vnom, 4))
    chaine2 = CSng(Right(vnom, 4))
    chaine3 = Mid(vnom, 5, 1)
    If chaine2 = chaine1 + 1 And chaine3 = "/" Then
    MsgBox "OK"
    Else
    MsgBox "erreur"
    End If
    End Sub

  5. #5
    Membre chevronné Avatar de jackborogar
    Homme Profil pro
    Etudiant Ingénierie Financière
    Inscrit en
    Avril 2012
    Messages
    290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Etudiant Ingénierie Financière
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2012
    Messages : 290
    Par défaut
    Je pense pas que ton code correspond à mes attentes, car je dois intégré mon textbox dans mon IF.

    Je ne vois pas dans ton code, une ligne venant chercher la valeur de mon textbox.

    Peut être que je me trompe.

    Merci,

    Cdt

  6. #6
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Par défaut
    Re,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim Tablo() As String, Msg As String
        Tablo = Split(Me.TextBox1.Value, "/")
        Msg = "Incorrect !"
        If IsNumeric(Tablo(0)) And IsNumeric(Tablo(1)) Then
            If Tablo(1) - Tablo(0) = 1 Then Msg = "Correct !"
        End If
        MsgBox Msg
    Cordialement.

  7. #7
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    Bonjour,

    @jackborogar, en dehors du fait d'arriver à tes fins par ce biais, à la base, ton besoin c'est quoi ?

    • Tu as toujours une année de différence entre les 2 ?
    • Ta plage d'années à valider possible est de quel ordre ?
    • etc....


    Cordialement,

    Ps : si le côté technique de la réponse = OK ou pas => pensez à cliquer sur les pouces et quand question résolue à la taguer résolue, et chaque action vous rapporte des points

    Didier

  8. #8
    Membre chevronné Avatar de jackborogar
    Homme Profil pro
    Etudiant Ingénierie Financière
    Inscrit en
    Avril 2012
    Messages
    290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Etudiant Ingénierie Financière
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2012
    Messages : 290
    Par défaut
    jackborogar, en dehors du fait d'arriver à tes fins par ce biais, à la base, ton besoin c'est quoi ?

    Tu as toujours une année de différence entre les 2 ?
    Ta plage d'années à valider possible est de quel ordre ?
    etc....
    Mes besoins sont de créer des nouveaux tableaux d'engagement en fonction de l'année. J'ouvre un textebox et demande à l'utilisateur d'entrer de la forme "2012/2013", l'exercice d'engagement qu'il souhaite. Si le format est bon (et maintenant on peut le tester) alors le tableau se créer.
    Oui il y a toujours une année de diff entre les deux car comme je l'ai dit cela concerne un exercice qui s'effectue que sur un an.

    @Gfzt82 , c'est parfait! Merci pour ton temps.

  9. #9
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    Bonjour,

    ma question se situait en aval de ta question originelle et est conceptuelle au vu de ce qu'on peut deviner au 1er abord

    Le souci de base quand on fait une interface utilisateur est toujours ergonomique, la simplicité d'emploi et l’élimination maxi des risques d'erreurs en font donc partie...

    Si tu n'as qu'une année d"écart par exemple, il est peut-être inutile d'imposer à l'utilisateur la saisie de 2 années avec une syntaxe complexe en plus : un slash, pas d'espaces etc...
    Il est possible de ne demander que l'année de départ, ce qui simplifiera grandement les choses quitte à mettre à côté de la case de saisie une autre case non modifiable avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    contenu = txtbox1.value & "/" & txtbox1.value+1
    reste à vérifier que l'année saisie est bien en format correct, d'où ma question N° 2 du post précédent, la liste de années est-elle finie ?

    Car au lieu de faire saisir, une date tu peux peut-être proposer une list ou combobox, si x années en arrière, c'est fixe, si x année en avant, c'est fixe avec une fourchette calculée en dynamique selon l'année en cours pour ne mas alourdir l'ensemble etc...

    Cordialement,

    Ps : si le côté technique de la réponse = OK ou pas => pensez à cliquer sur les pouces et quand question résolue à la taguer résolue, et chaque action vous rapporte des points

    Didier

  10. #10
    Membre Expert Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Par défaut
    sans chercher de polémique
    Je ne vois pas dans ton code, une ligne venant chercher la valeur de mon textbox.
    un minimum d'adaptation à mon code donne ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim chaine1 As Single, chaine2  As Single
    On Error Resume Next
    chaine1 = CSng(Left(Me.TextBox1.Value, 4))
    chaine2 = CSng(Right(Me.TextBox1.Value, 4))
    chaine3 = Mid(Me.TextBox1.Value, 5, 1)
    If chaine2 = chaine1 + 1 And chaine3 = "/" Then
    MsgBox "OK"
    Else
    MsgBox "erreur"
    End If
    certes c'est pas top mais si dans textox1 tu as ABCD/EFGH il te diras erreur

  11. #11
    Membre chevronné Avatar de jackborogar
    Homme Profil pro
    Etudiant Ingénierie Financière
    Inscrit en
    Avril 2012
    Messages
    290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Etudiant Ingénierie Financière
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2012
    Messages : 290
    Par défaut
    Merci Ormonth pour ta réponse,

    On peut voir que tu as tout de suite le bon raisonnement, et que tu vas direct dans la simplicité. Codant depuis seulement 4 semaines, il est vrai que je n'ai pas encore ces automatismes.
    Mais justement des critiques/remarques comme les tiennes ne font qu'enrichir mon savoir et perfectionne mon codage.

    Je laisserai donc comme j'ai fait au début puisque tout s'enchaine sur le format "2013/2014" sinon je suis obligé de tout refaire, mais effectivement ton idée aurait été beaucoup plus simple.

    En te remerciant,

    Cdt

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 04/12/2006, 08h55
  2. Réponses: 10
    Dernier message: 31/08/2006, 15h57
  3. Réponses: 4
    Dernier message: 08/08/2006, 16h04
  4. [VBA-E]executer "du code" sous conditions
    Par Echizen1 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 13/06/2006, 21h02
  5. [Code] LA date comme condition
    Par skreu dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 25/11/2005, 10h14

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