Select case compilation Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
J
Jamais203
Jeune membre
Jeune membre
Messages : 45
Inscrit le : 13 septembre 2019
Version d'Excel : 2010

Message par Jamais203 » 23 septembre 2019, 10:16

Bonjour,
Je voudrais savoir comment compiler plusieurs "select case" (sachant qu'il y 'en aura au moins 40) est-ce possible ?
Il me faudrait juste la nomenclature. ou dois-je passer par plusieurs macro pour définir les "Case" et mettre des "IF" en instruction ? Ici il s'agit de compteurs pour la ligne ci-dessous
If Cal > 0 Then Cells(14, 3 + Cal) = Cells(14, 3 + Cal) + 1"


Merci bien




Private Sub Worksheet_Change(ByVal Target As Range)

Dim Cal As Integer
Dim Cbl As Integer

If Not Application.Intersect(Target, Range("A2")) Is Nothing Then
Select Case Range("E2").Value
Case "IWL250"
Cal = 1
Case "IWL250 B"
Cal = 2
Case "IWL252"
Cal = 3
Case Else
Cal = 0
End Select

If Cal > 0 Then
Cells(14, 3 + Cal) = Cells(14, 3 + Cal) + 1


Select Case Range("F2").Value
Case "IWL250"
Cbl = 1
Case "IWL250 B"
Cbl = 2
Case "IWL252"
Cbl = 3
Case Else
Cbl = 0
End Select
If Cal > 0 Then
Cells(15, 3 + Cbl) = Cells(15, 3 + Cbl) + 1


End If
End If
End If
End Sub




Merci
Modifié en dernier par Jamais203 le 23 septembre 2019, 10:40, modifié 1 fois.
J
Jamais203
Jeune membre
Jeune membre
Messages : 45
Inscrit le : 13 septembre 2019
Version d'Excel : 2010

Message par Jamais203 » 23 septembre 2019, 10:37

Ou bien comme ca?

Private Sub A()
cellule = "A"
End Sub
------------------------------------------------------------------------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)

If Not Application.Intersect(Target, Range("A2")) Is Nothing Then
Select Case cellule

Case "A"

If Range("E2").Value = "IWL250" Then
Cells(14, 4) = Cells(14, 4) + 1

End If

If Range("E2").Value = "IWL250 B" Then
Cells(14, 5) = Cells(14, 5) + 1

End If

If Range("E2").Value = "IWL252" Then
Cells(14, 6) = Cells(14, 6) + 1

End If


End select




Merci
Avatar du membre
galopin01
Passionné d'Excel
Passionné d'Excel
Messages : 6'227
Appréciations reçues : 138
Inscrit le : 18 septembre 2008
Version d'Excel : 2016
Téléchargements : Mes applications

Message par galopin01 » 23 septembre 2019, 11:03

Bonjour,
En fait on ne comprend pas bien si c'est le nombre de select case qui va augmenter ou le nombre de Target :
J'ai plutôt l'impression que c'est le nombre de Target.
Dans les 2 cas ça donnerait ça :
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Plage As Range, Cal
Set Plage = Range("A2, B7,C3, E2, E7, F4,G7,G12,H2, I6,J10,K3, L11")
On Error GoTo FIN
   If Not Application.Intersect(Target, Plage) Is Nothing Then
      Select Case Target
      Case "A": Cal = 1
      Case "B": Cal = 2
      Case "C": Cal = 3
      Case "D": Cal = 4
      Case "E": Cal = 5
      Case "F": Cal = 6
      Case Else: Cal = 0
      End Select
      Range("D13") = Range("D13") + Cal
   End If
Exit Sub
TargetOuSelect.xlsm
(17.2 Kio) Pas encore téléchargé
Ici c'est un forum Excel/VBA pas Photoshop :
Quand vous amenez votre voiture au garagiste vous lui donnez pas juste la photo ?
Avatar du membre
Jean-Eric
Fanatique d'Excel
Fanatique d'Excel
Messages : 15'753
Appréciations reçues : 577
Inscrit le : 27 août 2012
Version d'Excel : 365 Insider

Message par Jean-Eric » 23 septembre 2019, 11:03

Bonjour,
Quelle est l'utilité de cbl dans ta procédure ?
Sinon, une proposition à étudier !... :roll:
Cdlt.
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Cal As Integer, Cbl As Integer
    If Target.Address = "$A$2" Then
        Cal = MatchUp(Me.Range("E2").Value)
        If Cal > 0 Then
            Me.Cells(14, 3 + Cal) = Me.Cells(14, 3 + Cal) + 1
            Cbl = MatchUp(Me.Range("F2").Value)
            If Cbl > 0 Then Me.Cells(15, 3 + Cbl) = Me.Cells(15, 3 + Cbl) + 1
        End If
    End If
