problème de taille avec programme VBA

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 !

pttejules

XLDnaute Nouveau
Bonjour,

J'ai un problème de "taille" avec VBA et je ne sais pas comment le résoudre donc, je me tourne vers vous. Que je vous explique ce que le programme qui suit fait.
Dans un classeur Excel, j'ai 12 feuilles de calcul mensuelles et une feuille annuelle. Ces tableaux ont pour objectif de faire un bilan de temps passé par tâches de travail.
Pour calculer les résultats annuels, je copie dans des colonnes de cette feuille les résultats de chaque mois. Puis dans une autre, je fais la somme des de ces colonnes.
Pour trouver les valeurs à copier et à quel emplacement, je fais une recherche par valeur de cellule.
Le problème est que mon programme est trop long. Y-a-t-il un moyen de le réduire ?
Ci-dessous, un extrait :


ElseIf mois = 8 Then
If moisaujourdhui2 = "Août" Then
Sheets("Bilan mensuel Août " & anneeaujourdhui).Select
ActiveSheet.Range("B" & c).Value = "=MATCH(""Tâches diverses"",R[-" & o + 9 + d & "]C:R[-" & 10 + d & "]C,0)"
e = ActiveSheet.Range("B" & c).Value
ActiveSheet.Range("C" & e).Select
Selection.Copy
Sheets("Bilan annuel " & anneeaujourdhui).Select
ActiveSheet.Range("J" & e).Select
ActiveSheet.Paste Link:=True
Sheets("Bilan mensuel Août " & anneeaujourdhui).Select
ActiveSheet.Range("B" & c).Value = "=MATCH(""" & valeurcherchee & """,R[-" & o + 9 + d & "]C:R[-" & 10 + d & "]C,0)"
e = ActiveSheet.Range("B" & c).Value
ActiveSheet.Range("C" & e).Select
Selection.Copy
Sheets("Bilan annuel " & anneeaujourdhui).Select
ActiveSheet.Range("H" & e).Select
ActiveSheet.Paste Link:=True
ActiveSheet.Range("O" & e).Value = "=SUM(RC[-12]:RC[-1])"
End If

Merci !
 
Re : problème de taille avec programme VBA

Bonjour ppteJules,

Tu peux déjà essayer de mettre cette ligne en tête de macro:

Code:
'Désactive le calcul automatique
Application.Calculation = xlCalculationManual
Si aucun calcul n'est nécessaire pendant l'execution de la macro


et celle-ci en fin de macro
Code:
'Réactiver le calcul automatique
Application.Calculation=xlCalculationAutomatic

Pendant l'execution d'une macro, chaque changement de valeur d'une cellule entraine un recalcul de la feuille et/ou du classeur ce qui n'est pas forcément nécessaire et rallonge le temps de travail.

A bientôt
 
Re : problème de taille avec programme VBA

Re ppteJules,

Petit complement: une autre façon de faire sans Select, sans doute plus rapide à l'éxécution:

Code:
    Dim sh1 As Worksheet
    Dim sh2 As Worksheet
 
    Set sh1 = Sheets("Bilan mensuel Août " & anneeaujourdhui)
    Set sh2 = Sheets("Bilan annuel " & anneeaujourdhui)
 
    sh1.Range("B" & c).Value = "=MATCH(""Tâches diverses"",R[-" & o + 9 + d & "]C:R[-" & 10 + d & "]C,0)"
 
    sh1.Range("J" & e).Formula = "=" & sh1.Name & "!C" & sh1.Range("B" & c).Value
 
    sh1.Range("B" & c).Value = "=MATCH(""" & valeurcherchee & """,R[-" & o + 9 + d & "]C:R[-" & 10 + d & "]C,0)"
 
    sh2.Range("H" & e).Formula = "=" & sh1.Name & "!A" & sh1.Range("B" & c).Value
 
    sh2.Range("O" & e).Formula "=SUM(RC[-12]:RC[-1])"

Sans données je n'ai pu toutefois vérifier si je n'avais pas fait d'erreur d'ecriture, mais l'essentiel est là.

A+
 
- 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
827
Réponses
11
Affichages
773
Retour