|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Nouveau Membre du Club
![]() Inscription : avril 2010 Messages : 150 ![]() |
Bonjour,
Pouvez-vous m'aider à ajouter à mon moteur une formule "Sum" dans mon tableau excel ? Tableau excel A1 : USD12500 A2 : USD5236,12 A3 : USD4122,56 A4 : USD7852,45 A5 : USD4525,41 A6 : EUR7894,00 A7 : EUR1234,10 A8 : EUR4561,10 A9 : EUR4512,52 A10 : EUR1241, A11 : GBP4512, A12 : GBP4872 A13: GBP4512 Dans la colonne B : le montant seul Dans la colonne C : La devise Seul Donc j'ai fait en sorte qu'il y est deux sauts de lignes lorsque la devise de la ligne est différente de la devise sur la ligne précédente. Je voudrais ajouter sur la première ligne blanche en A6 logiquement : le terme Total en colonne B la somme des différentes sommes, et en colonne C la devise de la somme. Est-ce que cela est possible ? Bien sur, je voudrai une somme et non pas un cumul. Car si je dois retirer un chiffre de mon tableau, je voudrais que les totaux s'ajustent. Merci d'avance pour votre aide. Bien à vous Code :
|
||
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Sebastien LIngénieur Financier Inscription : mars 2010 Messages : 880 ![]() |
De même que tu stockes DevisePrec, tu pourrais stocker la dernière position avant changement de devise, pour ensuite faire un
Code :
ActiveCell.Formula = "=SUM(B" & LastCpt & ":B" & Cpt & ")" Et j'ai repris ta manière de coder. Pour ma part, j'évite absolument les ActiveCell. Je bouclerais plutôt sur un Cells(Cpt, 2) ou Range("A1").Offset(Cpt, 0) |
|
|
00
|
|
|
#3 | ||
|
Nouveau Membre du Club
![]() Inscription : avril 2010 Messages : 150 ![]() |
Sujet apars,
Lorsque j'ajoute ma variable Ou est-ce que je peux démarrer ce compteur et ou dois-je inserer dans ma boucle ceci ? Code :
ActiveCell.Formula = "=SUM(B" & LastCpt & ":B" & Cpt & ")" Cependant il affiche dans chaque cellule ou doit se trouvé les totaux : B0:B... Et il reprend toujours B0 Code :
|
||
|
|
00
|
|
|
#4 | ||
|
Membre Expert
![]() Sebastien LIngénieur Financier Inscription : mars 2010 Messages : 880 ![]() |
Alors d'abord Cpt et LastCpt sont des Integer et pas des String.
Sinon tu as oublié de faire LastCpt = Cpt (ou Cpt + 1, Cpt - 1, ... je te laisse voir ce qui colle) au moment du DevisePrec = Devise Comme ça ça marche : Code :
|
||
|
|
00
|
|
|
#5 | |
|
Nouveau Membre du Club
![]() Inscription : avril 2010 Messages : 150 ![]() |
Bonjour,
Merci pour vos informations précieuses. J'ai deux petites dernières questions en rapport avec ce même et unique sujet. Pourquoi me conseillez vous ceci ? Quelle est la différence ? Citation:
Merci d'avance Bonne journée |
|
|
|
00
|
|
|
#6 | ||
|
Membre Expert
![]() Sebastien LIngénieur Financier Inscription : mars 2010 Messages : 880 ![]() |
En fait, c'est plus propre de travailler directement sur les objets feuilles, classeurs, cellules que de les sélectionner puis de travailler sur l'objet actif. D'une part, c'est plus rapide et d'autre part ça réduit considérablement la possibilité d'erreur. Surtout que si la procédure n'est pas immédiate et que l'utilisateur clique sur quelque chose pendant son exécution, tout plantera.
Quand on débute, on utilise beaucoup l'enregistreur de macro. Ce qui est une bonne chose pour découvrir les fonctions et objets disponibles. Mais il faut quand même lire je pense un ou deux tutos ou livres sur vba pour ensuite adapter ce qu'a sorti l'enregistreur de macro pour le transformer en vrai "code". Après, vous me direz, tant que ça marche, qu'est-ce que ça peut faire ? Ce n'est pas faux, mais c'est surement une bonne habitude à prendre pour si un jour on se lance dans un programme plus complexe. Après toutes ces belles paroles, je t'ai refait un code plus "propre" à mon sens, certains pourront surement l'améliorer encore. J'ai essayé de beaucoup le commenter pour que tu comprennes exactement tout ce qui se passe. Normalement, tu n'auras besoin de personne pour changer la colonne ou la ligne d'affiche de ta somme, ajouter 3 lignes au lieu de 2... (Pour le coup, je t'ai quand même mis la somme sur la première ligne vide et dans la colonne B) J'en ai profité pour utiliser une sous-procédure avec passage par référence. Ce n'était pas essentiel ici, mais si tu as le courage, ça t'apprendra quelque chose qui peut s'avérer très pratique. Code :
|
||
|
|
00
|
|
|
#7 |
|
Nouveau Membre du Club
![]() Inscription : avril 2010 Messages : 150 ![]() |
Merci pour cette réponse de très haute qualité.
Je vais cliquer sur résolu, mais pouvez-vous me dire comment obtenir les deux décimales sur un montant ? Code :
montant = Val(Replace(Mid(texte, 4, Len(texte) - 3), ",", ".")) Cependant les doubles décimales (exemple USD2500,15) deviennent automatiquement 2500,10. Il ne fait aucun arrondi, il supprime la deuxième décimale et ajoute un 0. Comment remedié à cela ? J'ai déjà essayé avec des "selection.numberformat = "#0.00".. mais cela ne fonctionne pas |
|
|
00
|
|
|
#8 |
|
Membre Expert
![]() Sebastien LIngénieur Financier Inscription : mars 2010 Messages : 880 ![]() |
Il faut bien distinguer le nombre qu'on récupère et sa mise en forme. Je n'ai pas vérifié, mais il est possible qu'on tronque systématiquement le dernier chiffre quand on récupère le montant :
Code :
montant = Val(Replace(Mid(texte, 4, Len(texte) - 3), ",", ".")) Vérifie en mode pas en pas en mettant un espion sur montant que tout les nombres ont bien été récupérés. Le format n'intervient qu'au moment de l'affichage. |
|
|
00
|
|
|
#9 |
|
Nouveau Membre du Club
![]() Inscription : avril 2010 Messages : 150 ![]() |
merci !!!
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com