IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Outlook Discussion :

Classer les carnets d'adresse


Sujet :

VBA Outlook

  1. #1
    Membre actif Avatar de GADENSEB
    Homme Profil pro
    Responsable Administratif et Financier
    Inscrit en
    Mars 2014
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable Administratif et Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 569
    Points : 285
    Points
    285
    Par défaut Classer les carnets d'adresse
    Re-salut le forum,



    Dans la derniétre phase de mon projet de gérer les carnets d'adresse je voudrais les classer par ordre alphabétique
    et le dossier "Contacts restant en premier

    du coup je modifie un peu le code d'oliv- ici


    mais j'ai une erreur 438 propriété ou méthode non gérée par cet objet
    mais myFolderContact ne se déclare pas en .item .....

    Bizarre


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    Sub CLASSERCARNETSADRESSE()
    Dim myOlApp As Outlook.Application
    Dim myFolderSContacts As Outlook.folders
    Dim myFolderContacts As Outlook.Folder
    Set myOlApp = CreateObject("Outlook.Application")
    Set myNamespace = myOlApp.GetNamespace("MAPI")
     
    Set myFolderSContacts = myNamespace.GetDefaultFolder(olFolderContacts).folders ' = tous les sous dossiers du dossier contact par défaut
     
    For i = myFolderSContacts.Count To 1 Step -1 'on parcours tous les dossiers  en commençant par la fin
    Set myFolderContacts = myFolderSContacts.item(i) 'on
     
    If myFolderContacts.Name = "Contacts" Then
    Else
    myFolderContacts.Sort "Name"
    End If
    Next i
    End Sub
    Bonne journée
    Seb



    ###############################
    C'est Totomatique, On va tout Totomate-isé ;-)
    ###############################

  2. #2
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    Connais tu le mode d'exécution "pas à pas (f8)" ? et les fenêtres "espion" et "variables locales" ?
    çà va changer ta vie de programmeur.

    ensuite il n'y a aucune variable "myFolderContact"

    Si tu parles de "myFolderContacts" c'est déclaré en Outlook.Folder donc tu ne peux y faire entrer que des Outlook.Folder

    Finalement je ne comprends pas ce que tu veux classer ? les fiches contacts dans chaque annuaire, les annuaires entre eux (et où dans l'arborescence de tous les dossiers ou dans le volet de navigation sur la vue CONTACTS ?)

  3. #3
    Membre actif Avatar de GADENSEB
    Homme Profil pro
    Responsable Administratif et Financier
    Inscrit en
    Mars 2014
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable Administratif et Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 569
    Points : 285
    Points
    285
    Par défaut
    Je sais que je dois me professionnaliser en utilisant + les fenêtres "espion" et "variables locales"

    Je m'y emploi

    Je traite déjà avec F8

    Je me réexprime + clairement du coup;

    je cherche à classer les annuaires, entre eux dans l'ordre alphabetique et en laissant "Contacts" en premier
    ceux que l'on a créer ici

    Suis-je plus clair là ? lol

    Seb
    Bonne journée
    Seb



    ###############################
    C'est Totomatique, On va tout Totomate-isé ;-)
    ###############################

  4. #4
    Membre actif Avatar de GADENSEB
    Homme Profil pro
    Responsable Administratif et Financier
    Inscrit en
    Mars 2014
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable Administratif et Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 569
    Points : 285
    Points
    285
    Par défaut
    Hello
    Bon j'ai bossé dessus et je crois que j'y suis presque !!
    Mais ya un truc qui me parait pas cohérent mais j'arrive pas à savoir quoi .....

    Bonne journée

    seb

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Sub CLASSERCARNETSADRESSE()
     Dim myOlApp As Outlook.Application
     Dim myFolder As Outlook.MAPIFolder
     Dim myItems As Outlook.Items
     Dim myNameSpace As Outlook.NameSpace
     Dim myFolderSContacts As Outlook.folders
     Dim myFolderContacts As Outlook.Folder
     Set myFolderSContacts = myNameSpace.GetDefaultFolder(olFolderContacts).folders
     Set myItems = myFolderSContacts.Items
     
    For i = myFolderSContacts.Count To 1 Step -1 'on parcours tous les dossiers  en commençant par la fin
    Set myFolderContacts = myFolderSContacts.item(i) 'on
     
    If myFolderContacts.Name = "Contacts" Then
    Else
    myItems.Sort "name", False
    End If
    Next i
    End Sub
    Bonne journée
    Seb



    ###############################
    C'est Totomatique, On va tout Totomate-isé ;-)
    ###############################

  5. #5
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    SAlut,
    Test donc ta macro en mode pas à pas

  6. #6
    Membre actif Avatar de GADENSEB
    Homme Profil pro
    Responsable Administratif et Financier
    Inscrit en
    Mars 2014
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable Administratif et Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 569
    Points : 285
    Points
    285
    Par défaut
    ;-)

    En fait c'est surtout le concept, que je souhaiter pour avis
    --> est-ce que je vais dans le bon sens de la logique de la macro ?

    Plus que la macro en elle mm

    J'avais déjà tester en pas à pas et j’obtiens sur cela
    il y a une erreur 91 variable objet ou vaiable de bloc non définie sur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set myFolderSContacts = myNameSpace.GetDefaultFolder(olFolderContacts).folders

    grrrr outlook est plus compliqué dans ses macros qu'excel .... grrr mais je vais comprendre la logique, je tien bon
    Bonne journée
    Seb



    ###############################
    C'est Totomatique, On va tout Totomate-isé ;-)
    ###############################

  7. #7
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    En fait c'est surtout le concept, que je souhaiter pour avis
    --> est-ce que je vais dans le bon sens de la logique de la macro ?
    non je crois pas

    quand tu crées tes dossiers de contacts, il viennent se mettre sous le dossier "CONTACT" lorsque tu es dans la vue "COURRIER" ctrl+1 et que tu cliques sur l'icone tout en bas du volet de navigation qui s'appelle "liste des dossiers" CTRL+6 : là c'est automatiquement dans l'ordre ! c'est l'équivalent de l’explorateur windows

    Mais tu peux aussi les voir dans la vue CONTACT ctrl+3 et là ils arrivent dans l'ordre de création me semble t'il. je pense que c'est de cette vue dont tu parles !

    Manuellement si tu cliques bouton droit sur "Mes contacts" tu as le choix "organiser par nom"

    par macro c'est la propriété position que tu trouveras ci-dessous qu'il faut modifier.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    Sub ListeMesContacts()
    '---------------------------------------------------------------------------------------
    ' Procedure : ListeMesContacts
    ' Author    : Oliv-
    ' Date      : 25/11/2014
    ' Purpose   : Liste les des DOSSIERS "CONTACTS" et le Dossier correpondant
    '---------------------------------------------------------------------------------------
    '
        Dim objNS As Outlook.NameSpace
        Dim objExpCal As Outlook.Explorer
        Dim objNavMod As Outlook.ContactsModule
        Dim objNavCalPart As Outlook.NavigationFolders
        Dim i, objitem
     
        Set objNS = Application.Session
        Set objExpCal = objNS.GetDefaultFolder(olFolderContacts).GetExplorer
     
        Set objNavMod = objExpCal.NavigationPane.Modules.GetNavigationModule(olModuleContacts)
        Set objNavCalPart = objNavMod.NavigationGroups.Item("Mes contacts").NavigationFolders
        For i = 1 To objNavCalPart.Count
            Set objitem = objNavCalPart(i)
            On Error Resume Next
     
            FoldName = objitem.Folder.Name & "-" & objitem.Folder.FullFolderPath
            If Err Then FoldName = "Pas accessible"
    Debug.Print objitem & "-->" & FoldName
    'ici pour changer sa position dans la liste
    '        objitem.Position = 4
     
        Next i
    End Sub

  8. #8
    Membre actif Avatar de GADENSEB
    Homme Profil pro
    Responsable Administratif et Financier
    Inscrit en
    Mars 2014
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable Administratif et Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 569
    Points : 285
    Points
    285
    Par défaut
    Hello

    désolé j'ai mis un peu de temps pour répondre mais j'avais du mal à comprendre (la crève surement)

    J'ai testé avec le bouton click-droit sur "Mes Contacts" -> puis "Organiser par nom" et effectivement cela classe les sous-dossiers de "Contacts"

    au passage "Contacts" est aussi classé par ordre Alphabétique.

    Du coup, now je peux essayer de comprendre ta macro ....


    avec
    J'obtiens dans la fenêtre d’exécution
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    .................................................
    TPE2010-->TPE2010-\\Dossiers personnels\Contacts\TPE2010
    TPE2011-->TPE2011-\\Dossiers personnels\Contacts\TPE2011
    TPE2012-->TPE2012-\\Dossiers personnels\Contacts\TPE2012
    TPE2013-->TPE2013-\\Dossiers personnels\Contacts\TPE2013
    ..................................................
    du coup si je suis le raisonnement :

    La position à affectée est le résultat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    \\Dossiers personnels\Contacts\TPE2013
    --> c'est la bonne logique ?

    Merci

    Seb
    Bonne journée
    Seb



    ###############################
    C'est Totomatique, On va tout Totomate-isé ;-)
    ###############################

  9. #9
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    Salut,

    objitem.Position te donne la position actuelle = un chiffre

    tu peux l'afficher dans la fenetre execution en modifiant la ligne debug.print par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Debug.Print objitem.Position & ":" & objitem & "-->" & FoldName
    et si tu fais objitem.Position =1 , cela te met objitem en première position.

  10. #10
    Membre actif Avatar de GADENSEB
    Homme Profil pro
    Responsable Administratif et Financier
    Inscrit en
    Mars 2014
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable Administratif et Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 569
    Points : 285
    Points
    285
    Par défaut
    hello

    pfiou..... celle là est compliquée
    Autant sur les autres vba outlook, j'avais pigé.... là je rame

    Le nouveau résultat en vbe marche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    63:DLA2006-->DLA2006-\\Dossiers personnels\Contacts\DLA2006
    64:Catégorie rouge-->Catégorie rouge-\\Dossiers personnels\Contacts\Catégorie rouge
    65:Catégorie orange-->Catégorie orange-\\Dossiers personnels\Contacts\Catégorie orange
    66:PLATEFORME-->PLATEFORME-\\Dossiers personnels\Contacts\PLATEFORME

    Par contre, ce que je pige pas c'est que l'on pas faire style
    tout bêtement comme en vba excel ....


    grrrrr

    Bonne journée

    Seb
    Bonne journée
    Seb



    ###############################
    C'est Totomatique, On va tout Totomate-isé ;-)
    ###############################

  11. #11
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    Je ne comprend pas ce que tu ne piges pas !

    Le programme boucle sur tous les CARNETS

    par exemple il arrive sur le
    66LATEFORME-->PLATEFORME-\\Dossiers personnels\Contacts\PLATEFORME

    qui est donc en 66 ème position ! si tu veux qu'il soit en 2 ème position tu mets

    Bien sûr il faut identifier tes lignes avant !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if objitem ="PLATEFORME" then objitem.Position= 4
    ca c'est pour un cas particulier par exemple ton dossier CONTACTS PAR DEFAUT !


    l'objet ContactsModule ne propose pas de méthode SORT si tu veux classer l'ensemble des dossiers par ordre alpha tu dois

    utiliser une fonction de tri propre à VBA, recherche sur GOOGLE (du VBA Excel peut fonctionner)

  12. #12
    Membre actif Avatar de GADENSEB
    Homme Profil pro
    Responsable Administratif et Financier
    Inscrit en
    Mars 2014
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable Administratif et Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 569
    Points : 285
    Points
    285
    Par défaut
    Hello

    Ok j'ai fait un test cela marche nikel !

    C longuet mais cela marche !

    Par contre ce que je me dis c'est que cela ne s'adapte pas à une évolution future (en nouveaux noms) dans la liste des carnets d'adresse

    Je viens de lire un bon nombre de site concernant le vba sous outlook et je commence à comprendre
    serait-il interessant de passe par myitem faisant partit de myitems qui est une collection donc classable ..... ?

    Le raisonnement est correct ?

    Bonne soirée

    Seb
    Bonne journée
    Seb



    ###############################
    C'est Totomatique, On va tout Totomate-isé ;-)
    ###############################

  13. #13
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    salut,
    Non ici tes carnets d'adresses dans le volet sont des POMMES tu ne peux en faire des BANANES

    par contre les 2 TU PEUX LES TRIER par taille mais bien sûr les Bananes n'ont pas la même taille que les POMMES.

  14. #14
    Membre actif Avatar de GADENSEB
    Homme Profil pro
    Responsable Administratif et Financier
    Inscrit en
    Mars 2014
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable Administratif et Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 569
    Points : 285
    Points
    285
    Par défaut
    Salut !
    Je reviens après un temps d'absence ....

    Et j'avoue être toujours autant perdu sur cette macro.

    Et si on se servait du resultat VBE pour classer les carnets d'adresse par nom, ce qui donne une position et du coup on peut renvoyer cette position pour :
    Ça te parait logique ?
    Bonne journée
    Seb



    ###############################
    C'est Totomatique, On va tout Totomate-isé ;-)
    ###############################

  15. #15
    Membre actif Avatar de GADENSEB
    Homme Profil pro
    Responsable Administratif et Financier
    Inscrit en
    Mars 2014
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable Administratif et Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 569
    Points : 285
    Points
    285
    Par défaut
    Hello
    Je crois que je vais abandonner.... lol
    Je trouve pas
    Bonne journée
    Seb



    ###############################
    C'est Totomatique, On va tout Totomate-isé ;-)
    ###############################

Discussions similaires

  1. [OL-2010] Supprimer les carnets d'adresse sauf le générique
    Par GADENSEB dans le forum VBA Outlook
    Réponses: 10
    Dernier message: 29/11/2014, 19h02
  2. IIFP (MIIS) pour synchroniser les carnets d'adresse
    Par maikess dans le forum Windows Serveur
    Réponses: 1
    Dernier message: 21/07/2010, 13h40
  3. Réponses: 1
    Dernier message: 07/07/2010, 09h02
  4. Réponses: 0
    Dernier message: 08/09/2009, 15h07
  5. Réponses: 6
    Dernier message: 18/06/2007, 16h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo