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 :

Petit probleme sur un select case


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier Avatar de Nono Sto
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 350
    Points : 74
    Points
    74
    Par défaut Petit probleme sur un select case
    Chères amies, chers amis

    J'effectue un test avec select case, le test est sur la valeur d'une cellule, elle peut prendre que true ou false, voici le 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
    Select Case cms_cell.offset(0, 3).Value
                    Case Is = cms_cell.offset(0, 3).Value = 1
                        For j = 1 To Len(Match.SubMatches(x))
                            If IsNumeric(VBA.Mid(Match.SubMatches(x), j, 1)) Then
                            h = h + 1
                            cell.offset(0, 3 + h) = DateAdd("yyyy", CDbl(Val(VBA.Mid(Match.SubMatches(x), j, Len(Match.SubMatches(x)) - j + 1))), cell.offset(0, -4))
                            j = j + Len(str(VBA.Mid(Match.SubMatches(x), j, 1))) - 1
                            End If
                            Next
                        h = 0
                    Case Is = cms_cell.offset(0, 3).Value = 0
                        For j = 1 To Len(Match.SubMatches(x))
                            If IsNumeric(VBA.Mid(Match.SubMatches(x), j, 1)) Then
                            cell.offset(0, 5) = DateAdd("yyyy", CDbl(Val(VBA.Mid(Match.SubMatches(x), j, Len(Match.SubMatches(x)) - j + 1))), cell.offset(0, -4))
                            cell.offset(0, 4) = DateAdd("m", 3, cell.offset(0, -4))
                            j = j + Len(str(VBA.Mid(Match.SubMatches(x), j, 1))) - 1
                        End If
                        Next
                    End Select
    Cepandant cela marche pas auriez vous une idée SVP?
    L'espion reconnait bien la valeur de la cellule et je ne comprend pas pourquoi le test bne s'effectue pas, le pas pas après la ligne case is saute tout de suite au suivant case.


    Merci

  2. #2
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    Bonjour,

    Essais comme cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Select Case cms_cell.offset(0, 3).Value
                    Case True
                      ....
                    Case False
                       ...
    End select

  3. #3
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 940
    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 : 12 940
    Points : 28 938
    Points
    28 938
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Ton problème est dans la syntaxe
    Soit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub t1()
     Select Case Range("A2")
      Case 1
       MsgBox "La valeur est égal à 1"
      Case 2
       MsgBox "La valeur est égal à 2"
     End Select
    End Sub
    Soit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub t2()
     Select Case True
      Case Range("A2") = 1
       MsgBox "La valeur est égal à 1"
      Case Range("A2") = 2
       MsgBox "La valeur est égal à 2"
     End Select
    [EDIT]
    Je n'avais pas lu que la valeur devait être à VRAI ou FAUX
    La solution de Jérôme répond à ta question.
    Sol 1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub t1()
     Select Case Range("A2")
      Case True
       MsgBox "La valeur est égal à Vrai"
      Case False
       MsgBox "La valeur est égal à Faux"
     End Select
    End Sub
    Sol 2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub t2()
     Select Case True
      Case Range("A2")
       MsgBox "La valeur est égal à VRAI"
      Case Not (Range("A2"))
       MsgBox "La valeur est égal à FAUX"
     End Select
    End Sub

  4. #4
    Membre régulier Avatar de Nono Sto
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 350
    Points : 74
    Points
    74
    Par défaut
    Thank you very much le code marche nickel:

    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
    Select Case cms_cell.offset(0, 3)
                    Case True
                        For j = 1 To Len(Match.SubMatches(x))
                            If IsNumeric(VBA.Mid(Match.SubMatches(x), j, 1)) Then
                            h = h + 1
                            cell.offset(0, 3 + h) = DateAdd("yyyy", CDbl(Val(VBA.Mid(Match.SubMatches(x), j, Len(Match.SubMatches(x)) - j + 1))), cell.offset(0, -4))
                            j = j + Len(str(VBA.Mid(Match.SubMatches(x), j, 1))) - 1
                            End If
                            Next
                        h = 0
                    Case False
                        For j = 1 To Len(Match.SubMatches(x))
                            If IsNumeric(VBA.Mid(Match.SubMatches(x), j, 1)) Then
                            cell.offset(0, 5) = DateAdd("yyyy", CDbl(Val(VBA.Mid(Match.SubMatches(x), j, Len(Match.SubMatches(x)) - j + 1))), cell.offset(0, -4))
                            cell.offset(0, 4) = DateAdd("m", 3, cell.offset(0, -4))
                            j = j + Len(str(VBA.Mid(Match.SubMatches(x), j, 1))) - 1
                        End If
                        Next
                    End Select

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

Discussions similaires

  1. [osCommerce] Petit probleme sur os commerce
    Par carlatocer dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 22/10/2008, 15h25
  2. Informations sur le Select Case
    Par mouaa dans le forum VBA Access
    Réponses: 3
    Dernier message: 31/01/2008, 11h22
  3. [Debutant] Probleme sur un select
    Par Flamby38 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 29/01/2008, 14h57
  4. petit probleme sur mon code
    Par MORPHEUS50 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 13/05/2007, 18h16
  5. [ODBC] Probleme sur un SELECTED de SELECT avec PHP
    Par G.D.O dans le forum PHP & Base de données
    Réponses: 15
    Dernier message: 27/03/2006, 15h44

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