Simplifier un Code VBA


#1

Bonjour
Je suis un débutant dans tous ce qui est programmation, je trouve les codes VBA intéressants et pratique car j’utilise beaucoup excel dans mon travail.
j’essai de créer un fichier de collecte de données pour des personnes qui ne sont pas adepte d’outils en bureautique, surtout excel.
j’essai de faire une synthèse dans un tableau qui est dans l’onglet “Dashboard” et qui collecte les information concernant la moyenne de stock, la moyenne de rotation et la disponibilité de 17 produits (l’exemple de code que j’ai fait prend que 2 produits) de cellules qui se trouve sur 12 onglets différents du même classeur, de Janvier à Décembre, Voila le code :

Sub copy_valeurs_All()

Application.ScreenUpdating = False

'I-Pour tous les secteurs “All”
'------------------------------

'I-1 1er Produit
'---------------

'Format cellule en nombre
Range(“AD6:AO6”).Select
Selection.NumberFormat = “0”
'Copy moyenne de stock
Sheets(“Dashboard”).Range(“AD6”) = Sheets(“Janvier”).Range(“F226”).Value
Sheets(“Dashboard”).Range(“AE6”) = Sheets(“Fevrier”).Range(“F226”).Value
Sheets(“Dashboard”).Range(“AF6”) = Sheets(“Mars”).Range(“F226”).Value
Sheets(“Dashboard”).Range(“AG6”) = Sheets(“Avril”).Range(“F226”).Value
Sheets(“Dashboard”).Range(“AH6”) = Sheets(“Mai”).Range(“F226”).Value
Sheets(“Dashboard”).Range(“AI6”) = Sheets(“Juin”).Range(“F226”).Value
Sheets(“Dashboard”).Range(“AJ6”) = Sheets(“Juillet”).Range(“F226”).Value
Sheets(“Dashboard”).Range(“AK6”) = Sheets(“Aout”).Range(“F226”).Value
Sheets(“Dashboard”).Range(“AL6”) = Sheets(“Septembre”).Range(“F226”).Value
Sheets(“Dashboard”).Range(“AM6”) = Sheets(“Octobre”).Range(“F226”).Value
Sheets(“Dashboard”).Range(“AN6”) = Sheets(“Novembre”).Range(“F226”).Value
Sheets(“Dashboard”).Range(“AO6”) = Sheets(“Décembre”).Range(“F226”).Value

'Format cellule en nombre
Range(“AD7:AO7”).Select
Selection.NumberFormat = “0”
'Copy moyenne de rotation
Sheets(“Dashboard”).Range(“AD7”) = Sheets(“Janvier”).Range(“G226”).Value
Sheets(“Dashboard”).Range(“AE7”) = Sheets(“Fevrier”).Range(“G226”).Value
Sheets(“Dashboard”).Range(“AF7”) = Sheets(“Mars”).Range(“G226”).Value
Sheets(“Dashboard”).Range(“AG7”) = Sheets(“Avril”).Range(“G226”).Value
Sheets(“Dashboard”).Range(“AH7”) = Sheets(“Mai”).Range(“G226”).Value
Sheets(“Dashboard”).Range(“AI7”) = Sheets(“Juin”).Range(“G226”).Value
Sheets(“Dashboard”).Range(“AJ7”) = Sheets(“Juillet”).Range(“G226”).Value
Sheets(“Dashboard”).Range(“AK7”) = Sheets(“Aout”).Range(“G226”).Value
Sheets(“Dashboard”).Range(“AL7”) = Sheets(“Septembre”).Range(“G226”).Value
Sheets(“Dashboard”).Range(“AM7”) = Sheets(“Octobre”).Range(“G226”).Value
Sheets(“Dashboard”).Range(“AN7”) = Sheets(“Novembre”).Range(“G226”).Value
Sheets(“Dashboard”).Range(“AO7”) = Sheets(“Décembre”).Range(“G226”).Value

