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 :

probleme avec if..then goto


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 66
    Points : 38
    Points
    38
    Par défaut probleme avec if..then goto
    Bonjour tout le monde,

    Je vous souhaite dorénavant une trés bonne année 2008.

    J'ai un problème sur mon programme vba j'essai d'ajouter une condition avec if...then goto...else mais quand je compile il me dit "else sans if" pourriez vous m'aider SVP?

    voici le prog :

    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
    Sub Macro2()
    
    Dim Aryan As String
    Dim i As Long
    Dim j As Long
    
    j = 0
    
     For i = 71001 To 71005
    
        Aryan = "Appft\MER\1\logAppliVOCAL\" & _
            Worksheets("Feuil3").Range("A3001") & "\APPLIVOCAL0" & i & ".LOG"
        
        If Dir(Aryan) = "" Then GoTo boz
        Else
        
        
        With ActiveSheet.QueryTables.Add(Connection:= _
        "TEXT;C:\" & Aryan, _
        Destination:=Range("O1"))
    
            .Name = "APPLIVOCAL071211_1"
            .FieldNames = True
            .RowNumbers = False
            .FillAdjacentFormulas = False
            .PreserveFormatting = True
            .RefreshOnFileOpen = False
            .RefreshStyle = xlInsertDeleteCells
            .SavePassword = False
            .SaveData = True
            .AdjustColumnWidth = True
            .RefreshPeriod = 0
            .TextFilePromptOnRefresh = False
            .TextFilePlatform = 850
            .TextFileStartRow = 1
            .TextFileParseType = xlDelimited
            .TextFileTextQualifier = xlTextQualifierDoubleQuote
            .TextFileConsecutiveDelimiter = True
            .TextFileTabDelimiter = True
            .TextFileSemicolonDelimiter = False
            .TextFileCommaDelimiter = False
            .TextFileSpaceDelimiter = True
            .TextFileOtherDelimiter = "="
            .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, _
            1, 1, 1, 1, 1, 1, 1)
            .TextFileTrailingMinusNumbers = True
            .Refresh BackgroundQuery:=False
        End With
    
    Dim N, y As Integer
    
    N = 1
    
    y = 0
    
    Do
    
                If Worksheets("Feuil3").Cells(N, "Y") = "FLAGS" Then
    
                            y = y + 1
    
                End If
    
                N = N + 1
    
    Loop Until N = 2999
    
                j = j + 1
                
    Worksheets("Feuil3").Cells(j, 1) = y
                
    Range("B1:EZ2999").Select
        Selection.ClearContents
    
    boz:
        i = i + 1
    Next i
    
    j = 1
    For j = 1 To 2998
    If Worksheets("Feuil3").Cells(j, 1) <> "" Then
    Worksheets("Feuil3").Cells(j + 1, 1) = Worksheets("Feuil3").Cells(j, 1) + Worksheets("Feuil3").Cells(j + 1, 1)
    
    End If
    
    Next j
    
    Worksheets("Feuil3").Cells(1, 2) = Worksheets("Feuil3").Cells(j, 1)
    
    Range("A1:A2999").Select
        Selection.ClearContents
    Range("B1").Select
    
       End Sub

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 563
    Points : 1 691
    Points
    1 691
    Par défaut
    il te manque le end if et dans le cas ou il y a plusieur lignes de code, tu ne peux pas l'écrire sur la meme ligne que le if

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    If Dir(Aryan) = ""  Then
    GoTo boz
    Else ...
    end if
    bonne année aussi

  3. #3
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 66
    Points : 38
    Points
    38
    Par défaut
    Merci alsimbad

  4. #4
    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
    Points : 5 535
    Points
    5 535
    Par défaut
    Le goto est ici surprenant et inutile !
    Suffit de remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Dir(Aryan) = ""  Then
    par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    If Dir(Aryan) <>  Then
    ''' faire ...
    end if
    'et la suite, sans même l'étiquette boz !
    Et c'est quoi, cette incrémentation de I ? (i = i +1) dans une boucle for ?
    Si c'est pour avancer de 2 au lieu d'un, step 2 existe. Si c'est pour aller de i en i en incrémentant i de 1, c'est ce que fait le For ... Next .... tout seul !!!

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Points : 2 443
    Points
    2 443
    Par défaut
    Salut tous les gens et bonne et heureuse année 2008

    salut irouni

    Quelques remarques :
    - regroupe tes déclarations au m^me endroit : ça évite les erreurs, et ne change strictement rien au fonctionnement de ta macro

    - contrairement à ce que pensent certains, les identations de ton code ne sont pas là pour faire joli. ça permet de reconnaitre les parties du programme liées entre elles : elles sont plus qu'utiles quand tu imbriques des if, boucles, with, etc...

    - certaines instructions sont inutiles ex
    j=i
    for j=1 .....
    à quoi sert de paramètrer j à une valeur, si on ne l'utilise pas ?

    ton problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        If Dir(Aryan) = "" Then GoTo boz
    Else
             With ActiveSheet.QueryTables.Add(Connection:= .....
    j'y trouve 2 erreurs :
    pas de End if . Excel rencontrant un next avant un End if, se sent perdu et appelle au secours.
    Mais même avec End if, tu utilises les 2 syntaxes de if dans la même instruction.
    soit tu mets tout sur une ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If test Then Vrai else Faux
    soit tu utilises la 2me syntaxe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if test then
         Vrai
    else
         Faux 
    Endif
    Les 2 ensembles....

    N'ayant que la macro, je n'ai pas envie de créer un fichier de test(qui ne correspondra pas forcément à ce que tu attend), alors je ne l'ai pas testée. Le End if rajouté avant l'adresse bor ne correspond pas forcément :il pourrait être avant l'instruction J=J+1, mais, je n'ai pas réellement analysé ta macro, juste fait des "corrections" pour la faire correspondre un peu plus à une macro que j'aurais codé.
    en uitlisant les indentations, tu pourra facilement retrouver les séquences de la macro.
    Compare la avec celle initiale, peut-être que ça te donnera des idées.
    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
     
    Sub Macro2()
    Dim Aryan As String
    Dim i As Long
    Dim j As Long
    Dim N As Integer, y As Integer
    j = 0
    For i = 71001 To 71005
        Aryan = "Appft\MER\1\logAppliVOCAL\" & _
            Worksheets("Feuil3").Range("A3001") & "\APPLIVOCAL0" & i & ".LOG"
     
        If Dir(Aryan) = "" Then
            GoTo boz
        Else
            With ActiveSheet.QueryTables.Add(Connection:= _
            "TEXT;C:\" & Aryan, _
            Destination:=Range("O1"))
     
                .Name = "APPLIVOCAL071211_1"
                .FieldNames = True
                .RowNumbers = False
                .FillAdjacentFormulas = False
                .PreserveFormatting = True
                .RefreshOnFileOpen = False
                .RefreshStyle = xlInsertDeleteCells
                .SavePassword = False
                .SaveData = True
                .AdjustColumnWidth = True
                .RefreshPeriod = 0
                .TextFilePromptOnRefresh = False
                .TextFilePlatform = 850
                .TextFileStartRow = 1
                .TextFileParseType = xlDelimited
                .TextFileTextQualifier = xlTextQualifierDoubleQuote
                .TextFileConsecutiveDelimiter = True
                .TextFileTabDelimiter = True
                .TextFileSemicolonDelimiter = False
                .TextFileCommaDelimiter = False
                .TextFileSpaceDelimiter = True
                .TextFileOtherDelimiter = "="
                .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, _
                   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
                .TextFileTrailingMinusNumbers = True
                .Refresh BackgroundQuery:=False
            End With
            N = 1
            y = 0
     
            Do
                If Worksheets("Feuil3").Cells(N, "Y") = "FLAGS" Then y = y + 1
                        N = N + 1
            Loop Until N = 2999
     
            j = j + 1
     
            Worksheets("Feuil3").Cells(j, 1) = y
     
            Range("B1:EZ2999").ClearContents
        End If
    boz:
        i = i + 1
    Next i
    For j = 1 To 2998
        If Worksheets("Feuil3").Cells(j, 1) <> "" Then
            Worksheets("Feuil3").Cells(j + 1, 1) = Worksheets("Feuil3").Cells(j, 1) _
              + Worksheets("Feuil3").Cells(j + 1, 1)
        End If
    Next j
    Worksheets("Feuil3").Cells(1, 2) = Worksheets("Feuil3").Cells(j, 1)
    Range("A1:A2999").ClearContents
    Range("B1").Select
    End Sub

  6. #6
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 66
    Points : 38
    Points
    38
    Par défaut
    Merci tout le monde,

    Le probleme a été bien évidement l'oubli de End if et aussi comme vous l'avez mentionné l'autre probleme était la façon j'ai mit mes codes.

    Bonne année 2008

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Probleme avec If Then
    Par Echyzen dans le forum VB.NET
    Réponses: 1
    Dernier message: 29/04/2013, 17h40
  2. probleme avec la commande GoTo
    Par froggyaz dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 24/09/2008, 16h04
  3. problem avec on error goto
    Par br@veknight dans le forum VBA Access
    Réponses: 1
    Dernier message: 10/07/2008, 08h36
  4. Probleme avec les conditions If-- Then
    Par visualk dans le forum Delphi
    Réponses: 15
    Dernier message: 24/05/2007, 09h34

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