Erreur de compilation case sans select case [Résolu]

Messages postés
41
Date d'inscription
vendredi 3 décembre 2010
Dernière intervention
11 février 2014
- - Dernière réponse :  Utilisateur anonyme - 14 mai 2013 à 23:22
Bonjour à toutes et à tous,
voilà j'ai ce code sur lequel je travaille depuis qques mois maintenant,
Dim btnChoisi As String

Private Sub BtNG_Click()
    btnChoisi = "NG"
End Sub

Private Sub BtNV_Click()
    btnChoisi = "NV"
End Sub

Private Sub BtND_Click()
    btnChoisi = "ND"
End Sub

Private Sub Label2_Click()

End Sub

Private Sub CommandButton1_Click()
Dim Wss, WsC As Worksheet
Dim TBLF, MaPlage, MPD, Destination As Range
Dim CIBLE As Variant
Dim DerLigS, i As Long
Set Wss = Sheets("BdD")
Set WsC = Sheets("CR_INTER")
Application.ScreenUpdating = False
Application.DisplayAlerts = False
WsC.Activate
WsC.Range("A2:T3").ClearContents

    If Me.RNSI.Value = "" Then
        Range("V2").FormulaR1C1 = "OPPORTUNITE"
        Range("V3").FormulaR1C1 = "OPPORTUNITE"
        Me.RNSI.SetFocus
    End If

    If Me.BtNG.Value + Me.BtNV.Value + Me.BtND.Value = 0 Then
        MsgBox "vous devez spécifier la configuration capteur : NG, NV ou ND !"
        Exit Sub
    End If

    If Me.CLICHE.Value = "" Then
        MsgBox "Vous devez indiqué le nombre de PDV !"
        Me.CLICHE.SetFocus
        Exit Sub
    End If

        Select Case btnChoisi
        
            Case "NG"
                If Sheets("CR_INTER").Range("P2").Value = "" Then
                Range("P2").FormulaR1C1 = "1"
                Range("Q2").FormulaR1C1 = CLICHE.Value
                End If
                If Sheets("CR_INTER").Range("P2").Value <> "" Then
                Range("P2").FormulaR1C1 = Range("Q2").Value + 1
                Range("Q2").FormulaR1C1 = Range("Q2").Value + CLICHE.Value
                End If

            Case "NV"
                If Sheets("CR_INTER").Range("P2").Value = "" Then
                Range("R2").FormulaR1C1 = "1"
                Range("S2").FormulaR1C1 = CLICHE.Value
                End If
                If Sheets("CR_INTER").Range("P2").Value <> "" Then
                Range("R2").FormulaR1C1 = Range("Q2").Value + 1
                Range("S2").FormulaR1C1 = Range("Q2").Value + CLICHE.Value

            Case "ND"
                If Sheets("CR_INTER").Range("P2").Value = "" Then
                Range("T2").FormulaR1C1 = "1"
                Range("U2").FormulaR1C1 = CLICHE.Value
                End If
                If Sheets("CR_INTER").Range("P2").Value <> "" Then
                Range("T2").FormulaR1C1 = Range("Q2").Value + 1
                Range("U2").FormulaR1C1 = Range("Q2").Value + CLICHE.Value
                
        End Select

WsC.Activate
Cells(2, 1).Value = Date
Cells(2, 2).Value = Time

With Workbooks("GPS.xls").Sheets("Feuil1")
    Cells(3, 1).Value = .Cells(2, 1)
    Cells(3, 2).Value = .Cells(2, 2)
    Cells(2, 4).Value = .Cells(2, 10)
    Cells(2, 5).Value = .Cells(2, 11)
    Cells(2, 8).Value = .Cells(2, 5)
    Cells(2, 9).Value = .Cells(2, 3)
    Cells(2, 10).Value = .Cells(2, 4)
    Cells(3, 8).Value = .Cells(2, 8)
    Cells(3, 9).Value = .Cells(2, 6)
    Cells(3, 10).Value = .Cells(2, 7)
End With
    DerLigS = Wss.Cells(Wss.Columns(1).Cells.Count, 1).End(xlUp).Row
    Set MaPlage = Wss.Range(Wss.Cells(1, 1), Wss.Cells(DerLigS, 1))
    Set TBLF = MaPlage.Find(Me.RNSI.Value, LookIn:=xlValues)
    If Not TBLF Is Nothing Then
        WsC.Cells(2, 3) = Wss.Cells(TBLF.Row, 7)
        WsC.Cells(2, 6) = Wss.Cells(TBLF.Row, 2)
        WsC.Cells(2, 7) = Wss.Cells(TBLF.Row, 6)
        WsC.Cells(2, 12) = Wss.Cells(TBLF.Row, 4)
        WsC.Cells(3, 12) = Wss.Cells(TBLF.Row, 5)
        WsC.Cells(3, 4) = Wss.Cells(TBLF.Row, 3)
    End If
    Range("L2").TextToColumns Destination:=Range("L2"), DataType:=xlFixedWidth, _
        FieldInfo:=Array(Array(0, 1), Array(1, 1), Array(3, 1), Array(5, 1)), _
        TrailingMinusNumbers:=True
    Range("L3").TextToColumns Destination:=Range("L3"), DataType:=xlFixedWidth, _
        FieldInfo:=Array(Array(0, 1), Array(1, 1), Array(4, 1), Array(6, 1)), _
        TrailingMinusNumbers:=True
   Range("J2:J3").TextToColumns Destination:=Range("J2"), DataType:=xlDelimited, _
        TextQualifier:=xlNone, ConsecutiveDelimiter:=False, Tab:=False, _
        Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar _
        :=".", FieldInfo:=Array(Array(1, 1), Array(2, 1)), TrailingMinusNumbers:=True
    Range("W2").FormulaR1C1 = "=(R[0]C[-12]*60)/10000"
    Range("W3").FormulaR1C1 = "=(R[0]C[-12]*60)/10000"
    Range("W2:W3").Copy
    Range("K2:K3").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Set Destination = Sheets("Feuil2").Range("A65535").End(xlUp).Offset(1, 0)