'Format cellule en pourcentage
Range(“AD8:AO8”).Select
Selection.NumberFormat = “0%”
'Copy moyenne de Disponibilité
Sheets(“Dashboard”).Range(“AD8”) = Sheets(“Janvier”).Range(“H226”).Value
Sheets(“Dashboard”).Range(“AE8”) = Sheets(“Fevrier”).Range(“H226”).Value
Sheets(“Dashboard”).Range(“AF8”) = Sheets(“Mars”).Range(“H226”).Value
Sheets(“Dashboard”).Range(“AG8”) = Sheets(“Avril”).Range(“H226”).Value
Sheets(“Dashboard”).Range(“AH8”) = Sheets(“Mai”).Range(“H226”).Value
Sheets(“Dashboard”).Range(“AI8”) = Sheets(“Juin”).Range(“H226”).Value
Sheets(“Dashboard”).Range(“AJ8”) = Sheets(“Juillet”).Range(“H226”).Value
Sheets(“Dashboard”).Range(“AK8”) = Sheets(“Aout”).Range(“H226”).Value
Sheets(“Dashboard”).Range(“AL8”) = Sheets(“Septembre”).Range(“H226”).Value
Sheets(“Dashboard”).Range(“AM8”) = Sheets(“Octobre”).Range(“H226”).Value
Sheets(“Dashboard”).Range(“AN8”) = Sheets(“Novembre”).Range(“H226”).Value
Sheets(“Dashboard”).Range(“AO8”) = Sheets(“Décembre”).Range(“H226”).Value

'I-2 2ème Produit
'----------------

'Format cellule en nombre
Range(“AD9:AO9”).Select
Selection.NumberFormat = “0”
'Copy moyenne de stock
Sheets(“Dashboard”).Range(“AD9”) = Sheets(“Janvier”).Range(“I226”).Value
Sheets(“Dashboard”).Range(“AE9”) = Sheets(“Fevrier”).Range(“I226”).Value
Sheets(“Dashboard”).Range(“AF9”) = Sheets(“Mars”).Range(“I226”).Value
Sheets(“Dashboard”).Range(“AG9”) = Sheets(“Avril”).Range(“I226”).Value
Sheets(“Dashboard”).Range(“AH9”) = Sheets(“Mai”).Range(“I226”).Value
Sheets(“Dashboard”).Range(“AI9”) = Sheets(“Juin”).Range(“I226”).Value
Sheets(“Dashboard”).Range(“AJ9”) = Sheets(“Juillet”).Range(“I226”).Value
Sheets(“Dashboard”).Range(“AK9”) = Sheets(“Aout”).Range(“I226”).Value
Sheets(“Dashboard”).Range(“AL9”) = Sheets(“Septembre”).Range(“I226”).Value
Sheets(“Dashboard”).Range(“AM9”) = Sheets(“Octobre”).Range(“I226”).Value
Sheets(“Dashboard”).Range(“AN9”) = Sheets(“Novembre”).Range(“I226”).Value
Sheets(“Dashboard”).Range(“AO9”) = Sheets(“Décembre”).Range(“I226”).Value

'Format cellule en nombre
Range(“AD10:AO10”).Select
Selection.NumberFormat = “0”
'Copy moyenne de rotation
Sheets(“Dashboard”).Range(“AD10”) = Sheets(“Janvier”).Range(“J226”).Value
Sheets(“Dashboard”).Range(“AE10”) = Sheets(“Fevrier”).Range(“J226”).Value
Sheets(“Dashboard”).Range(“AF10”) = Sheets(“Mars”).Range(“J226”).Value
Sheets(“Dashboard”).Range(“AG10”) = Sheets(“Avril”).Range(“J226”).Value
Sheets(“Dashboard”).Range(“AH10”) = Sheets(“Mai”).Range(“J226”).Value
Sheets(“Dashboard”).Range(“AI10”) = Sheets(“Juin”).Range(“J226”).Value
Sheets(“Dashboard”).Range(“AJ10”) = Sheets(“Juillet”).Range(“J226”).Value
Sheets(“Dashboard”).Range(“AK10”) = Sheets(“Aout”).Range(“J226”).Value
Sheets(“Dashboard”).Range(“AL10”) = Sheets(“Septembre”).Range(“J226”).Value
Sheets(“Dashboard”).Range(“AM10”) = Sheets(“Octobre”).Range(“J226”).Value
Sheets(“Dashboard”).Range(“AN10”) = Sheets(“Novembre”).Range(“J226”).Value
Sheets(“Dashboard”).Range(“AO10”) = Sheets(“Décembre”).Range(“J226”).Value

