Calcul (moy, max, min...) entre deux classeur
Résolu
Quoi29
Messages postés
22
Statut
Membre
-
Quoi29 Messages postés 22 Statut Membre -
Quoi29 Messages postés 22 Statut Membre -
Bonjour,
Je suis nouveau sur le forum et suis actuellement entrain d'essayer de me remettre à coder en VBA depuis peu. Je ne me rappel plus comment de manière la plus simple et épurée coder la chose suivante:
J'ai un classeur contenant ma Macro (nom du classeur inconnu). J'ai un deuxième classeur "Classeur2" contenant deux feuilles "Feuille1" et "Feuille2". "Feuille2" contient une colonne "A1:A3000" contenant un grand nombre de valeur sur cette plage.
Je souhaiterais que la cellule "A1" de la "Feuille1" du classeur contenant la Macro récupère la moyenne/le maximum/le minimum (...) de la colonne "A3:A3000". Comment faire? (Je ne veux surtout pas utiliser de boucle for pour le calcul de la moyenne des 3000 valeurs)
Mon idée (qui ne marche pas):
Merci pour votre aide en espérant avoir été clair
Je suis nouveau sur le forum et suis actuellement entrain d'essayer de me remettre à coder en VBA depuis peu. Je ne me rappel plus comment de manière la plus simple et épurée coder la chose suivante:
J'ai un classeur contenant ma Macro (nom du classeur inconnu). J'ai un deuxième classeur "Classeur2" contenant deux feuilles "Feuille1" et "Feuille2". "Feuille2" contient une colonne "A1:A3000" contenant un grand nombre de valeur sur cette plage.
Je souhaiterais que la cellule "A1" de la "Feuille1" du classeur contenant la Macro récupère la moyenne/le maximum/le minimum (...) de la colonne "A3:A3000". Comment faire? (Je ne veux surtout pas utiliser de boucle for pour le calcul de la moyenne des 3000 valeurs)
Mon idée (qui ne marche pas):
Dim NbRow As Integer
NbRow=3000
With Excel.Application.Workbooks("Classeur2").Sheets("Feuille2")
Excel.Application.ActiveWorkbooks.Sheets("Feuill1").Cells("A1") = WorksheetFunction.Average(Range(.Cells(3, 3), .Cells(3, NbRow)))
Merci pour votre aide en espérant avoir été clair
1 réponse
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
bonjour, "qui ne marche pas": message d'erreur, ?-
variante, à adapter:
Option Explicit Sub test() Dim NbRow As Long Dim rg As Range Dim avg As Double NbRow = 3000 Set rg = Excel.Application.Workbooks("ccmy.xlsm").Sheets("mexy").Range("c3:c" & NbRow) avg = Application.WorksheetFunction.Average(rg) Excel.Application.ThisWorkbook.Sheets("tt").Range("A1") = avg End Sub -
-
-
Bonjour yg_be,
J'ai crié victoire trop vite.
Voici comment j'ai incorporé ton code:
'Found the Total and write it in Solution sheet
Set rg = Excel.Application.Workbooks(Imput & ".xlsx").Sheets("Travaille").Range("O3:O" & NbRow)
avg = Application.WorksheetFunction.Sum(rg)
Excel.Application.ThisWorkbook.Sheets("Solution").Range(Column(Version) & "22") = avg
rg.Clear
avg = 0
'Found the Total and write it in Solution sheet
Set rg = Excel.Application.Workbooks(Imput & ".xlsx").Sheets("Travaille").Range("M3:M" & NbRow)
avg = Application.WorksheetFunction.Sum(rg)
Excel.Application.ThisWorkbook.Sheets("Solution").Range(Column(Version) & "24") = avg
rg.Clear
avg = 0
'Found the Total and write it in Solution sheet
Set rg = Excel.Application.Workbooks(Imput & ".xlsx").Sheets("Travaille").Range("P3:P" & NbRow)
avg = Application.WorksheetFunction.Sum(rg)
Excel.Application.ThisWorkbook.Sheets("Solution").Range(Column(Version) & "26") = avg
rg.Clear
avg = 0
'Found the Peak and write it in Solution sheet
Set rg = Excel.Application.Workbooks(Imput & ".xlsx").Sheets("Travaille").Range("D3:D" & NbRow)
avg = Application.WorksheetFunction.Max(rg)
Excel.Application.ThisWorkbook.Sheets("Solution").Range(Column(Version) & "25") = avg
rg.Clear
avg = 0
Lorsque je fais tourner le programme. J'ai l'erreur à la ligne suivante:
avg = Application.WorksheetFunction.Sum(rg)
Avec comme message d'erreur:
"Erreur 1008 le programme ne peut réaliser la fonction sum"
Lorsque je regarde dans mon dossier Excel les cellules O3:O3000 et M3:3000 ont été remplacé par des cases vides. D'où j'imagine le problème de réaliser la fonction sum.
Lorsque j'enlève ton code incorporé mes cellules sont bien présentes et remplis comme il se doit.
Aurais-tu une idée de l'origine de l'erreur? -
-