VBA - Opérations sur plusieurs fichiers
Bonjour,
Je souhaite faire une moyenne d'une même cellule dans plusieurs fichiers.
Après pas mal de recherche je suis tombé sur ce code qui arrive à faire seulement une addition mais je ne sais pas en faire une moyenne.
si qqun a une idée je suis preneur !!!
Sub sommescellule()
Dim objShell As Object, objFolder As Object
Dim Chemin As String, fichier As String
Dim compteur As String
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.BrowseForFolder(&H0&, "Choisir un répertoire", &H1&)
If objFolder Is Nothing Then
MsgBox "Arret de la macro", vbCritical, "Annulation"
Else
'On renseigne le compteur à 0
compteur = 0
'Sélection du répertoire
Chemin = objFolder.ParentFolder.ParseName(objFolder.Title).Path & "\"
'format du fichier (par exemple xlsx)
fichier = Dir(Chemin & "*.xlsm")
Do While Len(fichier) > 0
If fichier <> ThisWorkbook.Name Then
'la cellule qui va être recherchée dans les autres classeurs est A1 de la feuille 1
ThisWorkbook.Names.Add "Plage", _
RefersTo:="='" & Chemin & "[" & fichier & "]Suivi compétences'!$C$36"
'on va coller le résultat dans la feuille 2
With Sheets("Feuil2")
.[A1] = "=Plage"
'on ajoute le résultat trouvé dans le compteur
compteur = compteur + .[A1].Value
End With
End If
fichier = Dir()
Loop
End If
'On colle le compteur dans la cellule B2
Range("B2").Select
ActiveCell.Value = compteur
End SubBonjour,
il faudrait ajouter le nombre de valeur,
c'est à dire:
compteur = compteur + .[A1].Value
nbr = nbr +1puis faire la division
moy = compteur / nbrMerci !!!!
C'est exactement ce qu'il me fallait, j'ai du mal avec la logique VBA.
J'essayais de diviser par compteur.
Encore merci.
Merci pour ce retour, au plaisir!
Bonjour,
je reviens sur mon sujet car je suis encore dépassé.
Dans le code plus haut je fais l'opération sur 1 cellule ("C36") mais j'aimerais le faire sur plusieurs cellule.
Et j'aimerais que le résultat de ces opérations s'inscrivent dans les mêmes cellules du fichier ouvert (donc la moyenne des valeurs en C36 de tous les fichiers s'inscrit en C36 du fichier ouvert).
Merci d'avance de l'aide que vous pourrez m'apporter.
Bonjour,
voici un exemple pour la moyenne des cellules "A2:A5"
Sub test()
Dim objShell As Object, objFolder As Object
Dim Chemin As String, fichier As String
t = "C:\Users\isabelle\Documents\Test1"
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.BrowseForFolder(&H0&, "Choisir un répertoire", &H1&, t)
If objFolder Is Nothing Then Exit Sub
'Sélection du répertoire
Chemin = objFolder.ParentFolder.ParseName(objFolder.Title).Path & "\"
Set plg = Range("A2:A5")
For Each c In plg
LireCellule Chemin, fichier, c.Address
Next
End Sub
Sub LireCellule(Chemin As String, fichier As String, rng As String)
Dim compteur As Double, nbr As Long
'On renseigne le compteur à 0
compteur = 0
'format du fichier (par exemple xlsx)
fichier = Dir(Chemin & "*.xlsx")
Do While Len(fichier) > 0
If fichier <> ThisWorkbook.Name Then
'la cellule qui va être recherchée dans les autres classeurs est A1 de la feuille 1
ThisWorkbook.Names.Add "Plage", _
RefersTo:="='" & Chemin & "[" & fichier & "]Suivi compétences'!" & rng
' on va coller le résultat dans la feuille caché "tempo"
With Sheets("tempo")
.[A1] = "=Plage"
' on ajoute le résultat trouvé dans le compteur
compteur = compteur + .[A1]
nbr = nbr + 1
End With
End If
Range(rng) = compteur / nbr
fichier = Dir()
Loop
End Subedit: ajout du fichier