'Format cellule en pourcentage
Range(“AD11:AO11”).Select
Selection.NumberFormat = “0%”
'Copy moyenne de Disponibilité
Sheets(“Dashboard”).Range(“AD11”) = Sheets(“Janvier”).Range(“K226”).Value
Sheets(“Dashboard”).Range(“AE11”) = Sheets(“Fevrier”).Range(“K226”).Value
Sheets(“Dashboard”).Range(“AF11”) = Sheets(“Mars”).Range(“K226”).Value
Sheets(“Dashboard”).Range(“AG11”) = Sheets(“Avril”).Range(“K226”).Value
Sheets(“Dashboard”).Range(“AH11”) = Sheets(“Mai”).Range(“K226”).Value
Sheets(“Dashboard”).Range(“AI11”) = Sheets(“Juin”).Range(“K226”).Value
Sheets(“Dashboard”).Range(“AJ11”) = Sheets(“Juillet”).Range(“K226”).Value
Sheets(“Dashboard”).Range(“AK11”) = Sheets(“Aout”).Range(“K226”).Value
Sheets(“Dashboard”).Range(“AL11”) = Sheets(“Septembre”).Range(“K226”).Value
Sheets(“Dashboard”).Range(“AM11”) = Sheets(“Octobre”).Range(“K226”).Value
Sheets(“Dashboard”).Range(“AN11”) = Sheets(“Novembre”).Range(“K226”).Value
Sheets(“Dashboard”).Range(“AO11”) = Sheets(“Décembre”).Range(“K226”).Value

Application.ScreenUpdating = True

End Sub

Le code marche cela dit l’exécution est très lente, tellement que l’attente est handicapante, c’est due surement au nombreuses lignes de commandes.
Y a t’il une façon de simplifier les choses.
Merci beaucoup pour votre aide.


#2

Bonjour,

Place un CLASSEUR en P.J., ce sera plus rapide

image


#3

projet Disponibilité PharmacieOK.xlsm (2,5 Mo)
Merci Mimimathy pour votre réactivité.


#4

Re,

Moi je veux bien réduire la (plutôt toutes les procédures), mais il faudrait peut-être qu’il soit fonctionnel le programme
Chez moi il dure 0,5 sec, pour m’indiquer que la procédure est trop longue

Tout (je dis bien TOUT) est à reprendre avec des boucles, là, ce n’est pas que cela dépasse mon ressort, mais je n’ai ni l’envie, ni le temps à me consacrer à reprendre depuis le début (surtout entre les mix VBA et formules)

Ta demande sur le post ne prend en compte qu’un seul module, il y en a un peu plus (qui ne servent à rien si tout est bien exploité) sans compter les procédures dans les feuilles

Pour info, avec un genre de gestion comme celle-ci, ce n’est pas EXCEL qu’il faut utiliser, mais plutôt ACCESS qui lui peut gérer une BDD sans formule complexe

Désolé


#5

Bonsoir Mimimathy
ce n’est pas grave, merci pour ton aide, peut être que j’ai vu un peu grand par rapport a ce projet, j’ai essayé de faire avec les moyens du bord, pour Access je suppose que comme c’est un SGBD ça reste un meilleur moyen, il faut juste avoir du temps pour se former dessus.
Merci pour votre réactivité et vos réponses.
Bonne continuation.


#6

Bonjour GBK75,

Ayant passé une courte nuit, j’ai quand même jeté un :eye: sur ton programme

Je ne place pas les macros dans le post, trop nombreuses
A tester, vérifie quand même si les chiffres se mettent bien à la bonne place, mais normalement c’est bon
Il ne bugue plus et il met entre 2 à 4 secondes pour les MàJ suivant le PC

projet Disponibilité PharmacieOK.xlsm (2,1 Mo)


#7

Bonjour Mimimathy
Merci beaucoup pour tes efforts, j’apprécie vraiment le geste, en plus en voit bien la touche d’un connaisseur, les boucles sont très bien faites, j’aurais jamais pu les faire tout seul, j’ai appris beaucoup grâce à toi.
Merci encore une fois:+1:


#8

Re,

Ok
Si ton probleme est resolu n’oublie pas de cliquer sur le petit :white_check_mark: sous la solution pour la valider.
A la prochaine


#9

Ce sujet a été automatiquement fermé après 30 jours. Aucune réponse n’est permise dorénavant.