Additionner des valeurs

Signaler
Messages postés
3
Date d'inscription
mercredi 25 janvier 2012
Statut
Membre
Dernière intervention
29 janvier 2012
-
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
-
Bonjour, j'ai une macro en Visual Basic, qui a pour but d'aller chercher les rendez-vous d'une categorie définie dans le calendrier Outlook 2010, d'en extraire l'objet, la durée (en minutes), et la catégorie, et de les afficher.
Je souhaiterais faire un total de toutes les durées de rendez-vous, les mettre dans une variable, et afficher cette variable.

Voici le code :
Sub DemoFindNext()

Dim myNameSpace As Outlook.NameSpace
Dim tdystart As Date
Dim tdyend As Date
Dim myAppointments As Outlook.Items
Dim currentAppointment As Outlook.AppointmentItem
Dim mydate As Date

mydate = "11/11/2011"


Set myNameSpace = Application.GetNamespace("MAPI")
' tdystart = VBA.Format(Now, "Short Date")
tdyend = VBA.Format(Now + 10, "Short Date")
tdystart = VBA.Format(mydate, "short date")

Set myAppointments = myNameSpace.GetDefaultFolder(olFolderCalendar).Items
myAppointments.Sort "[Start]"
myAppointments.IncludeRecurrences = True
Set currentAppointment = myAppointments.Find("[Start] >= """ & _
tdystart & """ and [Start] <= """ & tdyend & """")
While TypeName(currentAppointment) <> "Nothing"
' MsgBox currentAppointment.Subject
If currentAppointment.Categories = "DEPLACEMENTS" Then
Debug.Print currentAppointment.Subject
Debug.Print currentAppointment.Duration
Debug.Print currentAppointment.Categories
End If
Set currentAppointment = myAppointments.FindNext
Wend

End Sub

Ce qui affiche mes rendez-vous sous la forme :
Objet
Durée
Catégorie (En l'occurence ici "DEPLACEMENTS")

Par exemple :
Réunion Pro
120
DEPLACEMENTS

Réunion Perso
90
DEPLACEMENTS

Réunion à Paris
180
DEPLACEMENTS

(etc.)

Je dois donc afficher à la fin la somme de toutes les durées (soit 120+90+180 etc.).

(Je n'y connais rien en Visual Basic)

Merci d'avance.

9 réponses

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
240
Bonjour,

si tu as la donnée dans :
Debug.Print currentAppointment.Duration 

je ne vois rien qui t'empêche d'incrémenter un compteur toto, du genre
dim toto as long
toto = toto & currentAppointment.Duration 

à supposer que ce soit un numérique (je ne connais pas ton outlook)
Si strint et non numérique ===>>> alors ===>>
toto = toto & Val(currentAppointment.Duration) 

Mais c'est tellement simple, que je me demande si tu n'as pas voulu dire autre chose

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
3
Date d'inscription
mercredi 25 janvier 2012
Statut
Membre
Dernière intervention
29 janvier 2012

"Mais c'est tellement simple, que je me demande si tu n'as pas voulu dire autre chose"
Non non c'est bien ça, c'est juste que j'y connais rien donc je demande un truc qui doit surement paraitre évident quand on connait^^

Donc je met ça en haut pour déclarer la variable :
dim toto as long


Ensuite, ça :
toto = toto & currentAppointment.Duration 

et ça :
toto = toto & Val(currentAppointment.Duration) 

Je les insère n'importe ou ?

Et que faut-il mettre ensuite pour afficher le résultat ? Y'a rien à rajouter ?
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
240
Tu voudras bien comprendre pourquoi je te laisse immédiatement là !
Pour en être là : une seule explication possible : le bout de code que tu as montré est lui-même un copier/coller non compris (pas un millième de millième d'once compris. Juste copié et collé). Même pas analysé ! Dans le cas contraire, tu ne poserais pas ta dernière question ...
Désolé, mais il y a une énorme différence entre aider un développeur, même débutant, et me faire complice de n'importe quoi.
Tu veux développer ? commence par étudier un peu ton langage, au lieu de faire ce que tu fais là.



____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient

Salut,

Moi c'est pareil tu comprendras pourquoi je te laisse aussi?

toto = toto & Val(currentAppointment.Duration)
Je les insère n'importe ou ?

Je te donne une indic...
Non, tu le mets dans un bloc sub - end sub
comme par exemple:
Private Sub Command1_Click()

End Sub


Par contre j'ai beaucoup de mal à expliquer ce que c'est, regarde plutôt CE LIEN

Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
mydate = "11/11/2011"
c'est interdit, ça !

VBA.Format(mydate, "short date")
Bien ! FormatDateTime est plus joli, mais bien !


While TypeName(currentAppointment) <> "Nothing"

se dit
Do Until currentAppointment Is Nothing


Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
240
Bonjour, Renfield,

Il va probablement venir te dire te "rétorquer" que son bout de code est la réplique à peine transformée, notamment en matière d'utilisation de sa boucle while, de tout ce qu'il a trouvé sur le Web en utilisation d'une procédure nommée DemoFindNext() qui, créée et montrée en exemple par Microsoft, a, depuis été mille et une fois carrément plagiée sur un nombre incalculable de sites.


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
3
Date d'inscription
mercredi 25 janvier 2012
Statut
Membre
Dernière intervention
29 janvier 2012

ucfoutu : Ecoutes, avant de te foutre des gens genre "ouai il a copié le code, il connais rien, il veut qu'on l'aide ..." réfléchis un minimum stp.

J'ai juste besoin d'automatiser quelque chose sous Outlook. Je suis donc allé voir sur internet s'il existait des maccros Visual Basics qui faisaient ça. J'en ai trouvé un, donc oui le code est copié/collé, et je le ne cache pas.

Cependant j'avais juste besoin de modifier un détail dans le script pour qu'il fasse exactement ce dont j'ai besoin.

Le problème c'est que je ne connais pas VB, et j'ai jamais touché une seule fois à la programmation. Tu en déduis donc que je ne vais pas aller apprendre un language en entier juste pour coder 2 lignes dans un script quand même ?

Je viens donc demander de l'aide ici, et tu me sors "Tu veux développer ? Apprends le language."
Super, belle mentalité.

Bref, je vais aller voir ailleurs, merci quand même.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
240
Le problème c'est que je ne connais pas VB, et j'ai jamais touché une seule fois à la programmation. Tu en déduis donc que je ne vais pas aller apprendre un language en entier juste pour coder 2 lignes dans un script quand même


J'en ai trouvé un, donc oui le code est copié/collé

Mais :
- tu es ici sur un forum de développeurs (pas de self-service)
- un minimum (notions de bases) es nécessaire
- ta demande relève de ces notions rudimentaires
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
240
Tu vas peut-être mieux comprendre ainsi :
- le bout de code que tu as montré est celui d'une procédure
- nous ignorons comment elle est appelée (et depuis quoi) dans ton appli
- nous ne savons même pas si depuis le VBA de Outlook ou depuis VB6 (la section dans laquelle tu as posté)
- nous ignorons même quelle est l'interface de ton appli

Ta question portait sur l'incrémentation (en vue de l'affichage du résultat) d'un compteur des durées, sans même savoir où et comment, sur ton interface, tu voulais cet affichage.

Nous y avons répondu.

C'est ainsi que fonctionne un forum technique : réponse spécifique à une question spécifique et isolée. Le reste (conception de l'interface, etc ...) est à la charge de celui qui pose une question spécifique
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient