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".

28tp2-a-amp-o-3.xlsm (23.07 Ko)

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 Sub

Fonctionnement 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 Sub

Message 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.

Rechercher des sujets similaires à "erreur programmation vba"