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 :

Exportation du corps d'un email provenant de outlook vers un fichier excel [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    80
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 80
    Points : 58
    Points
    58
    Par défaut Exportation du corps d'un email provenant de outlook vers un fichier excel
    Bonjour a tous !

    Bon, dans un premier temps j'aimerais m'excuser si je ne post pas au bon endroit, mais bon, outlook, excell, vba.. Pas évidemment de trouver où poster !


    Bref, mon problème est le suivant : je reçois un mail automatique sur ma boite outlook, qui contient l'ensemble des logs (les accès internet) ! Et en fait, vu que c'est du texte brut et que l'on ne peut pas vraiment traiter les informations, je voulais savoir si quelqu'un saurait comment faire pour récupérer le corps du mail (pas besoin de tout...) afin de l'afficher dans un fichier excel. Faudrait bien évidemment traiter les informations pour les classer mais çà je pense pouvoir le faire ! Donc c'est surtout pour récupérer les données !
    Je demande pas forcément du code, mais au moins de quoi m'aiguiller (utilisation de collection, de tableau , de .. ??? ).


    Merci beaucoup a tous, Peace !!!

  2. #2
    Membre averti Avatar de casavba
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    455
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 455
    Points : 323
    Points
    323
    Par défaut
    Bonjour,

    En guise de réponse:

    A mon avis votre problème doit être décomposé en deux partie .

    1 -- Connexion à OUtlook et parcourir les mails de la boite de réception
    (Question le mail que vous recevez automatiquement a-t il toujours la même structure?)
    exemple: supposons que ton mail a comme objet le titre suivant " Accès Internet"
    Dans ce cas on va parcourir tous les mails avec la condition "subject = "Accès Internet"
    A chaque fois que la condition est vérifiée --->

    je récupére le Body (ou corps) du mail dans un fichier TXT temporaire par exemple


    2 -- Une fois fais, on traite le fichier TXT à notre guise pour affecter les valeurs qu'on veut dans un Workbook.



    Je résume:

    Connexion outlook
    Parcourir la boite de réception (condition à définir)
    Récupératioon du corps du mail dans un fichier TXT temporaire
    Mettre les valeurs pertinentes dans les cellules Excel.


    Si t'es d'accord avec cette méthode, on codera ensemble.

    Bonne journée

  3. #3
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    80
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 80
    Points : 58
    Points
    58
    Par défaut
    Salut casavba !!!

    Et bien écoute ta solution me parait plutôt bonne ! C'est vrai que je ne savais pas trop comment m'y prendre, et je savais pas si c'étais possible de le faire, mais j'avou que si on décompose un peu tout ça il doit y avoir moyen d'y arriver

    Et sinon, mon email porte toujours le même en-tête !

    Merci d'avance !

    Et bonne journée également

    Peace

  4. #4
    Membre averti Avatar de casavba
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    455
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 455
    Points : 323
    Points
    323
    Par défaut
    Bonjour,

    Pourrais-tu donner un exemple de structure de ton mail?

    Surtout la structure de son contenu. (C'est important pour la suite)


    Cordialement

  5. #5
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    80
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 80
    Points : 58
    Points
    58
    Par défaut
    Salut salut !

    Et bien je t'envoi un exemple du corps de mail.

    Exemple corps de mail :

    Mon, 2009-10-26 09:08:54 - Access site - Source:10.120.128.2,WAN - Destination:liveupdate.symantecliveupdate.com,WAN - [Forward] Mon, 2009-10-26 09:10:46 - Access site - Source:10.120.128.2,WAN - Destination:mm.123cmail.fr,WAN - [Forward] Mon, 2009-10-26 09:11:38 - Attempt to access blocked sites - Source:10.120.128.2,LAN - Destination:yahoo.astrocenter.fr/imgmails/picto/fr/90x90tth.gif,WAN Mon, 2009-10-26 09:10:47 - Access site - Source:10.120.128.2,WAN - Destination:ads.leadium.com,WAN - [Forward] Mon, 2009-10-26 09:10:47 - Access site - Source:10.120.128.2,WAN - Destination:wm.wizzms.com,WAN - [Forward] Mon, 2009-10-26 09:11:37 - Access site - Source:10.120.128.2,WAN - Destination:c.astrocenter.fr,WAN - [Forward] Mon, 2009-10-26 09:11:38 - Attempt to access blocked sites - Source:10.120.128.2,LAN - Destination:yahoo.astrocenter.fr/imgmails/bigpicto/fr/300x250_fr2k2.jpg,WAN

    Donc voila, tu me dis si ça te vas ! J'ai juste mit des adresses IP bidon, mais bon ça devrais pas poser de problème
    Sinon il faut juste gérer en fonction du type d'accès (Access site / Attempt to access blocked sites), pas forcément les classer, mais je pense que pour découper la chaine ça va poser problème, surtout àcause du forward qui n'est pas présent pour les accès bloqués.

    Moi j'ai déjà un peu avancé, je pense avoir trouvé pour récupérer le corps du mail, mais j'avou que pour la suite c'est pas tip top ^^ Mais je vais te poster ma procédure pour récupérer le corps de mail et celle pour la création du fichier Excel.


    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
    'Procédure de récupération du corps du message[/COLOR]
    Sub RecuperationCorpsDeMsg()
     
    Dim OLapp As Outlook.Application
    Dim OLspace As Outlook.Namespace
    Dim OLinbox As Outlook.MAPIFolder
    Dim OLmail As Outlook.MailItem
    Dim i, j As Integer
     
    Set OLapp = CreateObject("Outlook.application")
    Set OLspace = OLapp.GetNamespace("MAPI")
    Set OLinbox = OLspace.GetDefaultFolder(olFolderInbox)
     
    For Each OLmail In OLinbox.Items
    If OLmail.Subject = "TR: NETGEAR Security LOG [58:5B:C3]" Then
     
    'Appel de la procédure pour créer le fichier Excel
     
    'Intégration dans le fichier Excel
     
     
    i = i + 1
    j = j + 1
    Next
     
    End Sub
    Elle est pas terminé, ca je me doute bien^^, mais j'ai déclaré i et j en me disant que je pourrais les utiliser pour intégrer les données au fichier Excel, i pour la ligne et j pour la colone.
    Du coup, jme dit que c'est peut etre possible d'intégrer directement dans le fichier Excel. Tu me diras ce que tu en pense !

    Et sinon la procédure de création du fichier Excel (je pense y faire appel lorsque le corps du message est extrait et qu'il est prêt à être insérer) :


    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
    Public Const REP_RAPPORT = "Chemin du répertoire"
    ' Creation_Mise_En_Forme_Fichier_Excel[/COLOR]
    Sub Creation_Mise_en_forme_Fichier_Excel()
     
        'Création du classeur Excel
        Workbooks.Add
     
        'Déclaration des colonnes
            Range("A1").Select
            ActiveCell.FormulaR1C1 = "Date"
            Range("B1").Select
            ActiveCell.FormulaR1C1 = "Heure"
            Range("C1").Select
            ActiveCell.FormulaR1C1 = "Type d'accès"
            Range("D1").Select
            ActiveCell.FormulaR1C1 = "Source"
            Range("E1").Select
            ActiveCell.FormulaR1C1 = "Destination"
     
        'Propriétés de la plage de cellules donnée
            Range("A1:E1").Select
            With Selection            
                .HorizontalAlignment = xlCenter
                .VerticalAlignment = xlCenter
                .WrapText = False
                .Orientation = 0
                .AddIndent = False
                .IndentLevel = 0
                .ShrinkToFit = False
                .ReadingOrder = xlContext
                .MergeCells = False        
            End With
     
        'Propriétés de la police d'écriture
            With Selection.Font            
                .Name = "Comic Sans MS"
                .Size = 12
                .Underline = xlUnderlineStyleNone
                .ColorIndex = xlAutomatic        
            End With
     
        'Ajustement automatique des colonnes au texte
            Columns("A:A").EntireColumn.AutoFit
            Columns("B:B").EntireColumn.AutoFit
            Columns("C:C").EntireColumn.AutoFit
            Columns("D: D").EntireColumn.AutoFit
            Columns("E:E").EntireColumn.AutoFit    
        'Renommage de la feuille
            Sheets("Feuil1").Select
            Sheets("Feuil1").Name = "Suivi Internet"   
        'Enregistrement du classeur Excel
     
            Dim chemin As String
                cheminREP = REP_RAPPORT
                Creation_Repertoire (cheminREP)
                ChDir cheminREP
                cheminREP = cheminREP & "\" & Rapport & ".xls" 
            ActiveWorkbook.SaveAs Filename:=cheminREP & "\" & Rapport & ".xls", _
                FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
                ReadOnlyRecommended:=False, CreateBackup:=False        ActiveWorkbook.Close
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    ' Création d'un répertoire
    Function Creation_Repertoire(cr_chaine As String)
        Dim fs As Object
     
        Set fs = CreateObject("Scripting.FileSystemObject")
        If fs.FolderExists(cr_chaine) = False Then       
           fs.CreateFolder (cr_chaine)
           Creation_Repertoire = True    
        Else
           Creation_Repertoire = False    
        End If
    End Function
    Voila, voila ! J'espère que ce que j'ai commencé est bon, en tout cas que ce soit pas du code trop sale. Je commence tout juste en vba, et je ne sais pas si c'est plus de la boidouille qu'autre chose !

    Dans l'attente de vous lire^^

    Peace

  6. #6
    Membre averti Avatar de casavba
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    455
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 455
    Points : 323
    Points
    323
    Par défaut
    Bonjour,

    Je vois que tu as bien avancé mais il reste un peu de boulot

    L'utilisation de l'enregistreur de macro est un outil d'aide indispensable quand on sait pas comment codé une tâche, mais il faut nettoyer le code après (le code de la mise en forme que t'as écris en dessus est "sale" comme tu dis).

    Bref, passons aux choses sérieuses.

    Le code de connexion à outlook est Ok
    Je l'ai repris dans le code ci-dessous avec des améliorations, en bonus je t'ai rajouté une fonction qui va écrire le corps du mail dans un Fichier Temporaire.

    Dans la suite, on va utiliser des fonctions pour avoir une utilisation plus pertinente du 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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    Public Const TMPFILE As String = "C:\Temp\ExtractCorpsMail.tmp"
     
    Sub TestMacro()
    Outlook_Excel ("TR: NETGEAR Security LOG [58:5B:C3]")
    End Sub
     
    Public Sub Outlook_Excel(ByVal ObjetMail As String)
     
    Dim OutlookApp As Object
    Dim O_NomDomaine As Object
    Dim O_Dossier As Object
    Dim O_MailItem As Object
    Dim OutlookApp_Cree As Boolean
     
    Application.ScreenUpdating = False
     
    On Error Resume Next
    Set OutlookApp = GetObject(, "Outlook.Application")
        If OutlookApp Is Nothing Then
            Set OutlookApp = CreateObject("Outlook.Application")
                OutlookApp_Cree = True
            If OutlookApp Is Nothing Then
                MsgBox "Impossible d'ouvrir MS Outlook.", _
                        vbExclamation, "Erreur d'ouverture"
                Exit Sub
            End If
        End If
     
    On Error GoTo 0
     
    Set O_NomDomaine = OutlookApp.GetNamespace("MAPI")
    Set O_Dossier = O_NomDomaine.GetDefaultFolder(6)
     
     
     
    For Each O_MailItem In O_Dossier.Items
        If O_MailItem Like ObjetMail Then
            Dim OrderInfo As Variant
            OrderInfo = CatchCorpsMail(O_MailItem.Body)
        End If
    Next
     
    If OutlookApp_Cree Then OutlookApp.Quit
     
    Application.ScreenUpdating = True
     
    Set O_Dossier = Nothing
    Set O_NomDomaine = Nothing
    Set OutlookApp = Nothing
     
    End Sub
     
    Public Function CatchCorpsMail(ByVal message As String) As Variant
     
    Dim f As Integer
     
    If message = vbNullString Then CatchCorpsMail = vbNullString: Exit Function
     
    f = FreeFile
     
    Open TMPFILE For Output As #f
    Write #f, message
    Close #f
     
    End Function
    La Constante que j'ai déclaré en Haut est le chemin d'enregistrement du Fichier Temporaire.

    Une Fois la macro exécutée, essaies de consulter le fichier pour vérifier si on a bien récupérer le corps du mail. Par la suite on va supprimer ce fichier.

    Pour découper la chaine, on va utiliser la fonction "Split" avec comme paramètre "WAN" --> c'est à dire que à chaque fois qu'on va rencontrer dans la chaine le mot "WAN", la macro va découper la chaine.

    Bref, essaies de tester le code que je t'ai donné ci-dessus, si c'est OK, on poursuivra notre construction.

    Bonne journée

  7. #7
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    80
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 80
    Points : 58
    Points
    58
    Par défaut
    Bon je viens de tester..

    Je ne comprends pas trop à vrai dire !!

    J'ai d'abord lancé la procédure et j'ai été voir si le fichier c'était créer dans le dossier, mais non.

    Du coup je l'ai exécuté en pas à pas pour voir où ça clochait !!! Et donc, il ne rentre jamais dans la boucle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    For Each O_MailItem In O_Dossier.Items
        If O_MailItem Like ObjetMail Then
            Dim OrderInfo As Variant
            OrderInfo = CatchCorpsMail(O_MailItem.Body)
        End If
    En tout, il ne considère à aucun moment que la condition est vérifiée :s

    Je me suis dit que ma variable devait être vide où que l'objet du mail n'était pas bien récupéré !!

    A partir de là j'ai mit un espion sur O_MailItem et ObjetMail, et là, leur valeur est absolument identique...

    Donc je ne comprends pas pourquoi il ne rentre pas dans la boucle...

    En tout cas merci pour le temps que tu m'accordes
    Peace

  8. #8
    Membre averti Avatar de casavba
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    455
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 455
    Points : 323
    Points
    323
    Par défaut
    Est ce que le code Bug quelque part.

    Je viens de le tester encore une fois et ça fonctionne bien. Il crée le fichier avec le corps du mail dedans.


    A mon avis t'as pas entré le bon Objet du mail. vérifie le paramètre passé à la procédure Outlook_Excel()

    remplace la boucle par celle -ci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    For Each O_MailItem In O_Dossier.Items
        If O_MailItem Like ObjetMail Then
            Dim OrderInfo As Variant
            OrderInfo = CatchCorpsMail(O_MailItem.Body)
            Else
            MsgBox "Le Mail Que Vous recherchez n'existe pas" 'pour vérifier
        End If
    Next

  9. #9
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    80
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 80
    Points : 58
    Points
    58
    Par défaut
    Bon deja j'ai trouvé le problème d'avant : j'ai remplacé le Like par un simple =, et ça marche !

    Mais du coup j'ai un nouveau problème à l'exécution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    If message = vbNullString Then CatchCorpsMail = vbNullString: Exit Function
     
    f = FreeFile
     
    Open TMPFILE For Output As #f
    Write #f, message
    Close #f
     
    End Function
    Il bloque à cet endroit ?!

    Erreur d'exécution "75"
    Erreur d'accès Chemin/fichiers

    J'ai modifié le chemin, est-ce que ça peut être une conséquence du problème ?

    Peace

  10. #10
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    80
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 80
    Points : 58
    Points
    58
    Par défaut
    Bon et bien je peux répondre à ma question précédente : le changement de chemin est responsable de l'erreur.. J'ai réussi à modifier ce chemin pour qu'il corresponde bien à mes attentes, et il s'exécute de la même façon !


    Donc c'est bon, tout marche bien

    Par contre du coup je comprends pas pourquoi le like marche pas ché moi ?????

    Peace

    Sinon à titre d'information : je pense qu'il ne sera pas possible d'utiliser WAN pour la séparation du texte, car il se trouve à la fin de la ligne, mai également entre la source et la destination.. Donc je pense que ça risque de poser problème !! J'ai pensé au FORWARD, mais il n'est pas présent quand il s'agit d'un site blocké.. Donc voila, je voulais juste apporté cette précision

    Peace

  11. #11
    Membre averti Avatar de casavba
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    455
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 455
    Points : 323
    Points
    323
    Par défaut
    Bonjour,

    essaies de tester ce que donne ce code et si il satisfait à ton besoin
    après on va l'inclure dans le code precedent.

    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
    Sub ExtractInfo()
    Dim MyArray() As String
    dim i as integer
     
    strChaine = "Mon, 2009-10-26 09:08:54 - Access site - Source:10.120.128.2,WAN - Destination:liveupdate.symantecliveupdate.com,WAN - [Forward] Mon, 2009-10-26 09:10:46 - Access site - Source:10.120.128.2,WAN - Destination:mm.123cmail.fr,WAN - [Forward] Mon, 2009-10-26 09:11:38 - Attempt to access blocked sites - Source:10.120.128.2,LAN - Destination:yahoo.astrocenter.fr/imgmails/picto/fr/90x90tth.gif,WAN Mon, 2009-10-26 09:10:47 - Access site - Source:10.120.128.2,WAN - Destination:ads.leadium.com,WAN - [Forward] Mon, 2009-10-26 09:10:47 - Access site - Source:10.120.128.2,WAN - Destination:wm.wizzms.com,WAN - [Forward] Mon, 2009-10-26 09:11:37 - Access site - Source:10.120.128.2,WAN - Destination:c.astrocenter.fr,WAN - [Forward] Mon, 2009-10-26 09:11:38 - Attempt to access blocked sites - Source:10.120.128.2,LAN - Destination:yahoo.astrocenter.fr/imgmails/bigpicto/fr/300x250_fr2k2.jpg,WAN"
     
     
    MyArray = Split(strChaine, "WAN")
     
    For i = 0 To UBound(MyArray())
        If MyArray(i) Like "*blocked*" Then Debug.Print MyArray(i)
    Next
     
     
    End Sub
    bonne journee

  12. #12
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    80
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 80
    Points : 58
    Points
    58
    Par défaut
    Hello !

    Bon ba j'ai testé cette procédure, mais je vois pas très bien à quoi elle sert !

    J'ai compris qu'elle découpait la chaine de caractère se trouvant dans la variable strChaine, mais je comprends pas ce que fait la boucle ???!!

    Enfin je dirais qu'elle affiche la chaine si on trouve le mot "blocked" dans celle-ci ? Mais je ne vois pas comment ça va servir ???

    Sachant que comme j'ai dit dans un message précédemment, on ne peut pas utiliser le WAN car lorsqu'il s'agit d'un site autorisé, on retrouve "WAN" deux fois dans cette seule chaine !!! J'ai pensé à "WAN - [Forward]", mais ça ne marchera que pour les sites autorisés.. Donc là je me sens un peu blocqué :s

    Après peut-être que je n'ai pas tous bien compris ?!

    Peace

    Peace

    Bonjour !

    Bon je me suis repenché sur la procédure, et j'ai à présent bien compris ce qu'elle faisait !

    Bon déjà elle découpe bien le texte brut en chaine, mais du coup je ne voi pas comment faire pour découper cette chaine selon mes critères (date, heure, type d'accès...).

    Du coup je retire également mon interrogation sur son utilité^^

    Merci encore casavba, je vais coninuer de chercher en attendant de tes nouvelles et j'ajouterais les avancements si il y en a

    Peace

    Bon alors : j'ai un peu modifié la procédure que tu m'avais envoyé casavba, en tout cas je m'en suis beaucoup inspiré^^

    Je sais qu'elle ne fonctionne pas , mais peut être qu'il est possible de l'améliorer et que je suis sur la bonne piste !


    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 ExtractInfo(ByVal contenuMessage As String)
    Dim MyArrayStr(), MyArrayCar(), chaine As String
    Dim i, j, colonne, ligne As Integer
    Dim xl_Sheet As Excel.Worksheet
     
    ligne = Cells.SpecialCells(xlCellTypeLastCell).Row + 2
    MyArrayStr = Split(contenuMessage, "WAN")
    chaine = MyArrayStr
    For i = 0 To UBound(MyArrayStr())
        MyArrayCar = Split(chaine, "-")
        For j = 0 To UBound(MyArrayCar())
            For colonne = 1 To 5
                xl_Sheet.Cells(ligne, colonne) = MyArrayCar(j)
            Next
            ligne = ligne + 1
        Next
    Next
    End Sub
    - contenuMessage est identique à orderInfo, il contient le corps du mail,
    - ligne récupère le numéro de la dernière ligne, et ajoute 2 pour qu'on insère les infos 2 lignes après la dernière existante.
    - MyArrayStr découpe le corps du mail
    - J'ai pensé pouvoir utilisé MyArrayCar pour découper les chaines produites avec MyArrayCar (et la fonction split bien évidemment..)

    Enfin , le déroulement est le suivant : pour toute la chaine de caractère, on découpe en petite chaine de caractère en fonction de WAN, puis pour chaque petite chaine de caractère on découpe en fonction de "-" ! Ensuite, pour les colonnes allant de 1 à 5 (de A à E ou de Date à Destination), on cole les informations sur la ligne, et une fois qu'on a toutes les colonnes de remplies, on incrément la ligne pour redémarrer la copie des informations à la ligne suivante.

  13. #13
    Membre averti Avatar de casavba
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    455
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 455
    Points : 323
    Points
    323
    Par défaut
    Bonjour GarnierFlorian,

    Excuses moi de t'avoir un petit peu délaissé, mais j'ai un peu de boulot en ce moment.

    j'ai modifié un petit peu le code. Mets le dans un module d'un classeur vide et regarde le résultat qui donne, si c'est bon on finalisera 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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    Sub ExtractInfo()
     
    Dim MyArray() As String, MyArrayB() As String, MyArrayC() As String
    Dim i As Integer, j As Integer, k As Integer
     
    '/*****  Initialisation des variables *****/'
    j = 0
     
     
    strChaine = "Mon, 2009-10-26 09:08:54 - Access site - Source:10.120.128.2,WAN - Destination:liveupdate.symantecliveupdate.com,WAN - [Forward] Mon, 2009-10-26 09:10:46 - Access site - Source:10.120.128.2,WAN - Destination:mm.123cmail.fr,WAN - [Forward] Mon, 2009-10-26 09:11:38 - Attempt to access blocked sites - Source:10.120.128.2,LAN - Destination:yahoo.astrocenter.fr/imgmails/picto/fr/90x90tth.gif,WAN Mon, 2009-10-26 09:10:47 - Access site - Source:10.120.128.2,WAN - Destination:ads.leadium.com,WAN - [Forward] Mon, 2009-10-26 09:10:47 - Access site - Source:10.120.128.2,WAN - Destination:wm.wizzms.com,WAN - [Forward] Mon, 2009-10-26 09:11:37 - Access site - Source:10.120.128.2,WAN - Destination:c.astrocenter.fr,WAN - [Forward] Mon, 2009-10-26 09:11:38 - Attempt to access blocked sites - Source:10.120.128.2,LAN - Destination:yahoo.astrocenter.fr/imgmails/bigpicto/fr/300x250_fr2k2.jpg,WAN"
     
    '/******** Split de strChaine avec comme paramètre "WAN" et
    '/ stockage dans une var. Tableau *******/'
     
    MyArray = Split(strChaine, "WAN")
     
    For i = 0 To UBound(MyArray())
        If MyArray(i) Like "*blocked*" Then
            ReDim Preserve MyArrayB(0 To j)
            MyArrayB(j) = MyArray(i)
            j = j + 1
        End If
     
    Next i
     
    '/******** Split de chaque ligne de MyArrayB avec comme
    '/ paramètre " - " et stockage dans une var. Tableau *******/'
     
    For k = 0 To UBound(MyArrayB())
     
            MyArrayC = Split(MyArrayB(k), " - ") 
            ReDim Preserve MyArrayC(0 To UBound(MyArrayC()))
            Range("A" & k + 2).Resize(, UBound(MyArrayC()) + 1) = MyArrayC
     
    Next k
     
    End Sub
    Bonne journée

  14. #14
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    80
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 80
    Points : 58
    Points
    58
    Par défaut
    Salut casavba ! Surtout ne t'inquiète pas, c'est plutôt moi qui te remerci pour le temps que tu m'accordes

    Sinon j'ai regardé la procédure !! Le truc c'est que je ne veux pas récupérer les informations seulement quand c'est un accès à un site bloqué, je veux récupérer toutes les lignes !

    Autrement, les données sont collées à partir de la colonne B au lieu de A, mais je vois pas pourquoi parce que on a bien Range("A"... !

    Et une dernière petite chose, je l'ai lancé plusieurs fois à la suite mais ça n'insère qu'une seule fois les données, donc je pense que si j'ai d'autres données à rajouter elles supprimeront celles déjà présentes !

    Mais sinon ça le fait pour la découpe Moi j'essaye de voir pour trouver comment supprimer certaines choses dans ma chaine de caractères ( le [Forward] qui me sert à rien et qui du coup fera pas très jolis dans le document, et aussi le jour qui ne me sert pas !!)
    Et je vais également essayer de voir pour rajouter un "-" entre la date et l'heure parsque j'aimerais qu'elles soient séparées.

    Je te tiens au courant de toute avancé

    Peace

  15. #15
    Membre averti Avatar de casavba
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    455
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 455
    Points : 323
    Points
    323
    Par défaut
    Re,

    Modification supplémentaire à la volée, A tester toujours dans un classeur avec une feuille nommée "Feuil1":


    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
    96
    97
    98
    99
    100
    101
    102
    103
     
    Sub ExtractInfo()
     
    Dim MyArray() As String, MyArrayB() As String, _
    MyArrayC() As String, MyArrayD() As String, _
    MyArrayE() As String, MyArrayF() As String, _
    strChaine As String
     
    Dim i As Integer, j As Integer, k As Integer, _
    p As Integer, q As Integer, t As Integer, _
    n As Integer
     
    '/*****  Initialisation des variables *****/'
    j = 0
    p = 0
    q = 0
     
     
    strChaine = "Mon, 2009-10-26 09:08:54 - Access site - Source:10.120.128.2,WAN - Destination:liveupdate.symantecliveupdate.com,WAN - [Forward] Mon, 2009-10-26 09:10:46 - Access site - Source:10.120.128.2,WAN - Destination:mm.123cmail.fr,WAN - [Forward] Mon, 2009-10-26 09:11:38 - Attempt to access blocked sites - Source:10.120.128.2,LAN - Destination:yahoo.astrocenter.fr/imgmails/picto/fr/90x90tth.gif,WAN Mon, 2009-10-26 09:10:47 - Access site - Source:10.120.128.2,WAN - Destination:ads.leadium.com,WAN - [Forward] Mon, 2009-10-26 09:10:47 - Access site - Source:10.120.128.2,WAN - Destination:wm.wizzms.com,WAN - [Forward] Mon, 2009-10-26 09:11:37 - Access site - Source:10.120.128.2,WAN - Destination:c.astrocenter.fr,WAN - [Forward] Mon, 2009-10-26 09:11:38 - Attempt to access blocked sites - Source:10.120.128.2,LAN - Destination:yahoo.astrocenter.fr/imgmails/bigpicto/fr/300x250_fr2k2.jpg,WAN"
     
    '/******** Split de strChaine avec comme paramètre "WAN" et
    '/ stockage dans une var. Tableau *******/'
     
    MyArray = Split(strChaine, "WAN")
     
    For i = 0 To UBound(MyArray())
     
        If MyArray(i) Like "*blocked*" Then
                ReDim Preserve MyArrayB(0 To j)
                MyArrayB(j) = ReplaceStr(MyArray(i))
                j = j + 1
     
        ElseIf MyArray(i) Like "*Access site*" Then
                ReDim Preserve MyArrayD(0 To p)
                MyArrayD(p) = ReplaceStr(MyArray(i))
                p = p + 1
     
        ElseIf MyArray(i) Like " - Destination*" Then
                ReDim Preserve MyArrayE(0 To q)
                MyArrayE(q) = ReplaceStr(MyArray(i))
                q = q + 1
     
        End If
     
    Next i
     
     
    With Worksheets("Feuil1")   ' A adapter en fontion du nom de la feuille Cible
     
    '/******** Split de chaque ligne de MyArrayB avec comme
    '/ paramètre " - " et stockage dans une var. Tableau *******/'
     
    For k = 0 To UBound(MyArrayB())
     
            MyArrayC = Split(MyArrayB(k), " - ")
            ReDim Preserve MyArrayC(0 To UBound(MyArrayC()))
            Range("A" & k + .Cells(Rows.Count, 1).End(xlUp).Row + 1).Resize(, UBound(MyArrayC()) + 1) = MyArrayC
     
    Next k
     
    For t = 0 To UBound(MyArrayD())
            MyArrayF = Split(MyArrayD(t) & MyArrayE(t), " - ")
            ReDim Preserve MyArrayF(0 To UBound(MyArrayF()))
            Range("A" & .Cells(Rows.Count, 2).End(xlUp).Row + 1).Resize(, UBound(MyArrayF()) + 1) = MyArrayF
    Next t
     
     '/************ Supp. Cells Vides & Mise en forme ******
     '/*****************************************************
     
     For n = .Cells(Rows.Count, 2).End(xlUp).Row To 2 Step -1
     
        With .Cells(n, 2)
            If .Offset(0, -1).Text = "" Then
                .Value = Trim(.Value)
                .Offset(0, -1).Delete xlToLeft
             End If
        End With
     
    Next
     
    End With
     
    Erase MyArray
    Erase MyArrayB
    Erase MyArrayC
    Erase MyArrayD
    Erase MyArrayE
    Erase MyArrayF
     
    End Sub
     
    Function ReplaceStr(strCh As String) As String
     
        Dim ReplaceStr1 As String, ReplaceStr2 As String, _
            ReplaceStr3 As String, ReplaceStr4 As String
     
            ReplaceStr1 = Replace(strCh, "[Forward]", "")
            ReplaceStr2 = Replace(ReplaceStr1, "Source:", "")
            ReplaceStr3 = Replace(ReplaceStr2, "LAN", "")
            ReplaceStr4 = Replace(ReplaceStr3, ",", " ")
            ReplaceStr = Replace(ReplaceStr4, "Destination:", "")
     
    End Function

    Pour ce qui de rajout des infos supplémentaires tout en gardant les anciennes, je te laisse le soin de le faire

    Indice: la réponse est déjà dans le code ci-dessus.

    Bonne journée

  16. #16
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    80
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 80
    Points : 58
    Points
    58
    Par défaut
    J' ai juste un petit problème, tout s'affiche correctement mais en fait quand j'essaye de supprimer le "Mon,", ça ne marche pas.

    J'ai fait de la manière suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Function ReplaceStr(strCh As String) As String
     
        Dim ReplaceStr1 As String, ReplaceStr2 As String, _
            ReplaceStr3 As String, ReplaceStr4 As String
        Dim ReplaceStr5 As String
     
            ReplaceStr1 = Replace(strCh, "[Forward]", "")
            ReplaceStr2 = Replace(ReplaceStr1, "Source:", "")
            ReplaceStr3 = Replace(ReplaceStr2, "LAN", "")
            ReplaceStr4 = Replace(ReplaceStr3, ",", "")
            ReplaceStr5 = Replace(ReplaceStr4, "Mon ", "")
            ReplaceStr = Replace(ReplaceStr5, "Destination:", "")
     
    End Function
    Et donc j'ai deux dates qui ne s'affichent pas correctement ( 2009-10-26 09:08:54 au lieu de 26/10/2009 09:11), et je vois pas très bien pourquoi... Et les dates se retrouvent alignées à droite (sauf les deux qui posent problèmes, alignés à gauche) alors que je ne pense pas que ça soit par défaut ?!!

    Du coup si tu peux regarder cher toi casavba et me dire pourquoi ça réagit comme ça ? A moins que tu ne comprennes mon erreur en voyant ce que j'ai écrit je ne sais pas ? Merci d'avance !
    (De plus, je fais ça pour "Mon", mais je vais devoir le faire également avec "Tue","Wed", etc.. pour tout les jours de la semaine..)


    Je ne comprends pas non plus l'utilisation du code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ElseIf MyArray(i) Like " - Destination*" Then
                ReDim Preserve MyArrayE(0 To q)
                MyArrayE(q) = ReplaceStr(MyArray(i))
                q = q + 1
     
        End If
    On a soit à faire avec Acces Site ou Attempt to access blocked sites, donc pourquoi faire un test sur Destination ?


    Peace

  17. #17
    Membre averti Avatar de casavba
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    455
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 455
    Points : 323
    Points
    323
    Par défaut
    Non, tu peux pas procéder ainsi.

    Par contre si tu regardes ton problème d'un autre angle, peut-être t'aurais trouver la solution

    Voici mon angle de vue et par conséquent ma solution.


    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
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    Sub ExtractInfo()
     
    Dim MyArray() As String, MyArrayB() As String, _
    MyArrayC() As String, MyArrayD() As String, _
    MyArrayE() As String, MyArrayF() As String, _
    strChaine As String
     
    Dim i As Integer, j As Integer, k As Integer, _
    p As Integer, q As Integer, t As Integer, _
    n As Integer
     
    Dim x As Byte, y As Byte
     
    Dim Cel As Range, LaPlage As Range
     
    '/*****  Initialisation des variables *****/'
    j = 0
    p = 0
    q = 0
     
     
    strChaine = "Mon, 2009-10-26 09:08:54 - Access site - Source:10.120.128.2,WAN - Destination:liveupdate.symantecliveupdate.com,WAN - [Forward] Mon, 2009-10-26 09:10:46 - Access site - Source:10.120.128.2,WAN - Destination:mm.123cmail.fr,WAN - [Forward] Mon, 2009-10-26 09:11:38 - Attempt to access blocked sites - Source:10.120.128.2,LAN - Destination:yahoo.astrocenter.fr/imgmails/picto/fr/90x90tth.gif,WAN Mon, 2009-10-26 09:10:47 - Access site - Source:10.120.128.2,WAN - Destination:ads.leadium.com,WAN - [Forward] Mon, 2009-10-26 09:10:47 - Access site - Source:10.120.128.2,WAN - Destination:wm.wizzms.com,WAN - [Forward] Mon, 2009-10-26 09:11:37 - Access site - Source:10.120.128.2,WAN - Destination:c.astrocenter.fr,WAN - [Forward] Mon, 2009-10-26 09:11:38 - Attempt to access blocked sites - Source:10.120.128.2,LAN - Destination:yahoo.astrocenter.fr/imgmails/bigpicto/fr/300x250_fr2k2.jpg,WAN"
     
    '/******** Split de strChaine avec comme paramètre "WAN" et
    '/ stockage dans une var. Tableau *******/'
     
    MyArray = Split(strChaine, "WAN")
     
    For i = 0 To UBound(MyArray())
     
        If MyArray(i) Like "*blocked*" Then
                ReDim Preserve MyArrayB(0 To j)
                MyArrayB(j) = ReplaceStr(MyArray(i))
                j = j + 1
     
        ElseIf MyArray(i) Like "*Access site*" Then
                ReDim Preserve MyArrayD(0 To p)
                MyArrayD(p) = ReplaceStr(MyArray(i))
                p = p + 1
     
        ElseIf MyArray(i) Like " - Destination*" Then
                ReDim Preserve MyArrayE(0 To q)
                MyArrayE(q) = ReplaceStr(MyArray(i))
                q = q + 1
     
        End If
     
    Next i
     
     
    With Worksheets("Feuil1")   ' A adapter en fontion du nom de la feuille Cible
     
    '/******** Split de chaque ligne de MyArrayB avec comme
    '/ paramètre " - " et stockage dans une var. Tableau *******/'
     
    For k = 0 To UBound(MyArrayB())
     
            MyArrayC = Split(MyArrayB(k), " - ")
            ReDim Preserve MyArrayC(0 To UBound(MyArrayC()))
            Range("A" & k + .Cells(Rows.Count, 1).End(xlUp).Row + 1).Resize(, UBound(MyArrayC()) + 1) = MyArrayC
     
    Next k
     
    For t = 0 To UBound(MyArrayD())
            MyArrayF = Split(MyArrayD(t) & MyArrayE(t), " - ")
            ReDim Preserve MyArrayF(0 To UBound(MyArrayF()))
            Range("A" & .Cells(Rows.Count, 2).End(xlUp).Row + 1).Resize(, UBound(MyArrayF()) + 1) = MyArrayF
    Next t
     
     '/************ Supp. Cells Vides & Mise en forme ******
     '/*****************************************************
     
     For n = 2 To .Cells(Rows.Count, 2).End(xlUp).Row
        With .Cells(n, 2)
            If .Offset(0, -1).Text = "" Then .Offset(0, -1).Delete xlToLeft
        End With
    Next
     
    Set LaPlage = .Range("A2:A" & .Cells(Rows.Count, 2).End(xlUp).Row)
     For Each Cel In LaPlage
        For x = 1 To Len(Cel)
            If IsNumeric(Mid(Cel, x, 1)) Then
            y = x
            Exit For
            End If
        Next x
        Cel.Value = Mid(Cel.Text, y, Len(Cel) - y + 1)
     Next Cel
     
    End With
     
    Erase MyArray
    Erase MyArrayB
    Erase MyArrayC
    Erase MyArrayD
    Erase MyArrayE
    Erase MyArrayF
     
    End Sub
     
    Function ReplaceStr(strCh As String) As String
     
        Dim ReplaceStr1 As String, ReplaceStr2 As String, _
            ReplaceStr3 As String, ReplaceStr4 As String
     
            ReplaceStr1 = Replace(strCh, "[Forward]", "")
            ReplaceStr2 = Replace(ReplaceStr1, "Source:", "")
            ReplaceStr3 = Replace(ReplaceStr2, "LAN", "")
            ReplaceStr4 = Replace(ReplaceStr3, ",", " ")
            ReplaceStr = Replace(ReplaceStr4, "Destination:", "")
     
    End Function
    Si tu comprends pas quelque chose reviens

    Bonne journée

    Je ne comprends pas non plus l'utilisation du code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ElseIf MyArray(i) Like " - Destination*" Then
                ReDim Preserve MyArrayE(0 To q)
                MyArrayE(q) = ReplaceStr(MyArray(i))
                q = q + 1
     
        End If
    On a soit à faire avec Acces Site ou Attempt to access blocked sites, donc pourquoi faire un test sur Destination ?
    Eh bah, si tu découpes le code que je t'ai filé pas à pas, tu comprendras.

    En fait quand je split la première fois la chaine en considérant comme paramètre "WAN", et bien, je me retrouve avec des lignes orphelines commençant par destination ---> Pourquoi ?
    Tout simplement et tu l'as dis plus haut je cite
    on ne peut pas utiliser le WAN car lorsqu'il s'agit d'un site autorisé, on retrouve "WAN" deux fois dans cette seule chaine
    on a des lignes où "WAN" existe deux fois encerclant ainsi "Destination:....".

    voilà

  18. #18
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    80
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 80
    Points : 58
    Points
    58
    Par défaut
    Ah Yeees !!

    Ba je l'est fait en pas à pas mais j'ai du allé trop vite !! Du coup j'ai pas fais attention à ça

    Sinon pour le reste, j'ai testé ce que tu m'as envoyé, et j'ai toujours une des dates et heure qui s'aligne à droite ?! En fait, plus précisément, au premier ajout les données sont toutes alignés à droite, et après un second ajout, elles se placent bien à gauche !

    Du coup je trouve ça assez bizare, il faut qu'il y est un nouvel ajout pour qu'elles se placent bien à gauche..

    Merci beaucoup en tout cas, c'est fou ce que j'ai comme difficultés ^^

    Peace

  19. #19
    Membre averti Avatar de casavba
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    455
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 455
    Points : 323
    Points
    323
    Par défaut
    Peut être un problème de conversion,

    remplaces la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cel.Value = Mid(Cel.Text, y, Len(Cel) - y + 1)
    par cells - ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cel.Value = CDate(Mid(Cel.Text, y, Len(Cel) - y + 1))

    ++

  20. #20
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    80
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 80
    Points : 58
    Points
    58
    Par défaut
    Bonjour bonjour

    Bon et bien j'ai modifié le code et donc cette fois, tout le texte est bien alignés de la même façon mais il est toujours affichés à droite^^ Mais j'ai une petite question ( au cas ou ) : quand je crée mon fichier excel, si je met un ajustement automatique des colonnes au texte, si je rajoute du texte par la suite il va s'adapter ? Je suis casiment persuadué du contraire mais ça serait pratique ^^

    En tout cas merci bien

    Et j'avais également une autre question : pour supprimer le "Mon", tu utilise l'instruction suivante ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cel.Value = CDate(Mid(Cel.Text, y, Len(Cel) - y + 1))
    Je veux juste etre sur d'avoir bien compris.. Parce que c'est vrai que c'est bien plus propre que ma solution ^^

    Une dernière chose, je ne comprends pas trop une des boucles :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     For Each Cel In LaPlage
        For x = 1 To Len(Cel)
            If IsNumeric(Mid(Cel, x, 1)) Then
            y = x
            Exit For
            End If
        Next x
        Cel.Value = CDate(Mid(Cel.Text, y, Len(Cel) - y + 1))
     Next Cel
    Pourquoi sortir du For et ne pas mettre l'instruction dans un else ?!?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    For Each Cel In LaPlage
        For x = 1 To Len(Cel)
                 If IsNumeric(Mid(Cel, x, 1)) Then
                 y = x
            Else 
                 Cel.Value = CDate(Mid(Cel.Text, y, Len(Cel) - y + 1))
            End If
        Next x
    Next Cel

    En tout cas un grand merci, j'essaye de mettre tout en ordre et en forme pour voir ce que ça donne

    Bonne journée !!!!!

    Peace

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Exportation du corps d'un email provenant de outlook vers un fichier excel
    Par byonatane dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 08/11/2013, 14h31
  2. Réponses: 26
    Dernier message: 17/07/2008, 14h17
  3. [Outlook] --> exportation d'emails vers un fichier excel?
    Par drexlbob dans le forum VBA Outlook
    Réponses: 0
    Dernier message: 11/11/2007, 14h38
  4. export d'access vers un fichier excel prédéfini
    Par kuhnden dans le forum Access
    Réponses: 3
    Dernier message: 05/01/2006, 22h08
  5. [Excel] PHP-MYSQL exportation de données vers un fichier excel
    Par toure32 dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 19/10/2005, 19h29

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