VBA: Erreur d'execution 13: incompatibilité de type

Ludoboss

XLDnaute Nouveau
Bonjour à toutes et tous!

Après m'être longuement inspiré de votre forum pour me sortir des nombreux pièges d'excel par le passé (avec succès jusqu'ici grâce à vos compétences et connaissances), je me lance en m'inscrivant (enfin...).
Et voici ma première colle:
Je voulais me lancer dans la conception d'un fichier excel pour mes statistiques de golf, ainsi que pour les joueurs du club dont je m'occupe, avec des userform et plein de trucs jolis, mais j'ai rapidement vu qu'avec le peu de compétences que j'ai en VBA, je ne m'en sortirais jamais.
J'ai trouvé un fichier déjà fait, malheureusement en Anglais mais très bien, cependant il m'annonce une erreur d'exécution 13: incompatibilité de type sur la formule suivante:

Sub DoDataArray()
Dim iNoHoles As Integer
Dim x As Integer

With ThisWorkbook.Sheets("Scorecard")
vScoreData(1) = .Range("PlayDate").Text
vScoreData(2) = .Range("Golfer").Text
vScoreData(3) = .Range("Course").Text
vScoreData(4) = .Range("TruePar").Value
iNoHoles = .Range("Holes").Value
If .Range("CourseRating").Value >= 40 Then _
vScoreData(5) = .Range("CourseRating").Value * iNoHoles / 18 Else _
vScoreData(5) = .Range("CourseRating").Value * iNoHoles / 9
vScoreData(6) = .Range("SlopeRating").Value
vScoreData(7) = .Range("Score").Value
vScoreData(8) = iNoHoles
vScoreData(9) = .Range("FwayChances").Value
vScoreData(10) = .Range("DriveDistance").Value
vScoreData(11) = .Range("Fairways").Value
vScoreData(12) = .Range("Greens").Value
vScoreData(13) = .Range("BirdieDistance").Value
vScoreData(14) = .Range("ParFives").Value
vScoreData(15) = .Range("FiveScores").Value
vScoreData(16) = .Range("ParFours").Value
vScoreData(17) = .Range("FourScores").Value
vScoreData(18) = .Range("ParThrees").Value
vScoreData(19) = .Range("ThreeScores").Value
vScoreData(20) = .Range("Hardest").Value
vScoreData(21) = .Range("Medium").Value
vScoreData(22) = .Range("Easiest").Value
vScoreData(23) = .Range("BirdChances").Value
vScoreData(24) = .Range("SubPars").Value - .Range("Eagles").Value
vScoreData(25) = .Range("Eagles").Value
vScoreData(26) = .Range("Bogies").Value
vScoreData(27) = .Range("Doubles").Value
vScoreData(28) = .Range("Triples").Value
vScoreData(29) = .Range("GrassAttempts").Value
vScoreData(30) = .Range("GrassSaves").Value
vScoreData(31) = .Range("SandAttempts").Value
vScoreData(32) = .Range("SandSaves").Value
vScoreData(33) = .Range("GrassDistance").Value
vScoreData(34) = .Range("SandDistance").Value
vScoreData(35) = .Range("Putts").Value
vScoreData(36) = .Range("PuttsPerGIR").Value
vScoreData(37) = .Range("PuttLength").Value
vScoreData(38) = .Range("PuttLengthMade").Value
vScoreData(39) = .Range("ThreePutts").Value
vScoreData(40) = .Range("OnePutts").Value
vScoreData(41) = .Range("PuttChances").Value
vScoreData(42) = .Range("PuttPerform").Value
vScoreData(43) = .Range("PRatings").Value
vScoreData(44) = .Range("PRatings").Offset(1, 0).Value
vScoreData(45) = .Range("PRatings").Offset(2, 0).Value
vScoreData(46) = .Range("PRatings").Offset(3, 0).Value
vScoreData(47) = .Range("BounceBackChances").Value
vScoreData(48) = .Range("BounceBackP").Value
vScoreData(49) = .Range("BounceBackB").Value
vScoreData(50) = .Range("Penalty").Value
vScoreData(51) = .Range("ScoreType").Formula
vScoreData(52) = .Range("Conditions").Value
vScoreData(53) = .Range("Conditions").Offset(1, 0).Value
vScoreData(54) = .Range("Conditions").Offset(2, 0).Value
vScoreData(55) = .Range("Conditions").Offset(3, 0).Value
vScoreData(56) = .Range("Comments").Formula
vScoreData(57) = .Range("StartData").Formula
vScoreData(58) = .Range("StartData").Offset(0, 1).Formula
vScoreData(59) = .Range("StartData").Offset(0, 2).Formula
vScoreData(60) = .Range("StartData").Offset(0, 3).Formula
vScoreData(61) = .Range("StartData").Offset(0, 4).Formula
vScoreData(62) = .Range("StartData").Offset(0, 5).Formula
vScoreData(63) = .Range("StartData").Offset(0, 6).Formula
vScoreData(64) = .Range("StartData").Offset(0, 7).Formula
vScoreData(65) = .Range("StartData").Offset(0, 8).Formula
vScoreData(66) = .Range("StartData").Offset(0, 10).Formula
vScoreData(67) = .Range("StartData").Offset(0, 11).Formula
vScoreData(68) = .Range("StartData").Offset(0, 12).Formula
vScoreData(69) = .Range("StartData").Offset(0, 13).Formula
vScoreData(70) = .Range("StartData").Offset(0, 14).Formula
vScoreData(71) = .Range("StartData").Offset(0, 15).Formula
vScoreData(72) = .Range("StartData").Offset(0, 16).Formula
vScoreData(73) = .Range("StartData").Offset(0, 17).Formula
vScoreData(74) = .Range("StartData").Offset(0, 18).Formula
End With
End Sub

L'erreur venant de la ligne en orange.
Je ne m'y connais quasiment pas en VBA, mais en plus j'ai du mal à comprendre ce à quoi elle renvoie sous excel (car la formule =Si, alors, sinon sur excel je maîtrise en temps normal).

Je viens donc vers vous en ultime recours, sinon j'arrêterais le golf tant pis! Non je plaisante.
Je vous remercie infiniment à l'avance pour votre aide précieuse, et merci à ce forum d'exister!

A très vite j'espère.
Ludo
 
Dernière édition:

Ludoboss

XLDnaute Nouveau
Re : VBA: Erreur d'execution 13: incompatibilité de type

Colle les feuilles que je mets en pièce jointe dans ton ordi, dans le même dossier que NScard20 et NScore20, et choisis une des deux quand on te la propose.
PS: pour rentrer les scores, aucun soucis, tu cliques sur enter score puis ok, et ensuite enter à chaque trou (hole en haut a gauche de la fenetre)
Normalement quand tu arrives au dernier trou, elle disparait et ca a rempli le tableau de la feuille excel.
Ensuite fais, Save Score, et c'est à ce niveau là que j'ai une erreur.
 

Pièces jointes

  • Golf.zip
    279.3 KB · Affichages: 38

Staple1600

XLDnaute Barbatruc
Re : VBA: Erreur d'execution 13: incompatibilité de type

Re

J'avais déjà fait cela avec les feuilles "bidons" que j'avais créé.

Toujours pas de bug.

Peut-être effectivement il s'agit d'un problème de version d' Excel et/ou d'OS.

Car ici ce soir sur un PC/XP/XL2003, pas de souci pour le moment.

Peut-être qu'en contactant l'auteur du soft: Daniel J. Ireland , tu aurais plus de chance d'être aider.
 

Staple1600

XLDnaute Barbatruc
Re : VBA: Erreur d'execution 13: incompatibilité de type

Non


Je n'ai pas tout rempli.
J'ai rempli le minimum et cliquer sur tous les boutons qui s'offraient à moi.

J'ai aussi lancer des macros à partir de VBE, et pour le moment je n'ai eu aucun message d'erreur.
 

Ludoboss

XLDnaute Nouveau
Re : VBA: Erreur d'execution 13: incompatibilité de type

Je ne sais pas on regarde pas tous les 2 au même endroit... J'ai toujours l'erreur, je ne comprends pas.
Pour toi l'écriture sous VBA est bonne?
Car à un moment j'ai essayé de décaler le Else dans la formule par exemple, et je suis passé de cette erreur à l'erreur de compilation "Else sans If"
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : VBA: Erreur d'execution 13: incompatibilité de type

Re

Désolé, je n'ai pas le temps de poursuivre ce soir plus avant les investigations (je vais au dodo d'ici peu)
Si tu as l'occasion testes cet appli sur un autre PC (sous XP+XL2003)
ou dans une machine virtuelle XP+XL2003

