Je souhaiterais solliciter la communauté pour m'aider à créer deux programmes VBA pour automatiser certaines tâches dans un tableau sur Excel.
Premier programme :Je souhaite que le programme calcule la somme des volumes et des poids des produits dans la feuille "Stocks", en fonction de la nocivité et du laboratoire sélectionnés par l'utilisateur. La nocivité et le laboratoire sont définis dans des cases grises du tableau "Nocivité". Le programme devra parcourir le tableau "Stocks", filtrer les produits qui correspondent à la nocivité et au laboratoire choisis, puis afficher la somme des volumes et des poids dans le tableau "Nocivité".
Deuxième programme :Ce programme devra inscrire la date du produit le plus ancien stocké dans chaque laboratoire, en vérifiant toutes les dates présentes dans la feuille "Stocks" pour chaque laboratoire. La date la plus ancienne devra être automatiquement renseignée pour chaque laboratoire dans le tableau correspondant.
Je tiens à préciser que toutes les variables doivent être déclarées correctement et que les codes doivent être clairs et compréhensibles.
Bonjour Toto,
Tenez vous vraiment à utiliser des macros VBA ?
Car on peut le faire en simples formules, voir PJ, avec :
VB:
Volume :
=SOMME.SI.ENS(Stocks!$D$1:$D$22;Stocks!$F$1:$F$22;Tri!A2;Stocks!$E$1:$E$22;"L")
Poids :
=SOMME.SI.ENS(Stocks!$D$1:$D$22;Stocks!$F$1:$F$22;Tri!A2;Stocks!$E$1:$E$22;"kg")
Date la plus ancienne :
=MIN(SI(Stocks!$G$2:$G$22=Tri!F2;Stocks!$A$2:$A$22))
( à valider avec Maj+Ctrl+Entrée sur les anciennes versions XL )
Evidemment on peut le faire en VBA, mais quel intérêt ?
pourquoi des macros alors que des formules font l'affaire? (si j'ai bien compris)
1) transformer les différents tableaux en Table Structurée (en leur donnant un nom: ex: t_BDD, t_Stock, t_...)
2) utiliser des formules
Je tiens à préciser que toutes les variables doivent être déclarées correctement et que les codes doivent être clairs et compréhensibles.
ca fait un peu 'professeur' qui s'adresse aux élèves...
rappel: ici, il n'y a que des bénévoles qui interviennent SI ils veulent..
et dans le cas présent, le demandeur c'est toi.., c'est toi qui doit essayer de comprendre, pas à nous d'executer
Bonjour Toto,
Tenez vous vraiment à utiliser des macros VBA ?
Car on peut le faire en simples formules, voir PJ, avec :
VB:
Volume :
=SOMME.SI.ENS(Stocks!$D$1:$D$22;Stocks!$F$1:$F$22;Tri!A2;Stocks!$E$1:$E$22;"L")
Poids :
=SOMME.SI.ENS(Stocks!$D$1:$D$22;Stocks!$F$1:$F$22;Tri!A2;Stocks!$E$1:$E$22;"kg")
Date la plus ancienne :
=MIN(SI(Stocks!$G$2:$G$22=Tri!F2;Stocks!$A$2:$A$22))
( à valider avec Maj+Ctrl+Entrée sur les anciennes versions XL )
Evidemment on peut le faire en VBA, mais quel intérêt ?
Bien évidemment, il est très simple de réaliser cela en utilisant des fonctions Excel, mais moi, je cherche à travailler mon écriture VBA, car je suis encore novice.
Si vous avez des suggestions ou conseils pour améliorer ce code ou l'approche en VBA, je suis preneur. Merci !
pour inscrire une formule PAR VBA, voici ma méthode
1) créer la chaine formule qui contient la formule telle qu'elle sera inscrite dans la cellule
2) placer la formule
ex: inscrire en A1 la formule =somme(B1:B10)
VB:
sub InscrireFormule()
dim Formule as string
Formule="=sum(B1:B10)"
range("A1").formula=Formule
end sub
puisque VBA est Anglais, il faut écrire la formule en Anglais (ca évite de devoir passer par des formulalocal qui ne fonctionnent pas toujours à moins de revalider la cellule...
==> utiliser les noms anglais des fonctions (Somme==>Sum)
==> les points-virgule deviennent des virgules
==> les guillemets " deviennent des double guillemets ""
si tu souhaites que ce soit VBA qui effectue le calcul et ne mette QUE le résultat, tu peux passer par la fonction "Evaluate"
ou alors, tu te tapes une ou des boucles et des if pour calculer ton résultat