Rendre une macro dynamique avec une boucle

Bonjour,

J'aimerais calculer le nombre de données dans la colonne B des feuilles 2 et 3 et la moyenne de la colonne C de la feuille 2 et 3 en partant de la ligne 2 pour chaque calcul.

Ensuite je veux intégrer ces données dans l'onglet récap (voir fichier joint).

Je n'arrive pas à rendre ma macro dynamique car lorsque je la lance une fois ça me rajoute une ligne dans mes colonnes donc lors de la réutilisation de la macro ça fausse le résultat.

De plus je voudrais introduire une boucle pour alléger le code.

Merci pour votre aide

Code

Sub macro2()

sheets("feuil2").select

Dim der As Long

der = Range("B65000").End(xlUp).Row

nb = WorksheetFunction.CountA(Range("B2:B" & der))

[B17] = nb

Cells(17,2).Select

Sheets("recap").Range("B6") = ActiveCell.Value

Dim plage As Range

Dim DernLign As Integer

DernLign = Range("C65536").End(xlUp).Row

Set plage = Range(Cells(2, 3), Cells(DernLign,3))

moyenne = WorksheetFunction.Average(plage)

[C17] = moyenne

Range("C65536").End(xlUp).Select

Sheets("recap").Range("C6") = ActiveCell.Value

sheets(feuil3").select etc il faudrait une boucle pour les autres onglets

End Sub

27exemple.xls (19.50 Ko)

Bonjour,

.

..la lance une fois ça me rajoute une ligne dans mes colonnes donc lors de la réutilisation de la macro

tu veux quoi exactement dan ta feuille recap ?? rajouter les données de chaque feuille au dessus de la ligne Total en vert ?

dans mon tableau recap je veux juste reprendre les données calculées dans les feuilles 2 et 3(copier coller).

Enfin je veux pouvoir relancer la macro pour des nouvelles feuilles 2 et 3 que ça recalcul la moyenne et le nombre de données puis copier coller dans le tableau récap.

Merci d'avance

re,

en supposant que tu ne dois pas écraser les anciennes valeurs, essaie ce code

Sub macro2()
Dim der As Long, derR As Long
For i = 1 To Sheets.Count
    If Sheets(i).Name <> "recap" Then
        With Sheets("recap")
            derR = .Range("B" & Rows.Count).End(xlUp).Row
            .Range("B" & derR).EntireRow.Insert
            .Range("E" & derR - 1 & ":F" & derR).Copy .Range("E" & derR)
        End With
        With Sheets(i)
            der = .Range("B65000").End(xlUp).Row
            .Range("B" & der) = WorksheetFunction.CountA(.Range("B2:B" & der))
            .Range("C" & der) = WorksheetFunction.Average(.Range("C2:C" & der))
            Sheets("recap").Range("B" & derR) = WorksheetFunction.CountA(.Range("B2:B" & der))
            Sheets("recap").Range("C" & derR) = WorksheetFunction.Average(.Range("C2:C" & der))

            End With
        End If
Next
End Sub

La première ligne et la ligne total doivent être remplies

Le code est exécuté depuis la feuille recap

Si ok, clique sur le V vert à coté du bouton EDITER pour cloturer le fil

Amicalement

Je vais l essayer mais je précise que mes feuilles 2 et 3 sont variables ( je les importe et donc la taille des colonnes changent).

Par contre mon recap bouge pas sauf les 4 cellules en rouge.

Merci j essai d ici peu et clôture si c ok

Re,

Si les cellules en rouge bouge pas et que tu dois uniquement réactualiser, le code ne fonctionnera pas comme tu veux.

TU as pas précisé dans ta demande.

Là c'est plus compliqué car il faut une référence en colonne A (par exemple) de ta feuille récap afin qu'excel sache où il doit mettre les données importées depuis les feuilles 2 et 3

A toi de préciser

Oui c ça les 4 cellules en rouge du tableau recap doivent changer en fonction de ce qui sera calculé en feuil 2 et 3 par la macro.

Étape 1 : la macro calcule dans la feuil2 et 3

Étape 2: la macro récupère les 4 résultats et les colle dans le recap

Le mois suivant je change la feuil 2 et 3 et en cliquant sur le bouton macro les résultats en feuil 2 et 3 sont recalculés en fonction de la taille des colonne et ils sont copié dans le recap

Ainsi de suite.

Merci pour ton aide

J'ai testé la macro, c'est presque ça..

Il faudrait juste que les résultats dans la feuil 2 et 3 s'inscrivent dans en dessous de la dernière cellule rempli de chaque colonne (B et C).

De plus si ce n'est pas trop compliqué, le tableau initial ne doit pas bougé, ce sont juste les 4 cellules en rouge qui doivent être modifiées (les résultats doivent juste être remplacés par les nouveaux à chaque fois).

Je vais essayer de prendre ce code comme base

Merci

Rechercher des sujets similaires à "rendre macro dynamique boucle"