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 Sub

Bonjour,

il faudrait ajouter le nombre de valeur,

c'est à dire:

compteur = compteur + .[A1].Value
nbr = nbr +1

puis faire la division

moy =  compteur / nbr

Merci !!!!

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 Sub

edit: ajout du fichier

Rechercher des sujets similaires à "vba operations fichiers"