Set MPD = WsC.Range("A2:S3")
MPD.Copy Destination
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
Private Sub CommandButton2_Click()
    Unload Me
End Sub
Private Sub CommandButton3_Click()
    Sheets("Feuil2").Activate
End Sub
Private Sub CommandButton4_Click()
    Sheets("Feuil2").Cells.ClearContents
End Sub


J'utilise un userform avec 3 optionbutton, pour chaque optionbutton une règle d'incrémentation,
quand je test mon code, il me dit erreur compilation : case sans select case, j'ai essayé différente manip mais sans succès. Pourriez-vous me dire ce qu'il ne va pas.
Merci.
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
3
Merci
Un code bien indenté est indenté de telle manière que chaque début de bloc et sa fin de bloc se retrouvent au même niveau d'indentation.
Sous cette forme (exemple) , donc :
Private sub .....
  with ....
    .....
      If ..... Then ....
        .....
      end if
    ....
  end with
end sub



________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.

Merci ucfoutu 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 100 internautes ce mois-ci

Commenter la réponse de ucfoutu
Messages postés
1855
Date d'inscription
jeudi 23 mai 2002
Dernière intervention
24 juin 2018
0
Merci
 Bonjour,


Il manque deux "End If"

jean-marc
Commenter la réponse de cs_JMO
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
0
Merci
Bonjour (et un salut à JMO)
Ce dont il se serait immédiatement rendu compte en indentant proprement son code.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Commenter la réponse de ucfoutu
Messages postés
1270
Date d'inscription
mardi 11 novembre 2003
Dernière intervention
24 juillet 2013
0
Merci
bonjour à tous
pourquoi ne pas utiliser le IF THEN ELSE ?

If Sheets("CR_INTER").Range("P2").Value = "" Then
Range("P2").FormulaR1C1 = "1"
Range("Q2").FormulaR1C1 = CLICHE.Value
End If
If Sheets("CR_INTER").Range("P2").Value <> "" Then
Range("P2").FormulaR1C1 = Range("Q2").Value + 1
Range("Q2").FormulaR1C1 = Range("Q2").Value + CLICHE.Value
End If


à remplacer par

If Sheets("CR_INTER").Range("P2").Value = "" Then
Range("P2").FormulaR1C1 = "1"
Range("Q2").FormulaR1C1 = CLICHE.Value
Else
Range("P2").FormulaR1C1 = Range("Q2").Value + 1
Range("Q2").FormulaR1C1 = Range("Q2").Value + CLICHE.Value
End If


La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.

GRENIER Alain
Commenter la réponse de cs_Galain
Messages postés
41
Date d'inscription
vendredi 3 décembre 2010
Dernière intervention
11 février 2014
0
Merci
Bonjour, ok ucfoutu, et comment on indente proprement son code? Si je dois retenir des mes erreurs autant que je le fasse bien.
Commenter la réponse de r0man0
Messages postés
41
Date d'inscription
vendredi 3 décembre 2010
Dernière intervention
11 février 2014
0
Merci
Bonjour, tout le monde.
Bien merci, je reprends tous depuis le début.
J'avance, à cloche pied, mais j'avance, encore merci.
Commenter la réponse de r0man0
Messages postés
41
Date d'inscription
vendredi 3 décembre 2010
Dernière intervention
11 février 2014
0
Merci
Bonjour, merci tout le monde pour votre aide si précieuse.
Commenter la réponse de r0man0
0
Merci
Bonjour,

Ces lignes sont incorrectes en VB6-VBA, mais correctes en VB.net et merci au transtypage automatique de VBA et au type variant qui te sauve la mise:

Dim Wss, WsC As Worksheet

Wss n'est pas de type Worksheet mais de type Variant. Seul WcC est du type Worksheet

Dim TBLF, MaPlage, MPD, Destination As Range

TBLF, MaPlage ne sont pas du type Range, mais de type Variant. Seule Destination est de type Range

Dim DerLigS, i As Long

DerLigS n'est pas du type Long mais est du type Variant. Seul i est du type Long

En VB6 - VBA, toute variable non explicitement définie est du type Variant par défaut.
Commenter la réponse de Utilisateur anonyme

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.