Ne pas selectionner des cellules vides dans vba

  • Initiateur de la discussion Initiateur de la discussion 1ma9
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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 !!!
 
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 ... )
 
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+
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
237
Réponses
33
Affichages
3 K
  • Question Question
Microsoft 365 îPb code VBA
Réponses
1
Affichages
610
Réponses
3
Affichages
951
Réponses
3
Affichages
896
Retour