Suppression de RDV dans Outlook via macro Excel

Suppression de RDV dans Outlook via macro Excel - VB/VBA/VBS - Programmation

Marsh Posté le 04-05-2010 à 11:46:35    

Bonjour à tous,  
 
J'ai une macro dans Excel qui crée des RDV dans Outlook, récupérée sur le Net, qui fonctionne une fois modifiée par mes soins pour ma convenance.
 
Sauf que si je lance plusieurs fois la macro d'affilée, plusieurs RDV sont créés, ce qui bien entendu n'est pas bon.
J'ai géré les conflits dans Excel. Un onglet m'affiche maintenant les RDV qui ne sont pas bons, et qui doivent être supprimés. Sauf que là est mon problème : je trouve plein de bouts de code qui permettent de créer des RDV, mais pas des codes documentés qui permettent de les supprimer
 
Auriez-vous ça sous le coude ?
 
:jap:


---------------
J'ai le poignet loin derrière | Top hontes HFR | [VDS] Montres | [VDS] de l'histoire
Reply

Marsh Posté le 04-05-2010 à 11:46:35   

Reply

Marsh Posté le 05-05-2010 à 12:23:07    

Hello
 
Supprimer un rendez vous c'est assez simple. Le souci reside dans le fait de trouver le bon.
Tu veux tester sur quoi ? Le sujet ? Le sujet et la date etc. ?
 
Je te donne un début de piste :

Code :
  1. Set myOlApp = CreateObject("Outlook.Application" )
  2.     Set myNameSpace = myOlApp.GetNamespace("MAPI" )
  3.     Set myOlApp.ActiveExplorer.CurrentFolder = myNameSpace.GetDefaultFolder(olFolderCalendar)
  4.     Set outlookitems = myOlApp.ActiveExplorer.CurrentFolder.Items
  5.     Cpte = outlookitems.Count
  6.    
  7.         For x = 1 To Cpte
  8.             'exemple de test : si le sujet est "toto" alors on supprime le rdv
  9.             If outlookitems(x).Subject = "toto" Then
  10.                 outlookitems(x).Delete
  11.             End If
  12.         Next x


 
Edit : Exemple de propriété :
outlookitems(x).Start ---)> Date de début
outlookitems(x).End ---)> Date de fin
outlookitems(x).Location ---)> Lieu
outlookitems(x).Body ---)> Corps du message
etc.


Message édité par SuppotDeSaTante le 05-05-2010 à 12:27:57

---------------
Soyez malin, louez entre voisins !
Reply

Marsh Posté le 12-05-2010 à 15:52:45    

Hello,  
 
Merci pour ton code bien explicite. Il fonctionne parfaitement, mais j'ai une petite spécificité que je n'arrive pas à résoudre. J'avoue qu'étant parti en vacances et ayant laissé le tout à mon collègue, j'avais un peu laissé de côté, mes excuses :o
 
Les RDV sont créés auparavant pour s'afficher sur toute la journée : alldayevent=true, pas de soucis.
Avant de faire la suppression, je fais une vérification des RDV existants, de quoi découle deux variables : DateDebut et DateFin, ces deux dates étant celles de début et de fin des RDV à supprimer (mais uniquement, donc, pour les alldayevent correspondant à ce que je cherche - la recherche se fait sur le subject, pas de problème là-dessus normalement)
 
Je n'ai malheureusement pas le code en tête, mais j'ai donc :
 
Pour les dates comprises entre DateDebut et Datefin
  Si le sujet du RDV = MonSujet Alors supprimer le RDV
 
Sauf que j'ai un problème sur les dates : imaginons que DateDebut = Lundi et que DateFin = Jeudi, ça va supprimer les RDV alldayevent souhaités de Mardi à Jeudi, mais sauter Lundi. J'ai pas l'impression, du coup, que le alldayevent de Lundi soit bien enregistré sur le Lundi, mais je ne sais comment le pointer :/
 
Une idée ? :)
   


---------------
J'ai le poignet loin derrière | Top hontes HFR | [VDS] Montres | [VDS] de l'histoire
Reply

Marsh Posté le 12-05-2010 à 21:04:41    

Et avec une date de debut du dimanche ? Je pense que vous avez peu de rendez vous le dimanche. Mais ca permetra peut etre d'inclure le lundi...


---------------
Soyez malin, louez entre voisins !
Reply

Marsh Posté le 13-05-2010 à 11:26:16    

C'est ce que je pensais faire, mais quand je fais DateDebut=DateDebut-1 (en supposant alors que ça prenne le jour précédent), ça reste à DateDebut (donc ne passe pas au jour précédent)
 
L'exemple avec le lundi est arbitraire, c'était juste pour illustrer, ça peut bien entendu être n'importe quel jour de la semaine :jap:
 
Dans un tableur Excel, si je mets dans la cellule A1 une date, et que dans A2 je fais =A1-1, j'ai bien le jour précédent. Je  n'arrive pas à reproduire la chose dans la Macro ; je pense aussi que ça pourrait solver le problème...


---------------
J'ai le poignet loin derrière | Top hontes HFR | [VDS] Montres | [VDS] de l'histoire
Reply

Marsh Posté le 13-05-2010 à 17:15:15    

Ta variable est bien defini comme une date et non pas une chaine ?


---------------
Soyez malin, louez entre voisins !
Reply

Marsh Posté le 14-05-2010 à 17:11:23    

En fait, ne sachant pas comment la définir, elle ne l'est pas vraiment...
 
Elle est contenue dans une cellule du tableau, par exemple dans A1, et je fais DateDebut = range("A1" ). Sauf que cette cellule A1 est remplie par un programme tiers sur lequel je n'ai pas la main, je sais pas quel est le type de format utilisé :/
 
C'est ma toute première macro, faut dire :o


---------------
J'ai le poignet loin derrière | Top hontes HFR | [VDS] Montres | [VDS] de l'histoire
Reply

Marsh Posté le 14-05-2010 à 17:19:45    

essaie qqchose comme ca :
DateDebut = CDate(Range("A1" ))
DateDebut = DateDebut - 1
 
Mise a part le type de variable, je ne vois pas pourquoi il n'arrive pas a soustraire 1 à une date...


---------------
Soyez malin, louez entre voisins !
Reply

Marsh Posté le 24-02-2014 à 15:47:44    

Bonjour.
 
Déjà merci pour ce code.
 
Par contre moi j'ai un autre problème, j'ai un tableur Excel qui prend en compte plusieurs autres tableur, après je fais mon tri et ma mise en forme ce qui me donne un tableur dans lequel mes RDV apparaissent.
 
Le problème est que je n’arrive pas à mettre à jour la macro pour supprimé tous les rdv de la colonne A.
 
Pouvez-vous m'aider Merci
 
Code :
Set myOlApp = CreateObject("Outlook.Application" )
    Set myNameSpace = myOlApp.GetNamespace("MAPI" )
    Set myOlApp.ActiveExplorer.CurrentFolder = myNameSpace.GetDefaultFolder(olFolderCalendar)
    Set outlookitems = myOlApp.ActiveExplorer.CurrentFolder.Items
    Cpte = outlookitems.Count
   
        For x = 1 To Cpte
            'exemple de test : si le sujet est "toto" alors on supprime le rdv
           If outlookitems(x).Subject = Columns("A" ) Then
                outlookitems(x).Delete
            End If
        Next x

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed