Erreur 5 dans programmation VBA
Bonjour à toutes et à tous,
J'ai un petit problème lorsque j'exécute ma macro : "erreur 5" apparait à l'écran.
Je joins mon fichier en espérant que quelqu'un pourra m'aider
L'erreur apparait sur la partir surlignée
Merci pour votre aide
Dim X, S
Dim Ligne, Nb_Xi
Dim Xetoil, Setoil As Double
Dim Xietoil, Phi As Double
Dim Xi_Tableau() As Double
Sub Tableau()
'Trier les données par ordre croissant
ActiveWorkbook.Worksheets("Données 2").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Données 2").Sort.SortFields.Add Key:=Range("B2:B15"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Données 2").Sort
.SetRange Range("B1:B15")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
'Stockage de données dans un"tableau"
Ligne = 2
Nb_Xi = 0
'Ecrire dans une ligne après Xi données entrées non définies
Application.Worksheets("Données 2").Cells(Ligne + 1, 1).Value = "Moyenne"
Application.Worksheets("Données 2").Cells(Ligne + 2, 1).Value = "Ecart-Type"
Application.Worksheets("Données 2").Cells(Ligne + 3, 1).Value = "Moyenne Robuste"
Application.Worksheets("Données 2").Cells(Ligne + 4, 1).Value = "Ecart-Type"
Application.Worksheets("Données 2").Cells(Ligne + 5, 1).Value = "Phi"
'Appliquer les formules dans une ligne après Xi données entrées non définies
Application.Worksheets("Données 2").Cells(Ligne + 1, 2).Value = WorksheetFunction.Average(Xi_Tableau)Application.Worksheets("Données 2").Cells(Ligne + 2, 2).Value = WorksheetFunction.StDev(Xi_Tableau)
Application.Worksheets("Données 2").Cells(Ligne + 3, 2).Value = WorksheetFunction.Median(Xi_Tableau)
Application.Worksheets("Données 2").Cells(Ligne + 4, 2).Value = 1.483 * WorksheetFunction.Median(Xi_Tableau)
Application.Worksheets("Données 2").Cells(Ligne + 5, 2).Value = 1.5 * 1.483 * WorksheetFunction.Median(Xi_Tableau)
'Calcul et variable
X = WorksheetFunction.Average(Xi_Tableau)
S = WorksheetFunction.StDev(Xi_Tableau)
Xetoil = WorksheetFunction.Median(Xi_Tableau)
Setoil = 1.483 * WorksheetFunction.Median(Xi_Tableau)
Phi = 1.5 * 1.483 * WorksheetFunction.Median(Xi_Tableau)
Xetoil = 1.483 * WorksheetFunction.Median(Xi_Tableau) - 1.5 * 1.483 * WorksheetFunction.Median(Xi_Tableau)
End Sub
Bonsoir
Sans pouvoir tester
Vérifie que ton tableau Xi_Tableau est bien initialisé
Bonsoir,
Merci pour ton aide.
Le programme fonctionne jusqu'à ce que je voudrais afficher moyenne, écart-type,... dans la colonne A à la suite de la dernière valeur.
Je débute dans la programmation VBA.
Le but de l'exercice est de calculer la moyenne robuste, l'écart-type robuste, d'incrémenter les valeurs dans un tableau et de finir par le calcul d'un z-score.
J'espère que ces explications pourront t'aider à mieux comprendre mon problème
Bonsoir
D'après ce que tu marques c'est dès que tu veux calculer la moyenne sur le tableau Xi_Tableau
alors
Banzai64 a écrit :Vérifie que ton tableau Xi_Tableau est bien initialisé
Si ce n'est pas ça il faudra ton fichier
Pas spécialiste des formules alors une moyenne robuste (je ne savais pas qu'il existait une moyenne faible - on apprend tous les jours)
Rebonsoir Banzaï
En fait je dois entrer des valeurs numériques( entières ou décimales) dans la colonne B2.
- 1er temps est de ranger les valeurs par ordre croissant : à priori j'ai réussi à le faire.
- 2ème temps : je dois calculer la moyenne et l'écart-type et insérer les résultats dans la colonne A dans une cellule qui suit la dernière valeur numérique entrée.
- 3ème temps : calculer les valeurs x*(médiane de Xi) et s*(1.483xmédiane de Xi-x*)
- 4éme temps : mettre à jour les valeurs x* et s* par itération.
Ce que j'ai mis sur le post est le fichier sur lequel je travaille, pour l'instant je n'ai rien d'autre à te proposer.
Voilà en résumé le travail que je dois réaliser,
bonsoir,
je mets mon fichier Excel au cas ou.
la macro qui ne fonctionne pas se trouve sur la feuille "Données 2".
Bonsoir
Je crois que l'on ne se comprend pas
J'ai reproduit l'erreur 5 lorsque le tableau n'est pas initialisé c'est pour ça que je te redemande de vérifier ce point
Voici les tests que j'ai fait
1er Test
Dim X, S
Dim Ligne, Nb_Xi
Dim Xetoil, Setoil As Double
Dim Xietoil, Phi As Double
Dim Xi_Tableau() As Double
Sub test()
Dim I As Integer
Dim Ligne As Long
Ligne = 5
ReDim Xi_Tableau(20)
For I = 0 To UBound(Xi_Tableau)
Xi_Tableau(I) = Range("A" & I + 1)
Next I
Application.Worksheets("Données 2").Cells(Ligne + 1, 2).Value = WorksheetFunction.Average(Xi_Tableau)
Erase Xi_Tableau
End SubFonctionnement normal : La moyenne exacte est bien affichée
2ème test
Dim X, S
Dim Ligne, Nb_Xi
Dim Xetoil, Setoil As Double
Dim Xietoil, Phi As Double
Dim Xi_Tableau() As Double
Sub test()
Dim I As Integer
Dim Ligne As Long
Ligne = 5
' ReDim Xi_Tableau(20)
' For I = 0 To UBound(Xi_Tableau)
' Xi_Tableau(I) = Range("A" & I + 1)
' Next I
Application.Worksheets("Données 2").Cells(Ligne + 1, 2).Value = WorksheetFunction.Average(Xi_Tableau)
Erase Xi_Tableau
End SubMessage d'erreur 5
[b][u]ÉDIT: Je viens de tester ton fichier et aucun problème
Par rapport à ta première macro dans celle du fichier il y a bien l’initialisation du tableau Xi_Tableau
Problème réglé ?[/u][/b]
rebonsoir banzaî,
En effet cela fonctionne, de plus j'avais oublié quelques lignes de commandes dans ma programmation.
En tout cas merci beaucoup pour ton aide.
Bonne nuit.