En dernier recours, joindre l'auteur me semble le chemin le plus court vers une solution.
(En plus cela devrait lui faire plaisir de voir que son logiciel sera utilisé par un joueur européen francophone ;) )

EDITION: Bonsoir Si... j'avais oublié ce chemin encore plus court : lire et chercher à comprendre le code
(ce que je n'avais fait qu'en diagonale)
Merci à toi de tes lumières.
 
Dernière édition:

Si...

XLDnaute Barbatruc
Re : VBA: Erreur d'execution 13: incompatibilité de type

salut

If .Range("CourseRating").Value >= 40 Then _
vScoreData(5) = .Range("CourseRating").Value * iNoHoles / 18 Else _
vScoreData(5) = .Range("CourseRating").Value * iNoHoles / 9

l'erreur pourrait venir la cellule B4 nommée CourseRating". Cette cellule doit contenir du numérique. Donc choisis bien le séparateur : la virgule ou le point (en fonction de tes paramètres nationaux).
 

Ludoboss

XLDnaute Nouveau
Re : VBA: Erreur d'execution 13: incompatibilité de type

Bonjour,

excusez moi j'ai dû m'absenter un moment pour le boulot.
Merci à Staple d'avoir passé du temps sur mon dossier.
La bonne réponse vient de Si... et je l'en remercie!
En effet il y avait une case numérique où j'avais mis 70.4 au lieu de 70,4. Du coup c'est cette virgule qui était la cause de l'erreur.
Ce n'est pas le fichier qui avait un problème, mais moi qui avait oublié ce qu'est le numérique...
Merci Si..., problème résolu grâce à toi, je m'en vais donc de ce pas régler les 25 dollars à ce monsieur génie d'excel.
 

Discussions similaires

Statistiques des forums

Discussions
315 094
Messages
2 116 153
Membres
112 670
dernier inscrit
Flow87