Programmer commandbutton pour calculer total
Salu les experts
je voudrais trouver un code vba afin que le button total de mon fichier puisse calculer automatiquement la somme des cellules en colonne" F " des lors que les valeurs en colonne "A" son identiques.
Et aussi avoir la designation " total " comme indiquer en exemple "en vert" dans la feuille"template"
A noter que le nombre de lignes peuvent varier dans ma feuille "Template".
Je vous remercie infiniment pour votre aide
LGVBA
Salut,
Sur ce fil, il me semble que je pourrais te proposer une solution
Comment se présente ton tableau avant de lancer la macro ? Sur ton premier exemple, tu as partout des X4 dans la colonne A et tu as déjà placé la ligne "Total". Mais je présume que dans la réalité, tu as plusieurs X1 à la suite desquels tu voudrais un total, puis plusieurs X2, etc.
Merci de fournir un exemple afin que je vois exactement ton fichier de départ (ça permet aussi de voir s'il y a déjà cette ligne vide entre deux "Type de pièce", etc.).
Cordialement.
Bonjour,
Ci-joint fichier adapté avec vba et création TCD (tableau croisé dynamique) adaptable à toutes les configurations de synthèse (ou presque
A tester et j'attends vos commentaires.
Surtout, ne pas écrire que je ne comprends rien
Cordialement
Merci Jean eric pour ta solution mais c' est pas tout as fait ce que je veux.;;;;;;;;;;;;
sALU Yvouille
Non yvouille; il y a pas de x1 et x2 en colonne A ..., il la "ID" je t ' ai founi un fichier plus claire., Avec exemple du template "avant la macro "et "apres la macro".
La feuille "Template apres la macro" te montre excatement comment le fichier doit etre traiter apres la programmation du bouton.
Je te remerciE d ' avance pour ton aide.
cDT
LGVBA
Salut,
Désolé, mais ton premier fichier s'ouvre sur la colonne D et je l'ai confondue avec la colonne A
Voici un essai sur ta feuille "Template avant Macro" : Tu cliques sur le bouton et .....
Ca correspond à ton attente ?
Cordialement.
Je te remercie yvouille pour ta reponse
Cest tout a fait sa, Mais Juste apres une longue reflexion, mes donnees dans ma feuille"Template avant macro" n ' ont pas forcement les deux lignes d ' espaces qui les separent . Je voudraits juste avoir le meme resultat avec ta macro mais tout en sachant qu' il n ' ont pas forcement d ' espaces entre elles. Je m ' excuse pour ce changement
Aussi une autre commande bouton afin de remettre les donnees comme elle etaient avant la macro serait bien.
Finalement , ma derniere question concernant ce fichier,
je souhaiterais trouver une macro afin d' envoyer automatiquement des email individuel via oulook afin de communiquer le detail des montants totaux calculer .Cette macro enverais un email individuel grace a l' adresse electronique qui est presente dans la feuille"adresse email" qui correspondant au" ID" ou personne concerner dans la feuille template. Je t ' ais mis un exemple de la maniere que l' email devrait se presenter en feuille "adresse email".
je te remercie d ' avance pour ta reponse
Cdt
lgvba
Salut,
Il me semble que tu avais placé une première réponse à mon dernier message - disant que tout était parfait - et que tu l’as modifié par la suite en y incluant ce nouveau fichier et tes demandes complémentaires.
Sache alors que nous ne sommes plus informés de tels changements de message (par l’option « Editer ») et que c’est par le plus grand des hasards que je suis revenu sur ce fil. A la limite il vaudrait mieux « Répondre » une seconde fois.
C’est assez démotivant de travailler avec des demandes qui changent tout le temps. On a l’impression de faire du travail inutile
Pourquoi veux-tu créer ce tableau récapitulatif - selon ton modèle «Template apres Macro» - si tu veux revenir en arrière par la suite ? Ne serait-il pas plus judicieux de créer une nouvelle feuille sur la base de tes données dans la feuille «Template avant Macro» et d’avoir ces données de base à disposition sur cette première feuille ?
Et puis tes inscriptions sur la feuille «Template avant Macro» vont évoluer ? Alors, lorsque tu lanceras à nouveau la macro reliée au bouton «Totaux», faudrait-il remplacer la feuille «Template apres Macro» et en créer à chaque fois une nouvelle ?
Concernant les informations que tu veux envoyer par courriel, pensais-tu à envoyer une feuille Excel en annexe à un message ou pensais-tu placer le tableau de chaque personne concernée dans le texte du message électronique ?
A te relire.
Salu Yvouille .
Je te remercie et ncore mille excuse concernant les changements..
Concernant le premier point:
Pourquoi veux-tu créer ce tableau récapitulatif - selon ton modèle «Template apres Macro» - si tu veux revenir en arrière par la suite ? Ne serait-il pas plus judicieux de créer une nouvelle feuille sur la base de tes données dans la feuille «Template avant Macro» et d’avoir ces données de base à disposition sur cette première feuille ?
Je m' étais tromper sur la maniere est faite l ' extraction de ces données .
Effectivement, il serait plus judicieux de creer une nouvelle feuile sur la base de mes données dans la feuille «Template avant Macro»
Et puis tes inscriptions sur la feuille «Template avant Macro» vont évoluer ? Alors, lorsque tu lanceras à nouveau la macro reliée au bouton «Totaux», faudrait-il remplacer la feuille «Template apres Macro» et en créer à chaque fois une nouvelle ?
Oui, le nombre de lignes peuvent varier etaussi avoirs plusieur ID(colonne A) dans la feuille «Template avant Macro»
Concernant les informations que tu veux envoyer par courriel, pensais-tu à envoyer une feuille Excel en annexe à un message ou pensais-tu placer le tableau de chaque personne concernée dans le texte du message électronique ?
Oui tu as raison , ce serait plus judicieux que la macro crée une autre feuille excel en piece jointe attaché au courriel ; Mais il faut la mise en forme reste la meme comme dans l ' exemple que je t ' ai fourni dans le fichier."Exemple fichier courrier"
Je te remercie d ' avance pour ta réponse , je t ' ai mis en piece jointe le fichier
Merci
Lgvba
Salut,
J’ai tenté de créer une macro, mais je suis un peu apeuré. En effet, hier soir, à la maison, le code ci-joint ne passait pas avec toutes mes adresses électroniques testées (Pourquoi ????????).
Par contre ce matin au travail, ça joue avec des adresses qui ne passaient pas hier soir. Est-ce que ça à voir avec la messagerie utilisée ?????
Fais des essais chez toi (utilises de préférence des adresses électroniques réelles). Peut-être qu’il faut que les adresses électroniques utilisées soient inscrites dans les «Contacts» de ta messagerie.
La macro devrait faire ceci : Copier la feuille «Base» et la dupliquer sur une nouvelle feuille portant le titre provisoire « Date du jour, heure et minute de la création ». Sur cette nouvelle feuille, tes sous-totaux et ton total général sont créés comme avec mon premier code.
Ensuite chaque décompte individuel est copié à son tour, collé dans la feuille «Base courriel» et envoyé à tour de rôle à l’adresse électronique indiquée sur la feuille «Adresses électroniques». Cette feuille «Base courriel» se trouve à la fin de la macro en l’état du dernier envoi.
En l’état actuel, tu dois normalement confirmer l’envoi de chacun des tableaux individuels (une question du genre «Voulez-vous autoriser votre messagerie à envoyer le courriel préparé ?» est posée à chaque fois). Si tout le reste joue, on va quand même voir si quelqu’un peut nous aider afin d’éviter cela. Je ne sais pas non-plus comment inclure du texte à ton courriel. Est-ce qu'un titre explicite n'est pas suffisant (actuellement "Décompte personnel") ?
Si l’envoi des courriels ne passe pas chez toi, tu peux quand même tester le reste de la macro en neutralisant le passage ci-dessous :
'Envoi de courriels, selon un code d'Amadéus
Dim Destinataire As String, Sujet As String
'Dim AccuseReception As Boolean
Destinataire = Adresse_courriel
Sujet = "Décompte personnel"
ThisWorkbook.Sheets("Base courriel").Copy
ActiveWorkbook.SendMail Destinataire, Sujet
ActiveWorkbook.Close FalseA te relire.
PS : Selon la charte du Forum - et j'y adhère absolument - les titres en majuscules sont à éviter. Merci d'y penser.
Merci Yvouille pour ta réponse
Je veux bien tester ta macro, mais tu n ' a pas joint en piece jointe le fichier modifié. Pourrait tu me le transmettre.
je te remercie d ' avance
Cordialement
Lgvba
Salu yVOUILLE
C' est pas le fichier concernée.................
CDT
Lgvba
Je crois que j'ai confondu deux fichiers
Encore plus désolé que la première fois
Salu Yvouille
J' ai pu tester la macro.... Malheuresement j ' ai du enlever cette partie de code :
'Nom_nouvelle_feuille = Date & " - " & Hour(Time) & "h " & Minute(Time) & "m"
''Sheets("Base (2)").Name = Nom_nouvelle_feuille
Car j ' avais un bug .......
Apres j ' ai pu tester avec des adresses réel et cela fonctionnait correctement.
Concernant ton point ci dessous:
En l’état actuel, tu dois normalement confirmer l’envoi de chacun des tableaux individuels (une question du genre «Voulez-vous autoriser votre messagerie à envoyer le courriel préparé ?» est posée à chaque fois). Si tout le reste joue, on va quand même voir si quelqu’un peut nous aider afin d’éviter cela. Je ne sais pas non-plus comment inclure du texte à ton courriel. Est-ce qu'un titre explicite n'est pas suffisant (actuellement "Décompte personnel") ?
Effectivement, serait-il possible de trouver une solution afin d ' éviter la question d ' autorisation a chaque fois.
Le titre explicite "Décompte personnel" est parfait.
Parcontre mon seule probleme, c ' est que la macro effectue le totaux et l ' envoi d ' email en une seule action .
Serait il possible qu' elle s ' effectue en deux temps, un boutton pour faire le calcul " des totaux" et un autre bouton pour "envoi des emails"..
Enfin serait il possible quand j' effectue l ' envoi d ' email automatique , que la macro me communique un status suivant en colonne "G" ; "décompte personnel envoyé" ou "email absent ".
Je veux ce status car il est possible que certain de mes ID et client n ' ai pas d ' adresse élecronique disponible dans la feuille"adresse électronique". Donc avec ce status ce la permettrai d ' informer l ' utilisateur que le decompte n ' a pas pu etre envoyer, car l ' adresse electronique est absente.
Je t ' ai l ' exemple en piece jointe
Je te remercie infiniment pour ton aide
Cordialement
Lgvba
Bonjour,
Tu as beaucoup de questions en une seule fois.
Concernant le nom que je pensais donner à la nouvelle feuille créée. Ce nom permettrait de différencier les récapitulatifs effectués. Autrement comment penses-tu différencier les différentes feuilles créées à chaque fois ?
J’avais un peu compliqué les choses en indiquant dans le nom de la nouvelle feuille la date du jour ainsi que l’heure, de manière à pouvoir faire plusieurs essais de suite. C’est très bizarre que ça ne passe pas chez toi. Mais l’on pourrait simplifier en n’indiquant que la date du jour, vu que tu ne ferras probablement pas plus d’un envoi par jour. Essaie quand même de remplacer la ligne Nom_nouvelle_feuille = Date & " - " & Hour(Time) & "h " & Minute(Time) & "m" par Nom_nouvelle_feuille = Date.
Ceci dit, lorsque tu auras créé, comme tu le demandes, les récapitulatifs individuels sans envoyer les courriels, comment veux-tu décider d’envoyer quels courriels ? Je m’explique ; le bouton pour l’envoi des courriels tu le voudrais sur quelle feuille ? Sur la feuille « Base » ? Sur la nouvelle feuille créée (ça risque d’être compliqué) ? Et lorsque tu auras plusieurs feuilles de récapitulatif, comment choisir celle qui doit être utilisée pour l’envoi des courriels ? Ou est-ce que tu imaginais effacer les feuilles de récapitulatifs au fur et à mesure que tu n’en as plus besoin ?
Selon tes réponses on verra comment avancer.
En ce qui concerne la confirmation de chacun des courriels, je crois que je vais essayer d’obtenir de l’aide en ouvrant un fil parallèle. Je verrai ça ces jours prochains.
A te relire.
Salu yvouille
Je reviens vers toi , apres une petite absence sur le forum, J ' esperere que tout va bien et bonne année a toi l ' expert.
Pour revenir a nos code vba.
J' ai essayer d ' améliorer le code ci dessous concernant la macro pour l ' envoi de courriel , afin de pour voir intégrer un
CC. et aussi un message dans le corp du message, par exemple " Veuillez trouver votre décompte personnel au courriel " .
Malheusement je n ' arrive pas a l' adapter a mes besoins.
'Envoi de courriels, selon un code d'Amadéus
Dim Destinataire As String, Sujet As String
Dim AccuseReception As Boolean
Destinataire = Adresse_courriel
Sujet = "Décompte personnel"
ThisWorkbook.Sheets("Base courriel").Copy
ActiveWorkbook.SendMail Destinataire, Sujet
ActiveWorkbook.Close FalseConcernant le message d ' alerte d ' excel lors de l ' envois je n ' arrive pas a trouver le bonne méthode afin d' éviter cette alerte.
J ' ai pu trouver LE CODE ci dessous , sur le site
qui traite ce sujet mais je n' arrive pas a appliquer sa méthode.
Ce qui serais intéressant c ' est d ' appliquer la methode a la macro, Pourrais tu me donner un dernier coup pouce sur ce problem
cdt
Lgva
Sub CDO_Mail_Small_Text()
Dim iMsg As Object
Dim iConf As Object
Dim strbody As String
' Dim Flds As Variant
Set iMsg = CreateObject("CDO.Message")
Set iConf = CreateObject("CDO.Configuration")
' iConf.Load -1 ' CDO Source Defaults
' Set Flds = iConf.Fields
' With Flds
' .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
' .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") _
' = "Fill in your SMTP server here"
' .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
' .Update
' End With
strbody = "Hi there" & vbNewLine & vbNewLine & _
"This is line 1" & vbNewLine & _
"This is line 2" & vbNewLine & _
"This is line 3" & vbNewLine & _
"This is line 4"
With iMsg
Set .Configuration = iConf
.To = "ron@debruin.nl"
.CC = ""
.BCC = ""
.From = """Ron"" <ron@something.nl>"
.Subject = "New figures"
.TextBody = strbody
.Send
End With
End Sub
Salut,
Avec le temps, j'ai un peu perdu de mon enthousiasme pour ce sujet et puis j'ai passablement à faire actuellement
Amicalement.