End Sub

Private Function MatchUp(txt As String) As Integer
    MatchUp = 0
    On Error Resume Next
    MatchUp = Switch(txt = "IWL250", 1, txt = "IWL250 B", 2, txt = "IWL252", 3)
End Function
Jean-Eric

Je ne réponds pas aux M.P. non sollicités.
Avatar du membre
Pedro22
Passionné d'Excel
Passionné d'Excel
Messages : 3'186
Appréciations reçues : 317
Inscrit le : 26 janvier 2017
Version d'Excel : 2010 FR
Version de Sheets : FR
Téléchargements : Mes applications

Message par Pedro22 » 23 septembre 2019, 11:08

Bonjour tout le monde,

Si ça peux aider à comprendre, je pense que c'est la suite de ce sujet :
https://forum.excel-pratique.com/viewtopic.php?f=2&t=129916
Merci de prendre 30 sec pour lire la charte du forum.
Quelques conseils : ici
J
Jamais203
Jeune membre
Jeune membre
Messages : 45
Inscrit le : 13 septembre 2019
Version d'Excel : 2010

Message par Jamais203 » 23 septembre 2019, 11:09

galopin01 a écrit :
23 septembre 2019, 11:03
Bonjour,
En fait on ne comprend pas bien si c'est le nombre de select case qui va augmenter ou le nombre de Target :
J'ai plutôt l'impression que c'est le nombre de Target.
Salut,
En fait c'est le nombre de Target en effet . Il y a 38 "Target" et 3 choix par " Target " possible qui incrementent des compteurs disposés sur 3 cellules

1 target pour 3 choix sur 3 compteurs différents ( les compteurs sont sur differentes cellules).
j'ai joint un fichier exemple.

En fait il y a une seule référence "Target"
mais differente Select case


ci-joint un ficher exemple. Vraiment pour "montrer"


Lille fait reference a F2
Paris E2

mais "Une seule" target A1 ( bon ici ca donne le même resultat) La formule aussi est un exemple. ( c'est la meme mais elle sera modifiée)
F2 increment le compteur Lille
E2 celui de Paris



fichier Exemple :)
compteurx2.xlsm
(18.43 Kio) Téléchargé 3 fois
J
Jamais203
Jeune membre
Jeune membre
Messages : 45
Inscrit le : 13 septembre 2019
Version d'Excel : 2010

Message par Jamais203 » 23 septembre 2019, 11:47

Jean-Eric a écrit :
23 septembre 2019, 11:03
Bonjour,
Quelle est l'utilité de cbl dans ta procédure ?
Sinon, une proposition à étudier !... :roll:
Cdlt.
Salut,
je voulais essayer de faire un seul select case qui prend différents valeurs par la suite
et mettre des "IF" un peu partout :D


private sub
cellule= "cal"
end sub

private sub
cellule= "cbl"
end sub


select case cellule

case " cal"
if ...

case "cbl"
if....


end sub
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message
  • Select Case
    par TeamG1 » 20 décembre 2016, 10:12 » dans Excel - VBA
    3 Réponses
    234 Vues
    Dernier message par TeamG1
    20 décembre 2016, 11:14
  • select case
    par nico157 » 11 avril 2018, 18:45 » dans Excel - VBA
    5 Réponses
    217 Vues
    Dernier message par jmd
    15 avril 2018, 08:28
  • Select Case
    par melanie57 » 25 avril 2014, 11:18 » dans Excel - VBA
    8 Réponses
    558 Vues
    Dernier message par melanie57
    28 avril 2014, 15:14
  • Select Case
    par cfn3cfn » 9 juillet 2016, 12:47 » dans Excel - VBA
    18 Réponses
    517 Vues
    Dernier message par cfn3cfn
    10 juillet 2016, 14:45
  • [MACRO] Select case
    par Jefekoi » 1 décembre 2018, 10:27 » dans Excel - VBA
    3 Réponses
    83 Vues
    Dernier message par Jefekoi
    1 décembre 2018, 11:42
  • Alternative à Select Case
    par Bliblablou » 21 décembre 2018, 10:40 » dans Excel - VBA
    5 Réponses
    82 Vues
    Dernier message par Bliblablou
    21 décembre 2018, 13:45