Additionner des valeurs

Zit0x Messages postés 3 Date d'inscription mercredi 25 janvier 2012 Statut Membre Dernière intervention 29 janvier 2012 - 25 janv. 2012 à 21:52
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 29 janv. 2012 à 09:48
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

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 231
25 janv. 2012 à 22:08
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
0
Zit0x Messages postés 3 Date d'inscription mercredi 25 janvier 2012 Statut Membre Dernière intervention 29 janvier 2012
25 janv. 2012 à 23:33
"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 ?
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 231
26 janv. 2012 à 00:09
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
0
Utilisateur anonyme
26 janv. 2012 à 01:07
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
26 janv. 2012 à 06:32
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
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 231
26 janv. 2012 à 08:04
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
0
Zit0x Messages postés 3 Date d'inscription mercredi 25 janvier 2012 Statut Membre Dernière intervention 29 janvier 2012
29 janv. 2012 à 02:01
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.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 231
29 janv. 2012 à 08:42
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
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 231
29 janv. 2012 à 09:48
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
0