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

Macros et VBA Excel Discussion :

renommer un fichier excel


Sujet :

Macros et VBA Excel

  1. #1
    Membre très actif
    Homme Profil pro
    Etudiant
    Inscrit en
    Janvier 2012
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 118
    Par défaut
    Bonjour a tous

    J'ai creer un code VBA qui va me chercher mes piece jointes dans UNE de mes regles et qui me l'enregistre sous le disque dur!

    Voici le code (assez cour)

    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
      Public Sub TransfertPJ()
        On Error GoTo errorhandler
        'Création de l'objet Outlook
        Set objoutlook = CreateObject("Outlook.application")
        'Récupération de l'espace de nom d'outlook
        Set olns = objoutlook.GetNamespace("MAPI")
        'Récupération du répertoire "boite de réception" par défault
        Set fld = olns.GetDefaultFolder(olFolderInbox)
        ' Initialisation du reperetoire de sauvegarde
        ' ne pas oublier l'anti-slash à la fin du repertoire
        Repertoire = "Z:\Risques et documentation OPCVM\Rapprochement Front Back\Confirmation Trades\Essai\"
     
        ' Sauve les pieces jointes des mails se trouvant dans la boîte de réception.
        ' Pour adresser un dossier dans la boite de réception on pourrait utiliser :
        ' fld.Folders("Nom_Du_Dossier").Items
    For Each mItem In fld.Folders("Confirmation Oddo").Items
     
        For Each att In mItem.Attachments
        If att.Type = olByValue Then
     
        ' Nom du fichier modifié pour l'enregistrement.
     
        NomDeFichierSurDisque = Range("C22") & "_" & Range("C20") & "_" & Range("B9")
        att.SaveAsFile Repertoire & NomDeFichierSurDisque
     
        End If
        Next
        Next
     
        Exit Sub
    errorhandler:
        MsgBox Err.Description, , Err.Source
        End Sub

    Mais le fichier excel ne prend pas le titre que je lui donne (C22,20,B9). Tel quel le fichier s'enregistre sous le nom "___". Je pense que c'est parce que la macro n'ouvre pas le fichier elle l'enregistre directement sous le disque dur.

    Que puis je rajouter pour que la macro ouvre le fichier et se referme en prennant en compte les informations C22 C20 et B9 pour nommer le fichier dans le disque dur?

    Thanks

    Je me demande si c'est une bonne idée de apres mon code:

    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
        Dim objoutlook As Outlook.Application
        Dim olns As Outlook.Namespace
        Dim mItem As Outlook.MailItem
        Dim att As Outlook.Attachment
        Dim fld As Outlook.MAPIFolder
        Dim Compteur As Integer
        Dim message, Repertoire, NomDeFichierSurDisque, NomDeFichier, Taille, Emetteur As String
        Dim wb As Workbook
        Option Explicit
        Public Sub TransfertPJ()
        On Error GoTo errorhandler
        'Création de l'objet Outlook
        Set objoutlook = CreateObject("Outlook.application")
        'Récupération de l'espace de nom d'outlook
        Set olns = objoutlook.GetNamespace("MAPI")
        'Récupération du répertoire "boite de réception" par défault
        Set fld = olns.GetDefaultFolder(olFolderInbox)
        ' Initialisation du reperetoire de sauvegarde
        ' ne pas oublier l'anti-slash à la fin du repertoire
        Repertoire = "Z:\Risques et documentation OPCVM\Rapprochement Front Back\Confirmation Trades\Essai\"
        'Inialisation des variables Message, NomDeFichier, NomDeFichierSurDisque, Taille, Emetteur
        message = NomDeFichierSurDisque = NomDeFichier = Taille = Emetteur = ""
     
        ' Sauve les pieces jointes des mails se trouvant dans la boîte de réception.
        ' Pour adresser un dossier dans la boite de réception on pourrait utiliser :
        ' fld.Folders("Nom_Du_Dossier").Items
    For Each mItem In fld.Folders("Confirmation Oddo").Items
     
        For Each att In mItem.Attachments
        If att.Type = olByValue Then
     
        ' Nom du fichier modifié pour l'enregistrement. Evite les controles superflus en renommant.
     
        NomDeFichier = att.Filename
        NomDeFichierSurDisque = NomDeFichier
        att.SaveAsFile Repertoire & NomDeFichierSurDisque
     
     
     
        End If
        Next
        Next


    Donc je disais de simuler l'ouverture de chaqu'un des fichiers enregistré. Comme ça on réenregistre chacun des fichiers sous le titre que l'on veut non?

    donc je pensais a ça dans la suite du code mais ça ne semble pas fonctionner

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    'On ouvre les pieces jointe qui sont maintenant des fichiers
    Workbooks.Open Filename:=NomDeFichierSurDisque
    'Et on les enregistre avec un autre titre tiré des donné du fichier
                   With ActiveWorkbooks
     
                   NomFichier = .Range("C22") & "_" & .Range("C20") & "_" & .Range("B8")
            End With
            .SaveAs Filename:= NomFichier & ".xls", FileFormat:=xlNormal
            .Close

  2. #2
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    bonjour

    tu n'a pas besoins de tout ca pour ca

    tu peut regarder par ICI!!!!

    sinon si tu tiens a faire comme ca (ouvrir et reenregistrersous un autre nom )
    n'oublie pas d'utiliser une instance d'excel a chaque fois pour les fichiers excel
    sinon tu risque de fermer c'elle de la macro
    au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  3. #3
    Membre très actif
    Homme Profil pro
    Etudiant
    Inscrit en
    Janvier 2012
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 118
    Par défaut
    Merci patrick

    donc j’intègre ton code a ma macro. Le but étant que les fichiers que je viens de prendre de mes pieces jointes de mes mail s'enregistre sous un nom tiré du fichier excel

    Voila ou j'ai mi ton code (j'ai rajouté la premiere et la derniere ligne de façon a ce que tu vois où j'ai integré ton code")

    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
    att.SaveAsFile Repertoire & NomDeFichierSurDisque
     
     AncienNom = "Z:\Risques et documentation OPCVM\Rapprochement Front Back\Confirmation Trades\Essai\NomDeFichierSurDisque.xls"
        NouveauNom = "titi"
     
     '(je met titi pour l'instant mais l'objectif c'est de mette qq chose comme ça Range("C22") & "_" & .Range("C20") & "_" & .Range("B8") par la suite :))
     
        'Vérifie si le fichier à renommer existe.
        If Dir(AncienNom) = "" Then Exit Sub
        'Renomme le fichier
        Name AncienNom As NouveauNom
     
        End If
     
    Next

    Mais maintenant dans mon classeur excel je n'est plus q'un fichier et il ne se nomme meme pas titi!!!

    Maintenant que j'ai mes fichiers excels (tirée de mes pieces jointe de mail confère plus haut dans la macro) sur le disque. Je pensais a quelque chose du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    For each Woorbook in Repertoire '(Le répertoire est nommé plus haut)
     
    OpenWorkbook
     
    Saveas FileName = .Range("C22") & "_" & .Range("C20") & "_" & .Range("B8")
    Mais Woorbook est une variable indéfinie, OpenWorkbook existe? et la derniere ligne il ne la comprend pas!!!!

  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    bonjour

    essai pluto un truc du genre
    la seule chose que tu a a faire c'est changer le chemin!!!!
    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
    Sub change_le_nom_des_xls()
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
     
     
      chemin = ThisWorkbook.Path & "\"                        ' chemin a adapter
       'on va lister tout les fichiers de type excel en filtrant l'extention
       filtre = "*.xls" ' ou le filtre que tu veux ... par exemple "*.txt" ou même "toto*.*"
     
       fichiers = Dir(chemin & filtre, vbNormal Or vbHidden) 'on prend meme ce qui sont caché
       'c'est parti
       Do While fichiers <> "" '
     
        Workbook.Open (chemin & fichiers)
     
      'on sauve le classeur sous le nom
        ActiveWorkbook.SaveAs Filename:=chemin & Range("C22") & "_" & Range("C20") & "_" & Range("B8") & ".xls", _
            FileFormat:=xlExcel8, Password:="", WriteResPassword:="", _
            ReadOnlyRecommended:=False, CreateBackup:=False
     
       'on va supprimer le fichier portant l'ancien nom
       Set objFSO = CreateObject("Scripting.FileSystemObject")
    objFSO.DeleteFile (chemin & fichiers)
     
         fichiers = Dir
       Loop
     
    End Sub
    je n'ai pas tester mais si je ne me suis pas tromper au niveau de la syntaxe ca devrait fonctionner

    au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  5. #5
    Membre très actif
    Homme Profil pro
    Etudiant
    Inscrit en
    Janvier 2012
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 118
    Par défaut
    Merci Patrik ce code m'a l'air a premier vu nickel

    donc j'integre ce code

    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
    Sub change_le_nom_des_xls()
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
     
     
     
    chemin = ThisWorkbook.Path & "Z:\Risques et documentation OPCVM\Rapprochement Front Back\Confirmation Trades\Essai\"                        ' chemin a adapter
       'on va lister tout les fichiers de type excel en filtrant l'extention
       filtre = "*.xls" ' ou le filtre que tu veux ... par exemple "*.txt" ou même "toto*.*"
     
       fichiers = Dir(chemin & filtre, vbNormal Or vbHidden) 'on prend meme ce qui sont caché
       'c'est parti
       Do While fichiers <> "" '
     
        Workbook.Open (chemin & fichiers)
     
      'on sauve le classeur sous le nom
        ActiveWorkbook.SaveAs Filename:=chemin & Range("C22") & "_" & Range("C20") & "_" & Range("B8") & ".xls", _
            FileFormat:=xlExcel8, Password:="", WriteResPassword:="", _
            ReadOnlyRecommended:=False, CreateBackup:=False
     
       'on va supprimer le fichier portant l'ancien nom
       Set objFSO = CreateObject("Scripting.FileSystemObject")
    objFSO.DeleteFile (chemin & fichiers)
     
         fichiers = Dir
       Loop
     
    End Sub
    Apres celui ci qui me permettait de mettre dans un fichier mes piece jointes d'une de mes regle sur ma boite de reception

    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
    Dim objoutlook As Outlook.Application
        Dim olns As Outlook.Namespace
        Dim mItem As Outlook.MailItem
        Dim att As Outlook.Attachment
        Dim fld As Outlook.MAPIFolder
        Dim Compteur As Integer
        Dim message, Repertoire, NomDeFichierSurDisque, NomDeFichier, Taille, Emetteur As String
         Dim AncienNom As String, NouveauNom As String
     
     
     
     
        Option Explicit
     
        Public Sub TransfertPJ()
     
        'Création de l'objet Outlook
        Set objoutlook = CreateObject("Outlook.application")
        'Récupération de l'espace de nom d'outlook
        Set olns = objoutlook.GetNamespace("MAPI")
        'Récupération du répertoire "boite de réception" par défault
        Set fld = olns.GetDefaultFolder(olFolderInbox)
        ' Initialisation du reperetoire de sauvegarde
        ' ne pas oublier l'anti-slash à la fin du repertoire
        Repertoire = "Z:\Risques et documentation OPCVM\Rapprochement Front Back\Confirmation Trades\Essai\"
        'Inialisation des variables Message, NomDeFichier, NomDeFichierSurDisque, Taille, Emetteur
        message = NomDeFichierSurDisque = NomDeFichier = Taille = Emetteur = ""
     
        ' Sauve les pieces jointes des mails se trouvant dans la boîte de réception.
        ' Pour adresser un dossier dans la boite de réception on pourrait utiliser :
        ' fld.Folders("Nom_Du_Dossier").Items
    For Each mItem In fld.Folders("Confirmation Oddo").Items
     
        For Each att In mItem.Attachments
        If att.Type = olByValue Then
     
        ' Nom du fichier modifié pour l'enregistrement. Evite les controles superflus en renommant.
     
        NomDeFichier = att.Filename
        NomDeFichierSurDisque = NomDeFichier
        att.SaveAsFile Repertoire & NomDeFichierSurDisque
     
     
     
     
     
     
        End If
        Next
        Next
     
     
     
     
        Exit Sub
     
        End Sub

    Mais le probleme dans ton code c'est qu'il me dis que
    -chemin
    -filtre
    -fichiers
    -Workbook sont des variable non définies??

    Pourtant je n'ai pas la case definition des variable obligatoire cochée? Bref je les rentre comme As Variant

    mais une fois que cela est fait vba me dis que
    -xlExcel8 est une variable non définie aussi??


    Merci pour ta réponse je vois le bout du tunnel

  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    rebonjour

    comme a mon abitude j'oublie de declarer les variables
    ou alors juste pour essayer enleve "option explicit" en haut de module

    j'attend le retour?


    PS:sur quelle version de excel tu travaille? parce que moi je travaille sur 2007
    et si il ne recoonais pas "excel 8" c'est peut etre prarceque tu travaille sur 2003
    il va ta falloir refaire la ligne de "saves as"

    au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  7. #7
    Membre très actif
    Homme Profil pro
    Etudiant
    Inscrit en
    Janvier 2012
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 118
    Par défaut
    Ahhhh dslé je n'avais pas vu ta réponse!

    Au lieu d'enlever option explicit je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim chemin As Variant
    Dim filtre As Variant
    Dim fichiers As Variant
    Dim Workbook As Variant
    donc voici le code
    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
     Sub change_le_nom_des_xls()
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
     
    Dim chemin As Variant
    Dim filtre As Variant
    Dim fichiers As Variant
    Dim Workbook As Variant
     
     
    chemin = ThisWorkbook.Path & "Z:\Risques et documentation OPCVM\Rapprochement Front Back\Confirmation Trades\Essai\"                        ' chemin a adapter
       'on va lister tout les fichiers de type excel en filtrant l'extention
       filtre = "*.xls" ' ou le filtre que tu veux ... par exemple "*.txt" ou même "toto*.*"
     
       fichiers = Dir(chemin & filtre, vbNormal Or vbHidden) 'on prend meme ce qui sont caché
       'c'est parti
       Do While fichiers <> "" '
     
        Workbook.Open (chemin & fichiers)
     
      'on sauve le classeur sous le nom
        ActiveWorkbook.SaveAs Filename:=chemin & Range("C22") & "_" & Range("C20") & "_" & Range("B8") & ".xls", _
            FileFormat:=xlExcel8, Password:="", WriteResPassword:="", _
            ReadOnlyRecommended:=False, CreateBackup:=False
     
       'on va supprimer le fichier portant l'ancien nom
       Set objFSO = CreateObject("Scripting.FileSystemObject")
    objFSO.DeleteFile (chemin & fichiers)
     
         fichiers = Dir
       Loop
     
    End Sub
    Et oui (bien vu) je travail sur excel 2003!! Refaire la ligne de save as???


    Merci beaucoup

  8. #8
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    je parlais de refaire cci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    'on sauve le classeur sous le nom
        ActiveWorkbook.SaveAs Filename:=chemin & Range("C22") & "_" & Range("C20") & "_" & Range("B8") & ".xls", _
            FileFormat:=xlExcel8, Password:="", WriteResPassword:="", _
            ReadOnlyRecommended:=False, CreateBackup:=False
    tu n'a qua le faire avec l'enregistreur de macro

    tu netoie le code resultant et tu change la destination par "chemin et ......"
    je suis pratiquement certaint qu'il y a des nuances d'ecriture entre 2003 et 2007

    au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  9. #9
    Membre très actif
    Homme Profil pro
    Etudiant
    Inscrit en
    Janvier 2012
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 118
    Par défaut
    BONJOUR PATRICK


    Effectivement je pense qu'il y a une nuance à la place de FileFormat:=xlExcel8 (sous 2007) le FileFormat est xlNormal (sous 2003)

    Donc le code ressemble maintenant à ça

    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
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
        Dim objoutlook As Outlook.Application
        Dim olns As Outlook.Namespace
        Dim mItem As Outlook.MailItem
        Dim att As Outlook.Attachment
        Dim fld As Outlook.MAPIFolder
        Dim Compteur As Integer
        Dim message, Repertoire, NomDeFichierSurDisque, NomDeFichier, Taille, Emetteur As String
         Dim AncienNom As String, NouveauNom As String
     
     
     
     
        Option Explicit
     
        Public Sub TransfertPJ()
     
        'Création de l'objet Outlook
        Set objoutlook = CreateObject("Outlook.application")
        'Récupération de l'espace de nom d'outlook
        Set olns = objoutlook.GetNamespace("MAPI")
        'Récupération du répertoire "boite de réception" par défault
        Set fld = olns.GetDefaultFolder(olFolderInbox)
        ' Initialisation du reperetoire de sauvegarde
        ' ne pas oublier l'anti-slash à la fin du repertoire
        Repertoire = "Z:\Risques et documentation OPCVM\Rapprochement Front Back\Confirmation Trades\Essai\"
        'Inialisation des variables Message, NomDeFichier, NomDeFichierSurDisque, Taille, Emetteur
        message = NomDeFichierSurDisque = NomDeFichier = Taille = Emetteur = ""
     
        ' Sauve les pieces jointes des mails se trouvant dans la boîte de réception.
        ' Pour adresser un dossier dans la boite de réception on pourrait utiliser :
        ' fld.Folders("Nom_Du_Dossier").Items
    For Each mItem In fld.Folders("Confirmation Oddo").Items
     
        For Each att In mItem.Attachments
        If att.Type = olByValue Then
     
        ' Nom du fichier modifié pour l'enregistrement. Evite les controles superflus en renommant.
     
        NomDeFichier = att.Filename
        NomDeFichierSurDisque = NomDeFichier
        att.SaveAsFile Repertoire & NomDeFichierSurDisque
     
     
     
     
     
     
        End If
        Next
        Next
     
     
     
     
        Exit Sub
     
        End Sub
     
     
     
     
     
        Sub change_le_nom_des_xls()
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
     
      Dim chemin As Variant
    Dim filtre As Variant
    Dim fichiers As Variant
    Dim Workbook As Variant
    Dim objFSO As Variant
     
     
    chemin = ThisWorkbook.Path & "Z:\Risques et documentation OPCVM\Rapprochement Front Back\Confirmation Trades\Essai\"                        ' chemin a adapter
       'on va lister tout les fichiers de type excel en filtrant l'extention
       filtre = "*.xls" ' ou le filtre que tu veux ... par exemple "*.txt" ou même "toto*.*"
     
       fichiers = Dir(chemin & filtre, vbNormal Or vbHidden) 'on prend meme ce qui sont caché
       'c'est parti
       Do While fichiers <> "" '
     
        Workbook.Open (chemin & fichiers)
     
      'on sauve le classeur sous le nom
        ActiveWorkbook.SaveAs Filename:=chemin & Range("C22") & "_" & Range("C20") & "_" & Range("B8") & ".xls", FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
            ReadOnlyRecommended:=False, CreateBackup:=False
     
       'on va supprimer le fichier portant l'ancien nom
       Set objFSO = CreateObject("Scripting.FileSystemObject")
    objFSO.DeleteFile (chemin & fichiers)
     
         fichiers = Dir
       Loop
     
    End Sub

    J'ai aussi rajouté objFSO comme variante.

    Mais quand je lance le code ... problème.... sur cette ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fichiers = Dir(chemin & filtre, vbNormal Or vbHidden) 'on prend meme ce qui sont caché
    ça me dit "nom ou numéro de fichier incorrect"???

    Have a good day

  10. #10
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut
    re

    déjà je suis un cretin
    depuis le début je fait une erreur monumental

    ça n'est pas workbook.open mais workbooks.open

    j'ai trop mal a la tête

    je te fait un exemple je teste et te donne ça

    mille excuses

    au plaisir

    re re et encore re re re

    non de dieu !!!

    voila je viens de faire un essaie avec un dossier dans le quel j'ai mis 4 fichiers
    fichier1
    fichier2
    fichier3
    fichier4

    dans ces fichiers j'ai mis
    dans c22 "toto" et le chiffre corespondant au numero de fichier 1,2,3,4
    dans c20 "titi" et le chiffre corespondant au numero de fichier 1,2,3,4
    dans "b8" j'ai mis "lafritte"dans les 4 fichiers

    en filtre comme le classeur de la macro se trouve dans le meme dossier pour ne pas le renomer aussi j'ai mis "*chier*.xls" l'etoile servant a preciser qu'il a quelque chose apres "chier" et quelque chose avant

    je lance la macro
    et j'ai bien obtenue
    toto1-titi1-lafritte.xls
    toto2-titi2-lafritte.xls
    toto3-titi3-lafritte.xls
    toto4-titi4-lafritte.xls

    NON!!!!DE!!!!DIEU!!!!
    tiens le code :
    bien sur adapte toujour le filtre et le chemin
    et n'oublie pas de readapter la ligne save as en fonction de ta version

    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
    Sub change_le_nom_des_xls()
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
     
     
      chemin = ThisWorkbook.Path & "\"                        ' chemin a adapter
       'on va lister tout les fichiers de type excel en filtrant l'extention
       filtre = "*chier*.xls" ' ou le filtre que tu veux ... par exemple "*.txt" ou même "toto*.*"
     
       fichiers = Dir(chemin & filtre, vbNormal Or vbHidden) 'on prend meme ce qui sont caché
       'c'est parti
       Do While fichiers <> "" '
     
        Workbooks.Open (chemin & fichiers)
     
      'on sauve le classeur sous le nom
        ActiveWorkbook.SaveAs Filename:=chemin & Range("C22") & "_" & Range("C20") & "_" & Range("B8") & ".xls", _
            FileFormat:=xlExcel8, Password:="", WriteResPassword:="", _
            ReadOnlyRecommended:=False, CreateBackup:=False
     ActiveWorkbook.Close
       'on va supprimer le fichier portant l'ancien nom
       Set objFSO = CreateObject("Scripting.FileSystemObject")
    objFSO.DeleteFile (chemin & fichiers)
     
         fichiers = Dir
       Loop
     
    End Sub
    si tu me dis que ca marche pas je mange mon ordi
    au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  11. #11
    Membre très actif
    Homme Profil pro
    Etudiant
    Inscrit en
    Janvier 2012
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 118
    Par défaut
    rerererere re r ere re re lol merci patrick

    Pas la peine de manger ton ordi je suis sur que c'est presque bon tout ça me semble logique mais il y a encore une petite erreur.

    Voici le code

    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
    Sub change_le_nom_des_xls()
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
     
    Dim chemin As Variant
    Dim filtre As Variant
    Dim fichiers As Variant
    Dim Workbook As Variant
    Dim objFSO As Variant
     
     
      chemin = ThisWorkbook.Path & "Z:\Risques et documentation OPCVM\Rapprochement Front Back\Confirmation Trades\Essai\"                        ' chemin a adapter
       'on va lister tout les fichiers de type excel en filtrant l'extention
       filtre = ".xls" ' ou le filtre que tu veux ... par exemple "*.txt" ou même "toto*.*"
     
       fichiers = Dir(chemin & filtre, vbNormal Or vbHidden) 'on prend meme ce qui sont caché
       'c'est parti
       Do While fichiers <> "" '
     
        Workbooks.Open (chemin & fichiers)
     
      'on sauve le classeur sous le nom
        ActiveWorkbook.SaveAs Filename:=chemin & Range("C22") & "_" & Range("C20") & "_" & Range("B8") & ".xls", FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
            ReadOnlyRecommended:=False, CreateBackup:=False
     ActiveWorkbook.Close
       'on va supprimer le fichier portant l'ancien nom
       Set objFSO = CreateObject("Scripting.FileSystemObject")
    objFSO.DeleteFile (chemin & fichiers)
     
         fichiers = Dir
       Loop
     
    End Sub

    Bien sur j'ai modifié comme tu l'a dis le filtre et le chemin et j'ai réadapté la ligne save as en fonction de ma ver sion FileFomat:= xlNormal,


    Mais j'ai toujours une erreur :

    Nom ou numéros de fichier incorrect (erreur d'excécution 52") et au débogage il me surligne la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fichiers = Dir(chemin & filtre, vbNormal Or vbHidden) 'on prend meme ce qui sont caché




    Merci encore

  12. #12
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut
    hahahahah!!!!!!!!

    j'ai deja commencé a bouffer le clavier

    j'avoue que je ne comprend pas pourquoi? si ce n'est que peut etre avec 2003 il faut activer une reference qui est par defaut avec 2007

    maintenant je vais essayer un autre truc puisque le filtre pmarche pas comme ca

    je fais ca et je reviens avec la bombe

    purré je vais t'etriper!!!!!!

    regarde un peu ce que tu me met
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    chemin = ThisWorkbook.Path & "Z:\Risques et documentation OPCVM\Rapprochement Front Back\Confirmation Trades\Essai\"
    ya pas quequechos en trop la!!!!!!!!!!!!!

    devine quoi tiens!!!!!!
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  13. #13
    Membre très actif
    Homme Profil pro
    Etudiant
    Inscrit en
    Janvier 2012
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 118
    Par défaut
    Mdr je sens que j'ai fait une connerie

    Bah je met le chemin avec un backslash à la fin non??? La je ne vois pas du tout! Il y a q chose en trop??????


  14. #14
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut
    re
    bon!!!!!!!!!!!!

    on va revenir a un cour plus élémentaire

    tu dis:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    chemin = ThisWorkbook.Path & "Z:\Risques et documentation OPCVM\Rapprochement Front Back\Confirmation Trades\Essai\"y a pas
    a supposer que :
    le classeur qui exécute la macro ce trouve dans
    "C:\Users\toncomptewindows\Desktop\"
    pour obtenir ca tu fait
    ensuite tu met
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    & "Z:\Risques et documentation OPCVM\Rapprochement Front Back\Confirmation Trades\Essai\"ya pas
    donc le résultat final sera
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "C:\Users\toncomptewindows\Desktop\" &"Z:\Risques et documentation OPCVM\Rapprochement Front Back\Confirmation Trades\Essai\"
    ça donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "C:\Users\toncomptewindows\Desktop\ Z:\Risques et documentation OPCVM\Rapprochement Front Back\Confirmation Trades\Essai\"
    allez va ........ enlève "thisworbook.path" et se sera bon
    tu n'aura pas d'image aujourdh'ui

    et ne me dis plus que ça marche pas

    au plaisir

    re

    je ne te l'ai pas dis mais en enlevant le "thisworkbook.path" tu enleve aussi le "&" je dis ca moi au cas ou
    purré c'est 20 pouces que je merite rien que pour ma patience
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  15. #15
    Membre très actif
    Homme Profil pro
    Etudiant
    Inscrit en
    Janvier 2012
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 118
    Par défaut
    MERCI ça marche nickel

    oui oui forcement j'ai enlevé aussi de & je ne savais pas que thisworkbook.path c t pour acceder au bureau.

    Merci encore patrick

    J'ai même rejouté une amélioration .Close (pour fermer les fichiers qui change de nom.... je ne sais plus pk il était plus dans ma macro)

    Bref maintenant j'entame la même chose mais avec un fichier PDF dans mon classeur.... Enfin je vais reflechir dessus

    Merci encore et allez meme si je suis parisien vive toulon

  16. #16
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re

    allez chiche on va travailler sur les pdfs maintenant

    noublie pas surtout que au debut je t'avais orienté vers un select case
    c'est toujours d'actualité quand tu aura la macro pour toute les extentions que tu veux
    je suis entrain de voir deja si je peut pas ecrire cette macro en plus pro
    histoire de fumer un peu le cerveau hahahah!!!!

    je m'y met

    a plus
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  17. #17
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    tout d'abord

    avec les "xls" on sait comment faire maintenant

    pour les pdfs comment veux tu faire pour le noms

    pour les csv le nom comment doit être construits

    allez le "parisien tête d....." répond


    au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  18. #18
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    bonjour

    au fait je ne t'ai jamais dis que "thisworkbook.path " c'était pour accéder au bureau

    plus haut c'était un exemple!!!!!!!!

    ça te donne le chemin complet ou ce trouve le classeur dans lequel se trouve la macro


    en gros traduit en français ça veut dire
    le dossier ou se trouve le classeur actif
    oullllaaamlalallal!!! dur dur

    ps j'ai trouvé dans la faq un exemple sur l'ouverture d'un pdf pour en récupérer les propriétés peut être te suffira t-il

    tu devrais aller voir


    au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  19. #19
    Membre très actif
    Homme Profil pro
    Etudiant
    Inscrit en
    Janvier 2012
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 118
    Par défaut Titre tiré d'un pdf
    Bonjour Patrick

    Sorry j'étais parti me mettre au vert Comment ça va?

    Déjà oui j'ai toujours ton code (j'ai gardé ça dans un coin du bureau !!) A savoir

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Select case right(strfile.name,3)
     
    case "pdf"
     
    case "xls"
    ça c'est bon maintenant
     
    case "doc"
     
    end select
    On se trouve toujours dans la même logique, le matin mes pieces jointes excel et PDF s'enregistre sous un fichier dans le disque dur (ça c'est reussi ) J'essaye de lire les fichier PDF un à un pour en tirer des informations mettre dans le titre du document.

    J'ai regardé pour le PDF, apparement il faut enregistrer le PDF sous excel avant et apres on tire les informations dans les cases, enfin si j'ai bien compris! (Déjà il y a qu'un page donc pas besoin d'aller la rechercher bonne nouvelle).

    Tu penses que c'est une bonne façon de proceder?


    Have a good day!!

  20. #20
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    bon j'ai regardé dans ton mp

    et comme je ne connais pas la structures des pdfs que tu telecharge
    alors j'ai opté pour celle la

    reste a l'adapter automatiquement



    pour cela je te donne les indices et un schéma procédé

    comme pour les xls
    1° boucler pour récupérer les pdf

    2lorsque l'on tombe sur un pdf
    ouvrir adobe avec shell ........
    et ouvrir un nouveau fichier xls temporaire portant le même nom pourquoi pas
    3° le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    AppActivate "Acrobat Reader"
         SendKeys "^a", True ' Selectionner tout
         SendKeys "^c", True ' Copier
     '    SendKeys "^p", True ' Imprime
         SendKeys "{ENTER}", True    ' Return
         SendKeys "^w", True ' Fermer
         AppActivate "Microsoft Excel"
         Windows("Récup toto.xls").Activate
         Sheets("toto").Select
         LIG = Cells(6000, 1).End(xlUp).Row
         Range(Cells(1, 1), Cells(LIG, 1)).ClearContents
         Cells(1, 1).Select
         ActiveSheet.Paste
    après avoir créer le fichier xls tu cherche les données que tu veux je pense que tu sais mieux que moi comment les trouvées car tu dois chercher des données bien précises
    ces données récupérées dans une variables string
    tu peut utiliser la macro que j'avais récupérer dans la faq ("nouveau nom;ancien nom)
    n'oublie pas les fermeture des fichiers a chaque fois

    le premier qui abouti a la macro complète est le meilleur
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

Discussions similaires

  1. Renommer un fichier Excel selon une zone du classeur
    Par matt240490 dans le forum Contribuez
    Réponses: 1
    Dernier message: 09/05/2014, 17h55
  2. Réponses: 2
    Dernier message: 21/04/2014, 23h31
  3. Réponses: 3
    Dernier message: 21/11/2013, 15h55
  4. [XL-2007] Renommer un fichier Excel par macro
    Par Yunasthar dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 23/08/2010, 12h05
  5. Renommer des fichiers EXCEL à partir de SAS
    Par id301077 dans le forum ODS et reporting
    Réponses: 1
    Dernier message: 21/11/2009, 14h11

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