End if sans bloc If
bonjour le forum
j'ai un message dans le code çi-dessous qui me dit"And If sans bloc If" et n'étant pas doué en vba je ne vois ou est l'erreur.
Si quelqu'un peut m'aider,merci d'avance
Sub recap()
Dim Cel As Range, X As Byte, y As Byte
Dim TbloU(1 To 9, 1 To 9)
Dim TbloD(10 To 19, 10 To 19)
Dim TbloE(20 To 29, 20 To 29)
Dim TbloF(30 To 39, 30 To 39)
Dim TbloG(40 To 49, 40 To 49)
Dim TbloH(50 To 59, 50 To 59)
Dim TbloK(60 To 70, 60 To 70)
Dim DerLig As Long, I As Long
Dim J As Byte
DerLig = Cells(Rows.Count, 2).End(xlUp).Row - 1
For I = 2 To DerLig
For Each Cel In Cells(I, 2).Resize(1, 20)
Cells(I, 2).Resize(1, 20).Select
If Cel.Value <> "" Then
For J = 2 To 11
Select Case Cel.Value
Case Is < 10
If Cells(I + 1, J).Value < 10 Then
TbloU(Cel, Cells(I + 1, J).Value) = TbloU(Cel, Cells(I + 1, J).Value) + 1
End If
Case 10 To 19
If Cells(I + 1, J).Value >= 10 And Cells(I + 1, J).Value < 20 Then _
TbloD(Cel, Cells(I + 1, J).Value) = TbloD(Cel, Cells(I + 1, J).Value) + 1
[color=#40BFFF] End If[/color]
Case 20 To 29
If Cells(I + 1, J).Value >= 20 And Cells(I + 1, J).Value < 30 Then _
TbloE(Cel, Cells(I + 1, J).Value) = TbloE(Cel, Cells(I + 1, J).Value) + 1
End If
Case 30 To 39
If Cells(I + 1, J).Value >= 30 And Cells(I + 1, J).Value < 40 Then
TbloF(Cel, Cells(I + 1, J).Value) = TbloF(Cel, Cells(I + 1, J).Value) + 1
End If
Case 40 To 49
If Cells(I + 1, J).Value >= 40 And Cells(I + 1, J).Value < 50 Then _
TbloG(Cel, Cells(I + 1, J).Value) = TbloG(Cel, Cells(I + 1, J).Value) + 1
End If
Case 50 To 59
If Cells(I + 1, J).Value >= 50 And Cells(I + 1, J).Value < 60 Then _
TbloH(Cel, Cells(I + 1, J).Value) = TbloH(Cel, Cells(I + 1, J).Value) + 1
End If
Case 60 To 70
If Cells(I + 1, J).Value >= 60 And Cells(I + 1, J).Value < 71 Then _
TbloK(Cel, Cells(I + 1, J).Value) = TbloK(Cel, Cells(I + 1, J).Value) + 1
End If
End Select
Next J
End If
Next Cel
Next I
Range("X2").Resize(9, 9) = Application.Transpose(TbloU)
Range("X13").Resize(10, 10) = Application.Transpose(TbloD)
Range("X25").Resize(10, 10) = Application.Transpose(TbloE)
Range("X37").Resize(10, 10) = Application.Transpose(TbloF)
Range("X49").Resize(10, 10) = Application.Transpose(TbloG)
Range("X61").Resize(10, 10) = Application.Transpose(TbloH)
Range("X73").Resize(11, 11) = Application.Transpose(TbloK)
End Sub
merci
- Messages
- 358
- Excel
- 2003-2007 FR
- Inscrit
- 02/08/2011
- Emploi
- Consultant Test Performance / Audit
Salut,
Enlève les '_' après les instructions Then
Tu peux écrire :
if toto>1 then msgbox toto
ou
if toto > 1 then
msgbox toto
end if
si tu mets un '_' a la fin du then cela correspond a une continuité de la ligne, comme si tu écrivais :
if toto>1 then msgbox toto ' et dans ce cas pas besoin de endif
Voila ++
Bigdams
Bonjour
Bonjour Bigdams
Si dans la ligne If ...... Then tu as le caractère de continuité le "_" (le souligné (Touche 8 )) pas besoin de mettre le End If
Exemple dans la ligne
Case 10 To 19
If Cells(I + 1, J).Value >= 10 And Cells(I + 1, J).Value < 20 Then _
TbloD(Cel, Cells(I + 1, J).Value) = TbloD(Cel, Cells(I + 1, J).Value) + 1
[barrer]'End If[/barrer]
Mais obligatoire dans cette partie du code
Case 30 To 39
If Cells(I + 1, J).Value >= 30 And Cells(I + 1, J).Value < 40 Then
TbloF(Cel, Cells(I + 1, J).Value) = TbloF(Cel, Cells(I + 1, J).Value) + 1
End If
bonjour Banzai64,Bigdams,le forum
merci pour l'explication,par mon programme ne comptabilise pas les trentaines,cinquantaines,soixantaines et fait des erreurs dans les quarantaines,pour ce qui est des unités,dizaines et vingtaines c'est bon.
ou est l'erreur
merci
Bonjour
Comme je ne comprends pas trop la macro, cela ne viendrait pas du fait que ta boucle va de 2 à 11 (à la place de 2 à 21) ?
'
'
'
If Cel.Value <> "" Then
For J = 2 To 11
Select Case Cel.Value
Case Is < 10
'
'
'
re banzai64,le forum
exact banzai,super
merci