Ne pas selectionner des cellules vides dans vba

1ma9

XLDnaute Nouveau
Bonjour à vous.

Je viens vous voir pour vous demander de l'aide.

voici la situation:

Sur mon fichier excel j'ai un module VBA que je vous expose:
HTML:
Private Sub CommandButton1_Click()
Dim n%, d%, tablo#(), i%, j%
With Sheets("test 12")
  n = Application.Count(.Columns(1)) 'nombre de valeurs étudiées par titre
  d = Application.CountA(.Rows(1)) 'nombre de titres (dimensions du tableau)
  ReDim tablo(d - 1, d - 1)
  For i = 0 To d - 1
    For j = i To d - 1
      tablo(i, j) = Application.Covar(.[A2].Offset(, i).Resize(n), .[A2].Offset(, j).Resize(n))
      tablo(j, i) = tablo(i, j)
    Next
  Next
End With
Rows("2:65536").ClearContents
Range("A2").Resize(d, d) = tablo 'si d > 256 utiliser Excel 2007
End Sub

Grace à ça j'ai mes matrice de Covariance (sur des cours d'actions en bourse)
cependant, dans mon fichier excel certaines fois, je n'ai pas le cours d'une certaine date, et donc il pense que ca fait 0 ce qui fausse la variance, donc j'aimerai qu'il ne prenne pas en compte les cellules vides.

Quelqu'un pourrait m'épauler ?

Merci a vous tous !!!
 

Staple1600

XLDnaute Barbatruc
Re : Ne pas selectionner des cellules vides dans vba

Bonjour

Un petit coup d'enregistreur de macro pour se rafraichir la mémoire


Code:
Sub Macro1()
Selection.SpecialCells(xlCellTypeConstants, 1).Select
End Sub

Ne sélectionne que les cellules contenant des nombres


A partir de là, tu devrais pouvoir adapter ton code précédent.

(Mais est-ce bien ton code ... )
 

job75

XLDnaute Barbatruc
Re : Ne pas selectionner des cellules vides dans vba

Re,

La solution de Staple ne convient pas car alors comment utiliser la fonction COVARIANCE ?

Perso je ferai une petite macro (très petite, pour débutants) pour traiter les données manquantes dans les tableaux :

- si donnée en début de liste, prendre valeur suivante

- si donnée en fin de liste, prendre valeur précédente

- si donnée intermédiaire, moyenne de la précédente et de la suivante.

Dans un calcul de covariance, on ne peut pas "sauter" une valeur...

A+
 

albert

XLDnaute Occasionnel
Re : Ne pas selectionner des cellules vides dans vba

Bonjour 1ma9,

Si tu veux construire une matrice de covariance à partir de cours de bourse, il faut :
1/ télécharger les cours et vérifier si pour chaque date il y a un cours qui correspond avec la méthode .Find(). Lorsqu’il manque un cours, il faut copier le cours de la veille.
Code à adapter :

Sub find()
On Error Resume Next
For i = 2 To Range("N2").End(xlDown).Row
For v = 2 To Range("J2").End(xlDown).Row
With Worksheets("Feuil1").Cells(i, 14)
Set c = .Find(Cells(v, 10), LookIn:=xlValues)
If Not c Is Nothing Then
firstAddress = c.Address
Do
c.Offset(0, 1).Copy
Cells(v, 11).Select
ActiveSheet.Paste
Application.CutCopyMode = False
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> firstAddress
End If
End With
Next
Next
End Sub


2/ il faut transformer les cours en rendements (variation de cours entre deux séances) pour qu’ils soient comparables. Deux possibilités de calcul.
Soit discret :
(Cours du jour-cours de la veille)/cours de la veille
Soit continu :
LN(cours du jour - cours de la veille)

Pour la covariance, tu peux utiliser l’utilitaire d’analyse (il n’est pas installé par défaut), le résultat en vba : Application.Run "ATPVBAEN.XLA!Mcovar"


j'espère avoir fait avancer un peu le schmilblick.

albert
 

Discussions similaires

Statistiques des forums

Discussions
311 733
Messages
2 082 019
Membres
101 872
dernier inscrit
Colin T