VBA - problème de codage - erreur 400
flavinou7263
Messages postés
33
Statut
Membre
-
flavinou7263 Messages postés 33 Statut Membre -
flavinou7263 Messages postés 33 Statut Membre -
Hello tout le monde
je sollicite aujourd'hui votre car j'ai créer un code VBA où j'ai une erreur 400. J'ai localisé deux endroits possibles (4 mais trois sont identiques), en gras dans le code ci dessous, dans la macro mais ne sais pas ce qui cloche.
Merci d'avance pour votre aide
je sollicite aujourd'hui votre car j'ai créer un code VBA où j'ai une erreur 400. J'ai localisé deux endroits possibles (4 mais trois sont identiques), en gras dans le code ci dessous, dans la macro mais ne sais pas ce qui cloche.
Merci d'avance pour votre aide
Sub pts_slalom()
Dim coef_K1H, coef_C1H, coef_K1D, coef_C1D, coef_C2H, coef_C2D, coef_C2M As Integer
Dim cat, lettre, course, div, phase As String
Dim nb, malus_div, malus_phase, malus_fin, tps5 As Integer
Dim div_N1, div_N2_PON12, div_N3_PON23_REG As Integer
'Type de course
course = InputBox("Selectionnez le type de course avec le numéro en début de ligne :" & Chr(10) & "1 - Course N1" & Chr(10) & "2 - Course N2 ou Play Off N1-2" & Chr(10) & "3 - Course N3 - Play Off N2-3 et Régionale", "Type de course")
'Division de course
div = InputBox("Selectionnez la division avec le numéro en début de ligne :" & Chr(10) & "1-Chpt France élite" & Chr(10) & "2-Chpt C/J/C2S" & Chr(10) & "3-Finale N1/2/3" & Chr(10) & "4-1/2 Finale N3" & Chr(10) & "5-Manche CDF N1/2/3" & Chr(10) & "6-PO N2/3" & Chr(10) & "7-PO N1/2" & Chr(10) & "8-Chpt France MAster" & Chr(10) & "9-Chpt Régional" & Chr(10) & "10-Sélectif régional", "Division")
'Phase de course
phase = InputBox("Selectionnez la phase de course avec le numéro en début de ligne :" & Chr(10) & "1-Q1 ou Q" & Chr(10) & "2-Q2" & Chr(10) & "3-1/2 Finale" & Chr(10) & "4-Finale", "Phase de course")
'Calcul du malus
Range("R8") = "Malus de division"
Range("R9") = "Malus de phase"
Select Case div
Case Is = "1"
malus_div = 0
MsgBox "Utilisez le programme spécifique aux piges (non basé sur un temps scratch)"
Exit Sub
Case Is = "2"
malus_div = 0
Case Is = "3"
malus_div = 0
Case Is = "4"
malus_div = 0
Case Is = "5"
malus_div = 5
Case Is = "6"
malus_div = 0
Case Is = "7"
malus_div = 0
Case Is = "8"
malus_div = 20
Case Is = "9"
malus_div = 40
Case Is = "10"
malus_div = 40
Case Else
MsgBox "Erreur"
Exit Sub
End Select
Select Case phase
Case Is = "1"
malus_phase = 10
Case Is = "2"
MsgBox "Pas de calcul de point"
Exit Sub
Case Is = "3"
malus_phase = 5
Case Is = "4"
malus_phase = 0
Case Else
MsgBox "Erreur"
Exit Sub
End Select
Range("S8") = malus_div
Range("S9") = malus_phase
'Définition des coefficients inter catégorie
coef_K1H = 1
coef_K1D = 1.13
coef_C1H = 1.05
coef_C1D = 1.2
coef_C2H = 1.1
coef_C2D = 1.3
coef_C2M = 1.2
'Définition des colonnes
Range("K1") = "Temps scratch"
Range("L1") = "Temps fictif"
Range("M1") = "Ecart moyenne"
Range("N1") = "Points bruts"
Range("O1") = "Points finaux"
Range("P1") = "Points officiels"
'Calcul du temps scratch
For i = 2 To 154
If Range("A" & i) <> "" Then
cat = Range("A" & i)
Select Case cat
Case Is = "K1H"
Range("K" & i) = coef_K1H * Range("H" & i)
Case Is = "K1D"
Range("K" & i) = coef_K1D * Range("H" & i)
Case Is = "C1H"
Range("K" & i) = coef_C1H * Range("H" & i)
Case Is = "C1D"
Range("K" & i) = coef_C1D * Range("H" & i)
Case Is = "C2H"
Range("K" & i) = coef_C2H * Range("H" & i)
Case Is = "C2D"
Range("K" & i) = coef_C2D * Range("H" & i)
Case Is = "C2M"
Range("K" & i) = coef_C2M * Range("H" & i)
Case Else
Exit Sub
End Select
End If
Next i
'Calcul du temps fictif
For i = 2 To 154
If Range("A" & i) <> "" Then
cat = Range("A" & i)
Select Case cat
Case Is = "K1H"
Range("L" & i) = (1000 * Range("K" & i)) / (Range("J" & i) + 1000)
Case Is = "K1D"
Range("L" & i) = (1000 * Range("K" & i)) / (Range("J" & i) + 1000)
Case Is = "C1H"
Range("L" & i) = (1000 * Range("K" & i)) / (Range("J" & i) + 1000)
Case Is = "C1D"
Range("L" & i) = (1000 * Range("K" & i)) / (Range("J" & i) + 1000)
Case Is = "C2H"
Range("L" & i) = (1000 * Range("K" & i)) / (Range("J" & i) + 1000)
Case Is = "C2D"
Range("L" & i) = (1000 * Range("K" & i)) / (Range("J" & i) + 1000)
Case Is = "C2M"
Range("L" & i) = (1000 * Range("K" & i)) / (Range("J" & i) + 1000)
Case Else
Exit Sub
End Select
End If
Next i
'limite pour temps de base
div_N1 = 100
div_N2_PON12 = 200
div_N3_PON23_REG = 500
Range("R1") = "Tps moyen 10"
Range("R2") = "Tps moyen 8 - TB"
Range("R10") = "Pena"
Select Case course
Case Is = "1"
nb = "=countif(J:J,< "" & div_N1 & "")"
If nb >= 10 Then
Range("S1").Formula = "=average(L2:L11)"
For i = 2 To 11
Range("M" & i).Formula = Range("S1") - Range("L" & i)
Next i
Range("T1").Formula = "=max(M2:M11)"
Range("T2").Formula = "=min(M2:M11)"
Range("S2").Formula = "=sumproduct((M2:M11<T1)*(M2:M11>T2)*(L2:L11))/8"
For i = 2 To 154
Range("N" & i).Formula = 1000 * (Range("K" & i) - Range("S2")) / Range("S2")
Next i
Else
<bold>Select Case nb
Case Is = "9"
Range("S10") = 20
Case Is = "8"
Range("S10") = 40
Case Is = "7"
Range("S10") = 60
Case Is = "6"
Range("S10") = 80
Case Is <= "5"
MsgBox "Erreur - pas assez de bateaux"
Exit Sub
Case Else
MsgBox "Erreur"
Exit Sub
End Select</bold>
End If
Case Is = "2"
nb = "=countif(J:J,< ""& div_N2_PON12 &"")"
If nb >= 10 Then
Range("S1").Formula = "=average(L2:L11)"
For i = 2 To 11
Range("M" & i).Formula = Range("S1") - Range("L" & i)
Next i
Range("T1").Formula = "=max(M2:M11)"
Range("T2").Formula = "=min(M2:M11)"
Range("S2").Formula = "=sumproduct((M2:M11<T1)*(M2:M11>T2)*(L2:L11))/8"
For i = 2 To 154
Range("N" & i).Formula = 1000 * (Range("K" & i) - Range("S2")) / Range("S2")
Next i
Else
<bold> Select Case nb
Case Is = "9"
Range("S10") = 20
Case Is = "8"
Range("S10") = 40
Case Is = "7"
Range("S10") = 60
Case Is = "6"
Range("S10") = 80
Case Is <= "5"
MsgBox "Erreur - pas assez de bateaux"
Exit Sub
Case Else
MsgBox "Erreur"
Exit Sub
End Select</bold>
End If
Case Is = "3"
nb = "=countif(J:J,< ""& div_N3_PON23_REG &"")"
If nb >= 10 Then
Range("S1").Formula = "=average(L2:L11)"
For i = 2 To 11
Range("M" & i).Formula = Range("S1") - Range("L" & i)
Next i
Range("T1").Formula = "=max(M2:M11)"
Range("T2").Formula = "=min(M2:M11)"
Range("S2").Formula = "=sumproduct((M2:M11<T1)*(M2:M11>T2)*(L2:L11))/8"
For i = 2 To 154
Range("N" & i).Formula = 1000 * (Range("K" & i) - Range("S2")) / Range("S2")
Next i
Else
Select Case nb
<bold>Case Is = "9"
Range("S10") = 20
Case Is = "8"
Range("S10") = 40
Case Is = "7"
Range("S10") = 60
Case Is = "6"
Range("S10") = 80
Case Is <= "5"
MsgBox "Erreur - pas assez de bateaux"
Exit Sub
Case Else
MsgBox "Erreur"
Exit Sub
End Select</bold>
End If
Case Else
Exit Sub
End Select
'Pena temps ref
Range("R11") = "Moyenne 5 tps"
Range("R12") = "Pena tps"
Range("S11").Formula = "=average(K2:K6)"
tps5 = Range("S11").Value
Select Case tps5
Case Is < "64"
Range("S12") = 90
Case Is <= "83"
Range("S12").Formula = "=power(max(0,abs(95-S11)-10),2)/5"
Case Else
Range("S12") = 0
End Select
'coefficent correcteur
Range("R4") = "PN"
Range("R5") = "PC"
Range("R6") = "C"
Range("S4").Formula = "=sum(J2:J154)"
Range("S5").Formula = "=sum(N2:N1000)"
Range("S6").Formula = "=S4/S5"
'calcul points finaux = points bruts X C + les malus
For i = 2 To 154
<bold>Range("T3").Formula = "=left(B"" & i & "",1)"
lettre = Range("T3").Value
Select Case lettre
Case Is = "A"
malus_fin = 0
Case Is = "B"
malus_fin = 5
Case Else
malus_fin = 0
End Select</bold>
Range("O" & i) = Range("N" & i) * Range("S6") + Range("S8") + Range("S9") + Range("S10") + Range("S12") + malus_fin
Range("P" & i) = Range("O" & i)
Next i
End Sub
A voir également:
- Erreur 400 excel
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
- Excel trier par ordre croissant chiffre - Guide
7 réponses
Bonjour,
Un exemple de votre fichier avec explications serait le bienvenu.
Pour transmettre un fichier,
Veillez à ce qu'il n'y ait PAS DE DONNEES CONFIDENTIELLES
il faut passer par un site de pièce jointe tel que cjoint.com
Allez sur ce site : https://www.cjoint.com/
Clic sur parcourir,
Cherche ton fichier,
clic sur ouvrir,
Clic sur "Créer le lien cjoint",
Copier le lien,
Revenir ici le coller dans une réponse...
Cordialement
Un exemple de votre fichier avec explications serait le bienvenu.
Pour transmettre un fichier,
Veillez à ce qu'il n'y ait PAS DE DONNEES CONFIDENTIELLES
il faut passer par un site de pièce jointe tel que cjoint.com
Allez sur ce site : https://www.cjoint.com/
Clic sur parcourir,
Cherche ton fichier,
clic sur ouvrir,
Clic sur "Créer le lien cjoint",
Copier le lien,
Revenir ici le coller dans une réponse...
Cordialement
je me doute, je n'ai pas réussi à le joindre tout à l'heure
le voici
https://www.cjoint.com/c/JCArPTRxCLW
le voici
https://www.cjoint.com/c/JCArPTRxCLW
Bonjour a vous deux,
flavinou7263
Hier, je décortiquais votre code quand JCB40 vous a demande votre fichier. En passant, pas simple a utiliser pour avoir une erreur.
Plusieurs choses:
_
_ les lignes de ce genre:
ceci devrait aller mieux:
flavinou7263
Hier, je décortiquais votre code quand JCB40 vous a demande votre fichier. En passant, pas simple a utiliser pour avoir une erreur.
Plusieurs choses:
_
Range("T3").Formula = "=left(B"" & i & "",1)", il y a des doubles cote en trop qui provoque l'erreur
Range("T3").Formula = "=left(B" & i & ",1)"
_ les lignes de ce genre:
nb = "=countif(J:J,< "" & div_N1 & "")", me surprendrais enormement si vous avez un nombre en resultat, meme en corrigeant les erreurs de double cote (
"=countif(J:J,< " & div_N1 & ")")
ceci devrait aller mieux:
nb = Application.CountIf(Columns("J"), "<" & div_N1)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
ok alors il faut que j'écrive quoi pour compter le nombre de valeur de la colonne J inférieur à ma variable ?