Macro calcul de variance

risbal

XLDnaute Nouveau
Salut tout le monde (premier post youhou :cool: )

je me suis lancé au vba, et bien m'en a pris car c'est très pratique. Toutefois je bute sur un truc...assez curieux...
Vla le problème : j'ai construit une macro (ou plutôt je suis allé la chercher sur ce forum pour la modifier) afin de calculer une variance et j'ai des résultats un peu foufous, comme des variances négatives...en exécutant pas à pas j'ai vu qu'elle sortait n'importe quoi dans le calcul de ety1, alors qu'ety2 est juste (je l'ai vérifié sur des exemples simples) qu'en plus elles ont les mêmes variables d'entrée (ou paramètres, je connais pas le nom exact :D ) et que les formules me semblent tout à fait correctes :confused:!!!

Voici le code (mais encore une fois, ce qui cloche c'est au niveau du calcul d'ety1 et je l'ai vérifié mille fois...) :
Code:
Sub Standardaweichung()

Dim TabTemp As Variant
Dim TabVariance As Variant
Dim TabIndice As Variant
Dim Maxi As Long, compt As Long, compt2 As Long, compt3 As Long, Num As Long, ety1 As Long, ety2 As Long, Proba As Long

'Charge les données dans un tableau variant temporaire
'On considère ici 18 colonnes (17 valeurs + 1 pour marquer les lignes déjà parcourues)
With Sheets("Sheet1")
    Maxi = .Range("A65536").End(xlUp).Row
    TabTemp = .Range(.Cells(1, 1), .Cells(Maxi, 18)).Value
End With

ReDim TabVariance(1 To Maxi, 1 To 4)
ReDim TabIndice(1 To 12, 1 To 1)

'Pour chaque ligne du tableau en partant de la seconde (permiere=titre)
For compt = 2 To Maxi

'Si la ligne n'est pas "topée" on lance la procédure de calcul en initialisant les variables
    If Not TabTemp(compt, 18) Then
        Num = 1
        TabIndice(Num, 1) = compt
        ety1 = TabTemp(compt, 15) * TabTemp(compt, 16) ^ 2
        ety2 = TabTemp(compt, 15) * TabTemp(compt, 16)
        Proba = TabTemp(compt, 15)

'Pour les lignes qui suivent et jusqu'à la fin on repère les input egaux (colonnes 2 à 5)
        For compt2 = compt + 1 To Maxi
'Si trouve une correspondance d'identité on actualise les variables
            If TabTemp(compt2, 2) = TabTemp(compt, 2) Then
                If TabTemp(compt2, 3) = TabTemp(compt, 3) Then
                    If TabTemp(compt2, 4) = TabTemp(compt, 4) Then
                        If TabTemp(compt2, 5) = TabTemp(compt, 5) Then
                            Num = Num + 1
                            TabIndice(Num, 1) = compt2
                            ety1 = ety1 + TabTemp(compt2, 15) * TabTemp(compt2, 16) ^ 2
                            ety2 = ety2 + TabTemp(compt2, 15) * TabTemp(compt2, 16)
                            Proba = Proba + TabTemp(compt2, 15)
'on "tope" la ligne
                            TabTemp(compt2, 18) = True
                        End If
                    End If
                End If
            End If
        Next compt2

'on place cette valeur sur toutes les lignes correspondantes grâce au tableau d'indices
        For compt3 = 1 To Num
            TabVariance(TabIndice(compt3, 1), 1) = (ety1 / Proba - (ety2 / Proba) ^ 2)
            TabVariance(TabIndice(compt3, 1), 2) = ety1
            TabVariance(TabIndice(compt3, 1), 3) = ety2
            TabVariance(TabIndice(compt3, 1), 4) = Proba
        Next compt3
        
    End If
    
Next compt

'affichage du resultats

Range(Cells(1, 19), Cells(Maxi, 22)).Value = TabVariance

End Sub

Par exemple sur une ligne j'ai TabTemp(compt2, 15) = 2 et TabTemp(compt2, 16) = 0,5 j'obtiens ety2 = 1 mais ety1 = 0 (au lieu de 0,5) et je sais pas pourquoi... surtout que le reste du code semble bon (du moins les résultats 'intermédiaires' sont cohérents)


si quelqu'un a une idée (j'ai déjà essayé de changer l'ordre des lignes de codes, de recopier les colonnes de paramètres dans de nouvelles colonnes mais toujours le même résultat :(

A votre bon coeur!
 

risbal

XLDnaute Nouveau
Re : Macro calcul de variance

Merci JCGL,

où dois-je insérer "Format(...)"? (en fait l'aide d'excel que j'utilise est en allemand alors je lutte un peu)
Je l'ai d'abord mis au début (déclaration des variables) puis lors de l'assignation (dans les boucles) mais à chaque fois j'ai un message d'erreur hélas peu compréhensible (en gros je sais pas me servir de Format ...)
 

risbal

XLDnaute Nouveau
Re : Macro calcul de variance

Bonjour,

je pensais relancer le sujet puisque je butais toujours sur le même problème, mais j'ai eu l'idée géniale :cool: de copier-coller sur une autre feuille puis de relancer la macro. Et...ca a marché!
Alors je me pose plusieurs questions : est-ce qu'il s'agit de magie, un peu comme le reboot avec windoze, le truc qui résout, disons 80% des problèmes sans qu'on sache vraiment pourquoi? :confused:
est-ce qu'il pouvait y avoir un conflit entre différentes feuilles ou un autre truc chelou dans le genre?
d'une manière générale, quel comportement adopter devant ce genre de bug?

merci de votre soutien (déjà le soutien moral c'est pas mal :D)
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 685
Messages
2 090 942
Membres
104 703
dernier inscrit
romla937