VBA: Calculer un tableau avec corrélations
vlad22
-
Vlad22 -
Vlad22 -
Bonjour,
Je souhaite faire un tableau me calculant des corrélations, avec une petite macro VB. Je ne souhaite pas surcharger mes fichiers avec des formules Excel.
J'ai donc un tableau de 17 colonnes, chacune de ces colonnes comporte 30 lignes. Et je veut étudier la corrélation de chaque colonne avec chaque autre colonne dans un autre classeur Excel.
Les lignes d'observations à comparer sont fixes (ça va toujours de la ligne 2 à la ligne 31 dans le classeur2), et mes résultats sont dans le classeur 1. Sur la ligne2 je compare la colonne 2 à toutes les autres colonnes . Puis sur la ligne 3 la colonne 3 à toutes les autres colonnes, Puis sur la ligne 4 la colonne 4 à toutes les autres etc.
J'ai donc essayé avec le code suivant:
Sub Tablo_Corrr()
j1 = 2
j2 = 3
coeff_corr As Double
Do 'boucle qui bouge d'une colonne
i = 2 'ligne de la variable incriminée
Range(Sheets("classeur2").Cells(2, j1), Sheets("Moyliss5").Cells(31, j1)) = X
Range(Sheets("classeur2").Cells(2, j2), Sheets("Moyliss5").Cells(31, j2)) = Y
Sheets("classeur1").Select 'on choisit la bonne sheets
Sheets("classeur1").Cells(i, j1).Select 'on prend la bonne colonne de la variable à étudier
Do 'boucle qui bouge de ligne
coeff_corr = Application.WorksheetFunction.Correl(X, Y)
i = i + 1
j2 = j2 + 1
Loop Until i = 19 'on regarde jusqu'à ce qu'on tombe sur une ligne vide
j1 = j1 + 1
Loop Until j1 = 19
End Sub
Et il me dit:
"Compile error:
Statement invalid outside type block"
Merci de m'aider. C'est la galère!!
Je souhaite faire un tableau me calculant des corrélations, avec une petite macro VB. Je ne souhaite pas surcharger mes fichiers avec des formules Excel.
J'ai donc un tableau de 17 colonnes, chacune de ces colonnes comporte 30 lignes. Et je veut étudier la corrélation de chaque colonne avec chaque autre colonne dans un autre classeur Excel.
Les lignes d'observations à comparer sont fixes (ça va toujours de la ligne 2 à la ligne 31 dans le classeur2), et mes résultats sont dans le classeur 1. Sur la ligne2 je compare la colonne 2 à toutes les autres colonnes . Puis sur la ligne 3 la colonne 3 à toutes les autres colonnes, Puis sur la ligne 4 la colonne 4 à toutes les autres etc.
J'ai donc essayé avec le code suivant:
Sub Tablo_Corrr()
j1 = 2
j2 = 3
coeff_corr As Double
Do 'boucle qui bouge d'une colonne
i = 2 'ligne de la variable incriminée
Range(Sheets("classeur2").Cells(2, j1), Sheets("Moyliss5").Cells(31, j1)) = X
Range(Sheets("classeur2").Cells(2, j2), Sheets("Moyliss5").Cells(31, j2)) = Y
Sheets("classeur1").Select 'on choisit la bonne sheets
Sheets("classeur1").Cells(i, j1).Select 'on prend la bonne colonne de la variable à étudier
Do 'boucle qui bouge de ligne
coeff_corr = Application.WorksheetFunction.Correl(X, Y)
i = i + 1
j2 = j2 + 1
Loop Until i = 19 'on regarde jusqu'à ce qu'on tombe sur une ligne vide
j1 = j1 + 1
Loop Until j1 = 19
End Sub
Et il me dit:
"Compile error:
Statement invalid outside type block"
Merci de m'aider. C'est la galère!!
A voir également:
- Vba statement invalid outside type block
- Block breaker - Accueil - Services en ligne
- Code block - Télécharger - Langages
- Clear type - Guide
- Block pub youtube - Accueil - Streaming
- Usb block - Télécharger - Pare-feu
5 réponses
Bonsoir,
Ce qui ne va pas, ce sont ces deux lignes et tes variables j1 et j2 :
il faut plutot prendre deux lettre j et k
et c'est ton range.
Range = selection de cellules dans une même feuilles. Tu ne paux pas faire comme ca
Range(Sheets("classeur2").Cells(2, j1), Sheets("Moyliss5").Cells(31, j1)) = X
Range(Sheets("classeur2").Cells(2, j2), Sheets("Moyliss5").Cells(31, j2)) = Y
sheets("classeur2").select
v = cells(2,j).select
sheets("Moyliss5").select
w = cells(31,j).select
X = "(" & v & "," & w & ")"
sheets("classeur2").select
v = cells(2,k).select
sheets("Moyliss5").select
w = cells(31,k).select
Y = "(" & v & "," & w & ")"
et je ne suis pas sure que cette formule soit bien écrite :
coeff_corr = Application.WorksheetFunction.Correl(X, Y)
Ce qui ne va pas, ce sont ces deux lignes et tes variables j1 et j2 :
il faut plutot prendre deux lettre j et k
et c'est ton range.
Range = selection de cellules dans une même feuilles. Tu ne paux pas faire comme ca
Range(Sheets("classeur2").Cells(2, j1), Sheets("Moyliss5").Cells(31, j1)) = X
Range(Sheets("classeur2").Cells(2, j2), Sheets("Moyliss5").Cells(31, j2)) = Y
sheets("classeur2").select
v = cells(2,j).select
sheets("Moyliss5").select
w = cells(31,j).select
X = "(" & v & "," & w & ")"
sheets("classeur2").select
v = cells(2,k).select
sheets("Moyliss5").select
w = cells(31,k).select
Y = "(" & v & "," & w & ")"
et je ne suis pas sure que cette formule soit bien écrite :
coeff_corr = Application.WorksheetFunction.Correl(X, Y)
Salut Melanie 1324,
Merci de ton conseil. J'ai changé le range de la façon mentionnée ci-dessus, mais malheureusement, le même message d'erreur apparait (à savoir "Compile error: Statement invalid outside type block)
Lorsque cette erreur apparait, il est clair que c'est la variable coeff_corr qui en est responsable, car l'erreur se situe au niveau de la ligne " coeff_corr As Double "
Soit ma déclaration de variable n'est pass juste (et je ne vois pas pourquoi), soit comme tu le pressens, la fonction associée à coeff_corr n'est pas juste (en l'occurrence coeff_corr = Application.WorksheetFunction.Correl(X, Y) )
Est-ce que quelqu'un sait comment utiliser une fonction d'Excel en VB? Merci d'avance
Merci de ton conseil. J'ai changé le range de la façon mentionnée ci-dessus, mais malheureusement, le même message d'erreur apparait (à savoir "Compile error: Statement invalid outside type block)
Lorsque cette erreur apparait, il est clair que c'est la variable coeff_corr qui en est responsable, car l'erreur se situe au niveau de la ligne " coeff_corr As Double "
Soit ma déclaration de variable n'est pass juste (et je ne vois pas pourquoi), soit comme tu le pressens, la fonction associée à coeff_corr n'est pas juste (en l'occurrence coeff_corr = Application.WorksheetFunction.Correl(X, Y) )
Est-ce que quelqu'un sait comment utiliser une fonction d'Excel en VB? Merci d'avance
J'ai l'impression que le Sub au départ peut aussi être une source de conflit? Faut-il que je créée une fonction séparée?
je pense que le problème viens de :
faut que tu écrit :
coeff_corr As Double
faut que tu écrit :
dim coeff_corr As Double
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question