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 :

Instruction pour ignorer du texte


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Février 2008
    Messages
    190
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 190
    Par défaut Instruction pour ignorer du texte
    Bonjour à tous,

    Voilà, j'ai une macro pour travailler sur un fichier texte... recherche de valeurs, remplacement, etc...

    Mais parfois la macro s'arrête car le fichier texte, par moment n'est pas 'valide' par apport au code... C'est à dire qu'il ne répète pas toujours les mêmes choses exactes.

    La solution serais d'éviter de prendre en compte ce genre de chose mais je ne trouve pas l'instruction.

    Quelqu'un pourrait m'aider ? Merci.

  2. #2
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    une version un peu violente mais utile si maitrisé est de mettre
    au début de la zone a problème, a la fin de cette zone met
    Cela force le programme a exécuter la ligne qui suis celle ou il a un problème

    Pour plus d'info je te conseil le chapitre sur la gestion d'erreur de ce tuto

  3. #3
    Membre confirmé
    Inscrit en
    Février 2008
    Messages
    190
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 190
    Par défaut
    Merci pour ta réponse...
    Ca marche mais par contre, là où j'ai placé ces lignes de code il me laisse des lignes blanches sous Excel. Et j'aimerais bien récupérer quand même la date et l'heure pour voir qu'il y'a une info mais pas utilisable par la Macro.

    Je te montre mon code, dis moi ce que tu en penses...

    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
    113
    114
    115
    116
    117
    118
    119
    Sub traitement_MSC()
     
    Dim nb_line, nb_data As Double
    Dim ref_date, ref_heure As Double
    Dim l_fs As Double
     
    Dim Data(1 To 4) As Variant
    Dim tmp_txt As String
     
     
    Dim t1, t2, t3, t4 As String
    Dim nom_xls As String
    Dim nom_stats As String
    Dim txt_tokens As String
     
    Dim sCheminFichier As String
    Dim repFichiers As String
     
    Dim sCheminFichierEnCours As String
     
    Dim sChaineCaracteresLigne As String
     
    Dim bElementTokens As Boolean
     
     
    Dim sChainesCaracteresElements As Variant
    sChainesCaracteresElements = Array("######", "??????")
     
    ' ### textes a remplacer
    t1 = "Users of campus:  (Total of "
    t2 = " licenses issued"
    t3 = "  Total of "
    t4 = " licenses in use)"
    t5 = "Users of MDAdv:  (Total of "
     
    ' ### clefs de recherche des tokens
    Dim sChainesCaracteresTokens As Variant
    sChainesCaracteresTokens = Array("Users of campus", "Users of MDAdv")
     
    nom_xls = ThisWorkbook.Name
     
        Workbooks(nom_xls).Sheets("data").Select
        Cells.Select
        Selection.Clear
        Range("A1").Select
     
    sCheminFichier = Application.GetOpenFilename
    rep_fichiers = Left(sCheminFichier, InStrRev(sCheminFichier, "\"))
     
    l_fs = 1
     
    Do While Workbooks(nom_xls).Sheets("Lancement").Cells(l_fs + 3, 1).Value <> ""
     
        nom_stats = Workbooks(nom_xls).Sheets("Lancement").Cells(l_fs + 3, 1).Value
        Workbooks(nom_xls).Sheets("data").Cells(1, 4 * l_fs - 3).Value = Replace(nom_stats, ".txt", "")
     
        sCheminFichierEnCours = rep_fichiers & nom_stats
        Open sCheminFichierEnCours For Input As #1
     
        nb_line = 0
        nb_data = 0
     
        Do While Not EOF(1)
     
            nb_line = nb_line + 1
            bElementTokens = False
     
            Line Input #1, sChaineCaracteresLigne
     
            bElementRepere = False
     
            For i = 0 To UBound(sChainesCaracteresElements)
                If InStr(1, sChaineCaracteresLigne, sChainesCaracteresElements(i)) <> 0 Then
                    ref_date = nb_line + 1
                    ref_heure = nb_line + 2
                    nb_data = nb_data + 1
                End If
            Next i
     
     
            If nb_line = ref_date Then
                Data(1) = Replace(sChaineCaracteresLigne, " ", "")
            End If
     
            If nb_line = ref_heure Then
                Data(2) = Replace(sChaineCaracteresLigne, " ", "")
            End If
     
            For j = 0 To UBound(sChainesCaracteresElements)
                If InStr(1, sChaineCaracteresLigne, sChainesCaracteresTokens(j)) <> 0 Then
                    bElementTokens = True
                End If
            Next j
     
            On Error Resume Next
     
            If bElementTokens = True Then
                txt_tokens = Replace(Replace(Replace(Replace(Replace(sChaineCaracteresLigne, t1, ""), t2, ""), t3, ""), t4, ""), t5, "")
                Data(3) = Left(txt_tokens, InStr(txt_tokens, ";") - 1)
                Data(4) = Replace(txt_tokens, Data(3) & ";", "")
                tmp_txt = Right(Data(1), 4) & "/" & Right(Left(Data(1), 5), 2) & "/" & Left(Data(1), 2) & " " & Data(2)
                Workbooks(nom_xls).Sheets("data").Cells(nb_data + 2, 4 * l_fs - 3).Value = tmp_txt
                Workbooks(nom_xls).Sheets("data").Cells(nb_data + 2, 4 * l_fs - 2).Value = Data(3)
                Workbooks(nom_xls).Sheets("data").Cells(nb_data + 2, 4 * l_fs - 1).Value = Data(4)
            End If
     
     
        On Error GoTo 0
        Loop
     
        Close #1
     
        l_fs = l_fs + 1
    Loop
     
    MsgBox ("Les donnés sont traités")
     
     
    End Sub
    Merci.

  4. #4
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Dans ce cas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    On error goto traitement
     
     
    'ton code
     
     
     
    exit sub
    traitement::
    'tu fait ce que tu veux faire en cas d'erreur
     
    resume next
     
    end sub
    Pour els détaille regarde le tuto que je t'ai indiqué rubrique gestion d'erreur (pag 90 de mémoire) tout est très bien détaillé

  5. #5
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonjour,

    Je n'aime pas beaucoup le "On Error Resume Next"...

    Si, comme je le pense, ton erreur vient de cette ligne de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Data(3) = Left(txt_tokens, InStr(txt_tokens, ";") - 1)
    Il te suffirait de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    toto = instr(txt_tokens,";")
    et de poursuivre ta manip uniquement si toto te le permet (si > 1, apparemment)

Discussions similaires

  1. [FoxPro]Instruction pour enlever les accents ?
    Par Fab-FoxPro dans le forum Autres SGBD
    Réponses: 3
    Dernier message: 02/01/2025, 15h09
  2. Instruction pour avoir 1 ligne au lieu de 2
    Par senacle dans le forum Langage SQL
    Réponses: 7
    Dernier message: 07/06/2005, 14h11
  3. [MFC]Problèmes pour orienter du texte
    Par Deedier dans le forum MFC
    Réponses: 1
    Dernier message: 25/03/2005, 16h15
  4. Probleme pour centre du texte
    Par piff62 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 08/01/2005, 11h26
  5. Instruction pour créer un fichier text ???
    Par Soulsurfer dans le forum Langage
    Réponses: 2
    Dernier message: 06/08/2002, 11h17

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