Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2019 VBA Erreur d'exécution "9" dans une plage de tableau

piskely

XLDnaute Junior
Bonjour à tous,
j'ai besoin d'un coup de main pour finaliser mon projet.
Il s'agit de la plage ("C5:C60") qui contient les rencontres aau format (equipeA vs. equipeB)
et la plage ("D5:60") qui contient les résultats au format (scoreA-scoreB).
Si toute la plage est remplie, il n y a aucun problème mais s'il y a une cellule de la plage qui est vide: j'ai ce message d'erreur (Erreur d'exécution "9").
je vous mets le code et les niveaux où ça bloc.
Merci d'avance.

VB:
Sub classement()

Dim i As Integer
Dim j As Integer
Dim equipeA As String
Dim equipeB As String
Dim resultat As String
Dim scoreA As Integer
Dim scoreB As Integer

' Remise à zéro du tableau
Range("I5:Q12").Value = 0

' Boucle pour parcourir toutes les rencontres
For i = 5 To 60

' Récupération des noms des équipes et du résultat
equipeA = Split(Range("C" & i).Value, " vs. ")(0)    '<=== si une seule cellule matchs (C) est vide
equipeB = Split(Range("C" & i).Value, " vs. ")(1)
resultat = Range("D" & i).Value
scoreA = Split(resultat, "-")(0)    '<=== si une seule cellule scores (D) est vide
scoreB = Split(resultat, "-")(1)

' Boucle pour parcourir toutes les équipes
For j = 5 To 12
    
' Mise à jour des données pour l'équipe A
If Range("H" & j).Value = equipeA Then
Range("I" & j).Value = Range("I" & j).Value + 1
If scoreA > scoreB Then
Range("J" & j).Value = Range("J" & j).Value + 1
Range("L" & j).Value = Range("L" & j).Value + 2
ElseIf scoreA < scoreB Then
Range("K" & j).Value = Range("K" & j).Value + 1
If scoreA = 0 And scoreB = 20 Then
Range("L" & j).Value = Range("L" & j).Value + 0
Range("P" & j).Value = Range("P" & j).Value + 1
Else
Range("L" & j).Value = Range("L" & j).Value + 1
End If
End If
Range("M" & j).Value = Range("M" & j).Value + scoreA
Range("N" & j).Value = Range("N" & j).Value + scoreB
Range("O" & j).Value = (Range("M" & j).Value - Range("N" & j).Value)
Range("Q" & j).Value = (Range("M" & j).Value - Range("N" & j).Value) / Range("I" & j).Value
End If

' Mise à jour des données pour l'équipe B
If Range("H" & j).Value = equipeB Then
Range("I" & j).Value = Range("I" & j).Value + 1
If scoreB > scoreA Then
Range("J" & j).Value = Range("J" & j).Value + 1
Range("L" & j).Value = Range("L" & j).Value + 2
ElseIf scoreB < scoreA Then
Range("K" & j).Value = Range("K" & j).Value + 1
If scoreB = 0 And scoreA = 20 Then
Range("L" & j).Value = Range("L" & j).Value + 0
Range("P" & j).Value = Range("P" & j).Value + 1
Else
Range("L" & j).Value = Range("L" & j).Value + 1
End If
End If
Range("M" & j).Value = Range("M" & j).Value + scoreB
Range("N" & j).Value = Range("N" & j).Value + scoreA
Range("O" & j).Value = (Range("M" & j).Value - Range("N" & j).Value)
Range("Q" & j).Value = (Range("M" & j).Value - Range("N" & j).Value) / Range("I" & j).Value
End If
 Next j
Next i

'Tri du classement
Range("L5:Q12").Sort Key1:=Range("L5:L12"), Order1:=xlDescending, _
key2:=Range("Q5:Q12"), order2:=xlDescending, Header:=xlNo

End Sub
 

vgendron

XLDnaute Barbatruc
Bonjour

au hasard.. quand ca bug.. ca bug ici
equipeB = Split(Range("C" & i).Value, " vs. ")(1)

si la range Ci est vide.. le split (1) n'existe pas

il faut donc ajouter un test sur le contenu de Ci avant de faire ton split
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…