Remplacer des formules matricielles 3D par une macro

  • Initiateur de la discussion Initiateur de la discussion exene
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

exene

XLDnaute Accro
Bonjour,

Je me suis lancé un défi, créer un tableau sans trop de formules mais en VBA, alors que ma connaissance du langage se limite à l'enregistreur de macros. J'ai réussi grâce à quelques recherches et à l'aide de job75 a créer ce fichier mais pour faire le tableau récapitulatif par semaine et par agent, j'ai dû utiliser des formules matricielles 3D. Est il possible de faire ce récapitulatif par macro. Les formules sont dans l'onglet Récap

Ci-joint le fichier en l'état.

Merci pour vos conseils
 

Pièces jointes

Re : Remplacer des formules matricielles 3D par une macro

Salut exene 🙂, Bruno 🙂

Je me disais que Bruno, après la gentille vanne, n'allait pas résister longtemps à l'envie de proposer quelque chose ... en voici donc une (de proposition), qui n'aura peut-être d'autre mérite que celui de relancer le débat 🙄
Placer ces quelques lignes de code dans l'objet Feuil6 (Récap): la macro s'exécute à chaque activation de la feuille. Pour cette raison, j'ai utlisé un tableau (pour gagner en rapidité); le remplissage du tableau se fait avec un SOMME.SI
... à tester, décortiquer, critiquer, modifier, améliorer, tyranniser, massacrer, etc... 😛
VB:
Private Sub Worksheet_Activate()
Application.ScreenUpdating = False
Dim monTab()
ReDim monTab(Application.Max([C1:BD1]) - 1)
For agt = 2 To [B5000].End(xlUp).Row
    For i = 0 To (UBound(monTab) - 1)
        monTab(i) = Application.SumIf(Sheets("" & Cells(agt, 2)).Range("A8:A379"), i + 1, Sheets("" & Cells(agt, 2)).Range("E8:E379"))
    Next i
    Me.Cells(agt, 3).Resize(1, UBound(monTab)) = monTab
Next agt
Application.ScreenUpdating = True
End Sub
 
Re : Remplacer des formules matricielles 3D par une macro

Bonsoir le forum, Modeste,

Merci de ta réponse, tu dois certainement avoir raison en utilisant le somme.si. Le code semble léger, je m'attendais à quelques chose de beaucoup plus long, par contre il efface le nom de la personne et le nom de l'onglet. Je partais du principe qu'a chaque création de fiche le nom du collègue et le nom de l'onglet s'afficherait dans la feuille Récap pour activer la formule.Il me semble que le code proposé efface ces données.
 
Re : Remplacer des formules matricielles 3D par une macro

Re-bonjour exene, Pascal,

tu dois certainement avoir raison en utilisant le somme.si.
J'aimerais tant pouvoir faire preuve d'autant de confiance 😛

Le code efface le nom de la personne et le nom de l'onglet.
... Euh, le code proposé ne gère que la partie calcul des heures par semaine; il n'efface rien (enfin, pas que je sache!?) Si tu parles de la suppression des formules dans l'onglet Récap, alors oui: elles sont remplacées par les valeurs calculées par macro: il m'avait semblé comprendre que tu voulais remplacer les formules!
Si tu veux simplement que les colonnes A et B se "garnissent" en fonction des feuilles Agent que tu crées, en conservant tes formules, le problème est différent (et la solution aussi!)
 
Re : Remplacer des formules matricielles 3D par une macro

Bonsoir,

Tant qu'à faire, il conviendrait sans doute de faire en sorte que les nom et identifiant des travailleurs figure dans la feuille Récap ... chose qui pourrait se faire au moment de créer la feuille Agent, donc dans le code du CommandButton3_Click()
Peut-être en ajoutant ces 2 lignes en fin de procédure:
VB:
Sheets("Recap").Range("A5000").End(xlUp).Offset(1, 0) = Sheets("base").[B14]
Sheets("Recap").Range("A5000").End(xlUp).Offset(0, 1) = Sheets("base").[E20]
... juste avant le "Application.ScreenUpdating=True"
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
10
Affichages
1 K
Réponses
2
Affichages
533
S
Réponses
9
Affichages
3 K
Smookie
S
Retour