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 :

Select case target


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Juin 2007
    Messages : 106
    Par défaut Select case target
    Bonjour,

    Je viens de me créer un évènement privé avec des Target conditionnels. Seulement, je ne veux pas être obligé de faire trop de IF et ElseIF dans mon code. C'est pourquoi j'ai pensé à la fonction Select Case. Seulement, je ne comprends pas pourquoi elle ne fonctionne pas dans mon cas.

    Voici mon code jusqu'à maintenant
    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
    Private Sub Worksheet_Change(ByVal Target As Range)
    'Modification automatique de la formule
     
     
    'Si je change une donnée dans la colonne C
    If Not Application.Intersect(Target, Me.Range("C4:C443")) Is Nothing Then
    Application.ScreenUpdating = False
     
    Select Case Target
     
    Case Me.Range("C9:C68")
    Case Else
     
    Target.Offset(0, 1).Value = "=IF(RC[-1]="""","""",IF(RC[-1]=""OFF"",""OFF"",IF(ISERR((RC[-1]*24+RC[2])/24),""OFF"",IF(RC[-1]>=R3C38,((RC[-1]*24-(24-RC[2]))/24),(RC[-1]*24+RC[2])/24))))"
     
        Target.Offset(0, 1).Select
        Selection.Copy
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Application.CutCopyMode = False
     
     
    Target.Offset(0, 4).Value = "=IF(RC[-4]>=R3C40,RC[-1],IF(AND(RC[-1]<=12,RC[-1]>=5.5),(IF(AND(VLOOKUP(RC[-5],'Préférences Horaires'!R3C2:R58C4,2,FALSE)=""X"",RC[-1]>=5.5),RC[-1]-0.5,IF(AND(VLOOKUP(RC[-5],'Préférences Horaires'!R3C2:R58C4,3,FALSE)=""X"",RC[-1]>=5.5),RC[-1]-1,RC[-1]))),IF(AND(RC[-5]="""",RC[-4]=""""),"""",IF(RC[-1]<5.5,RC[-1],IF(RC[-1]="""","""",IF(RC[-1]>12,""-""))))))"
        Target.Offset(0, 4).Select
        Selection.Copy
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Application.CutCopyMode = False
     
    Target.Offset(0, 2).Value = "=IF(RC[-1]=""OFF"",RC[-2],IF(RC[-2]="""","""",TEXT(RC[-2],""h:mm"")&""-""&TEXT(RC[-1],""h:mm"")))"
        Target.Offset(0, 2).Select
        Selection.Copy
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Application.CutCopyMode = False
     
    Target.Select
    End Select
     
     
    Application.ScreenUpdating = True
    End If
    end sub
    Merci de votre aide!

  2. #2
    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,

    vois la syntaxe de Select Case p44 ici :

    https://bidou.developpez.com/article/VBA/

    un exemple en IV D ici :
    ftp://ftp-developpez.com/silkyroad/V...m/UserForm.pdf

    cordialement,

    Didier

  3. #3
    Expert confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    6 814
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 6 814
    Par défaut
    surtout, si on commence à avoir des conditions complexes, il peut être plus lisible(et moins générateur d'erreur) de taper sur un booleen.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Select Case True
        Case a = b
            (instructions)
        Case c <> d
            (instructions)
        Case else
            (instructions)
    End Select
    Spécialement utile quand la spécification est une liste de conditions mutuellement exclusives et pas forcément simples.

Discussions similaires

  1. Problème SELECT, CASE et Group by
    Par Royd938 dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 03/10/2014, 07h41
  2. [XL-2010] Select Case Len(Target)
    Par pilounet54 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 06/09/2013, 14h31
  3. erreur select case
    Par maximedrouet dans le forum ASP
    Réponses: 4
    Dernier message: 15/05/2006, 14h40
  4. erreur select case
    Par maximedrouet dans le forum ASP
    Réponses: 12
    Dernier message: 06/01/2005, 15h33
  5. vérification de passage dans un select case
    Par arsgunner dans le forum ASP
    Réponses: 5
    Dernier message: 14/06/2004, 10h05

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