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 :

Repérer des caractères dans le nom du fichier lors du classement d'un courriel


Sujet :

VBA Outlook

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Août 2010
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 176
    Points : 95
    Points
    95
    Par défaut Repérer des caractères dans le nom du fichier lors du classement d'un courriel
    Bonjour,

    Dans des discussions antérieures, je mentionnais que j'avais une macro qui permet de classer des courriels dans des dossiers et qui avait été écrite par un ancien employé.
    Avec votre aide, j'ai réussi à la modifier afin qu'elle affiche les raccourcis dans un dossier et qu'elle affiche le bureau.

    Ma question est la suivante:

    Pour nommer mon courriel de la façon que notre entreprise le demande, je dois repérer certain caractères. Entre autres, je dois indiquer ce qu'on appelle un no de service suivi du no de projet. Donc, si j'ai choisi le projet P012345 dans service 081, dans le nom du fichier du courriel, je retrouverai 081P012345.

    Mon problème est que si la personne veut classer le courriel dans un dossier autre qu'un projet ou service, exemple dans le dossier "Mes documents", je fait en sorte que la macro écrit "MesDocs". Là où est le problème, c'est au numéro de service. Je ne dois rien mettre. mais comme le numéro de service est une valeur numérique à 3 chiffres (entre 000 et 999), comment puis-je l'intercepter ?
    Voici la partie du code que j'ai trouvé dans la macro pour les numéros de projets et de services:
    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
     
        If BrowseForFolder = "" Then Exit Function
        FolderName = BrowseForFolder & "\"
     
        'Recherche le nom du dossier afin de repérer le no de service et de projet
       ' Modifications pour nouveaux projets 2012-02-29 LP
        If Mid(FolderName, (InStr(FolderName, "\P0") + 1), 3) = "P00" Then
              NUM_PROJ = UCase(Mid(FolderName, (InStr(FolderName, "\P0") + 1), 7))
         ElseIf UCase(Mid(FolderName, (InStr(FolderName, "\B-0") + 1), 4)) = "B-00" Then
                   NUM_PROJ = UCase(Mid(FolderName, (InStr(FolderName, "\B-0") + 1), 9))
         ElseIf UCase(Mid(FolderName, (InStr(FolderName, "\P-0") + 1), 4)) = "P-00" Then
              NUM_PROJ = UCase(Mid(FolderName, (InStr(FolderName, "\P-0") + 1), 9))
         ElseIf UCase(Mid(FolderName, (InStr(FolderName, "\GC-0") + 1), 4)) = "GC-0" Then
              NUM_PROJ = UCase(Mid(FolderName, (InStr(FolderName, "\GC-0") + 1), 10))
         ElseIf UCase(Mid(FolderName, (InStr(FolderName, "\RG-0") + 1), 4)) = "RG-0" Then
              NUM_PROJ = UCase(Mid(FolderName, (InStr(FolderName, "\RG-0") + 1), 10))
        Else
              NUM_PROJ = UCase(Mid(FolderName, (InStr(FolderName, "\P0") + 1), 7))
        End If
        NUM_PROJ = InputBox("Veuillez valider le numéro de projet.", "Numéro de projet", NUM_PROJ)
        If NUM_PROJ = "" Then
            Exit Function
        Else
            '**** ajout du no de service - MAJ 2014-01-19 LP
            NUM_PROJ = UCase(Mid(FolderName, (InStr(FolderName, "\P0") + 1) - 4, 3)) & NUM_PROJ
        End If
    Je crois qu'à la ligne 25, je dois mettre une condition. Est-ce qu'il existe fonction ou condition qui pourrait comparer la valeur?

    Merci

  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
    SAlut,
    A quoi ressemblent tes nom de dossiers ?

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Août 2010
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 176
    Points : 95
    Points
    95
    Par défaut
    Bonjour,

    Mes noms de fichier peuvent varier dépendemment où le courriel demande d'être classé.
    Cela peut varier du "C" au "C:\Documents and Settings\pelllo\Desktop" au "C:\Documents and Settings\pelllo\My Documents", etc.

    J'ai modifié un peu le code qui me donne quelque chose comme ceci:
    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
     
        ' *********** nouveau code pour avoir les raccourcis
        ' ***************************** 2014-01-19
        BrowseForFolder = BrowseFolderExplorer("Classement de courriel(s)", msoFileDialogViewDetails, SDossier(0, 0) & "\")
        stNumProj = ""   ' no de projet
        stNumServ = ""   ' no service
     
        If BrowseForFolder = "" Then Exit Function
        FolderName = BrowseForFolder '& "\"
        'Recherche le nom du dossier afin de repérer le no de service et de projet
        ' Modifications pour nouveaux projets 2012-02-29 LP
        If UCase(Mid(FolderName, (InStr(FolderName, "\P0") + 1), 2)) = "P0" Then ' ancien no
              stNumProj = UCase(Mid(FolderName, (InStr(FolderName, "\P0") + 1), 7))
              stNumServ = Mid(FolderName, (InStr(FolderName, "\P0") + 1) - 4, 3)  ' no service
     
         ElseIf UCase(Mid(FolderName, (InStr(FolderName, "\B-0") + 1), 3)) = "B-0" Then
              stNumProj = UCase(Mid(FolderName, (InStr(FolderName, "\B-0") + 1), 9))
              stNumServ = Mid(FolderName, (InStr(FolderName, "\B-0") + 1) - 4, 3)  ' no service
     
         ElseIf UCase(Mid(FolderName, (InStr(FolderName, "\P-0") + 1), 3)) = "P-0" Then
              stNumProj = UCase(Mid(FolderName, (InStr(FolderName, "\P-0") + 1), 9))
              stNumServ = Mid(FolderName, (InStr(FolderName, "\P-0") + 1) - 4, 3)  ' no service
     
         ElseIf UCase(Mid(FolderName, (InStr(FolderName, "\GC-0") + 1), 4)) = "GC-0" Then
              stNumProj = UCase(Mid(FolderName, (InStr(FolderName, "\GC-0") + 1), 9))
              stNumServ = Mid(FolderName, (InStr(FolderName, "\GC-0") + 1) - 4, 3)  ' no service
     
         ElseIf UCase(Mid(FolderName, (InStr(FolderName, "\RG-0") + 1), 4)) = "RG-0" Then
              stNumProj = UCase(Mid(FolderName, (InStr(FolderName, "\RG-0") + 1), 9))
              stNumServ = Mid(FolderName, (InStr(FolderName, "\RG-0") + 1) - 4, 3)  ' no service
     
         ElseIf UCase(Mid(FolderName, (InStr(FolderName, "\Offre") + 1), 5)) = "OFFRE" Then ' OFFRE"
              stNumProj = "OFS"   'UCase(Mid(FolderName, (InStr(FolderName, "\Offre") + 1), 5))
              stNumServ = Mid(FolderName, (InStr(FolderName, "\Offre") + 1) - 4, 3)  ' "des Offres de service"   '
     
        ElseIf Dir(FolderName, vbDirectory) = "Desktop" Then
              stNumProj = UCase(Mid(FolderName, (InStr(FolderName, "\" & Dir(FolderName, vbDirectory)) + 1), 7)) ' UCase(Mid(FolderName, (InStr(FolderName, "\P0") + 1), 7))
              stNumServ = UCase(Mid(FolderName, (InStr(FolderName, "\" & Dir(FolderName, vbDirectory)) + 1) - Len(Dir(FolderName, vbDirectory)), Len(Dir(FolderName, vbDirectory)) - 1)) 'UCase(Mid(FolderName, 1, Len(stNumProj) + 1))
    '          stNumServ = UCase(Mid(FolderName, (InStr(FolderName, "\" & Dir(FolderName, vbDirectory)) + 1) - 4, 3))  'UCase(Mid(FolderName, 1, Len(stNumProj) + 1))
        Else         ' vérifier si ce n'est pas un projet
              stNumProj = UCase(Mid(FolderName, (InStr(FolderName, "\" & Dir(FolderName, vbDirectory)) + 1), 7)) ' UCase(Mid(FolderName, (InStr(FolderName, "\P0") + 1), 7))
              stNumServ = UCase(Mid(FolderName, (InStr(FolderName, "\" & Dir(FolderName, vbDirectory)) + 1) - 4, 3)) ' no service
        End If
     
    '    stNumProj = InputBox("S.V.P." & vbCrLf & vbCrLf & " Veuillez valider le numéro de projet.", "Numéro de projet", stNumProj)
        If stNumProj = "OFS" Then           ' offre de services
            stNumProj = InputBox("Le courriel sera classé dans le dossier :   " & vbCrLf & Space(10) & "des Offres de service" & vbCrLf & vbCrLf & _
            vbCrLf & "Veuillez valider le nom du sous-dossier : ", "Définir le nom du courriel", stNumProj)
        ElseIf Left(stNumServ, 3) = Left(stNumProj, 3) Then ' avec no projet
            stNumProj = InputBox("Le courriel sera classé dans le dossier :   " & stNumProj & vbCrLf & vbCrLf & _
            vbCrLf & "Veuillez valider le nom du sous-dossier : ", "Définir le nom du courriel", stNumProj)
        ElseIf Dir(FolderName, vbDirectory) = "Desktop" Then
             stNumProj = InputBox("Le courriel sera classé dans le dossier sur le bureau." & vbCrLf & vbCrLf & _
            vbCrLf & "Veuillez valider le nom du sous-dossier : ", "Définir le nom du courriel", stNumProj)
     
        Else                ' sans nos de projet ou pas dans les offres de services
            stNumProj = InputBox("Le courriel sera classé dans le service :   " & stNumServ & vbCrLf & vbCrLf & _
                vbCrLf & "Veuillez valider le numéro de projet : ", "Définir le nom du courriel", stNumProj)
       End If
     
       If stNumProj = "" Then ' annuler la commande de classement
            Exit Function
        End If
    ...
     
            If Dir(FolderName, vbDirectory) = "Desktop" Then
                FileName = FolderName & "\" & SetFileName(EMAIL, FolderName, stNumServ, stInitiales, TYPE_REVISION, DeQui, stNom)
            Else
                FileName = FolderName & "\" & SetFileName(EMAIL, FolderName, stNumServ & "-" & stNumProj, stInitiales, TYPE_REVISION, DeQui, stNom)
            End If
    Si je choisi un dossier exemple "Mes documents", voici ce que donnera le nom du fichier: 20140212_LLO-MY_DOCU_RD_Nom_receveur_GRT_habitation_V_LoP.msg
    Si je choisi un dossier avec un no de projet, j'aurai: 20140212_081-P-0005018_RD_Nom_receveur_GRT_habitation_V_LoP.msg

    Dans le premier, les lettres "LLO" sont les lettres de l'utilisateur. J'aimerais qu'il y ait les 3 premières lettres de l'utilisateur. Je crois que c'est le stNumServ qu'il faut que j'ajuste, mais je n'y arrive pas.

    Comment faire ?

    Merci

  4. #4
    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
    Désolé mais je ne comprend pas la logique.
    Attention seulement à la longueur de ton nom de fichier il doit y avoir une limite à 256

Discussions similaires

  1. Limite des 218 caractères dans un nom de fichier
    Par Didier Gonard dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 28/02/2008, 14h28
  2. Changer des caractères dans les noms de fichiers
    Par ForgetTheNorm dans le forum Linux
    Réponses: 2
    Dernier message: 07/01/2008, 14h26
  3. support des espaces dans les noms de fichiers
    Par menuge dans le forum Langage
    Réponses: 9
    Dernier message: 25/10/2006, 09h02
  4. suppression des espaces dans les noms de fichiers
    Par menuge dans le forum Général Python
    Réponses: 8
    Dernier message: 22/10/2006, 12h01
  5. Réponses: 17
    Dernier message: 12/04/2005, 15h28

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