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 :

End If sans bloc If [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Responsable en Ingénierie Logicielle
    Inscrit en
    Juin 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Responsable en Ingénierie Logicielle
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2014
    Messages : 9
    Points : 9
    Points
    9
    Par défaut End If sans bloc If
    Bonjour,
    J'ai un petit problème dans mon code, en effet, il me sort une erreur (certes basique) "End If sans bloc If", j'ai vérifié mon code 3 fois, je ne vois aucun End If en trop ou manquant.
    Tout semble s'emboiter correctement, si ce n'est cette erreur, je n'ai pas de conditions multiple avec "_", l'erreur ne proviendrait pas de là, je suis un peu perdu, je m'en remet à la communauté!
    Voici mon code, la ligne colorié en rouge est celle qui semble poser problème d'après VBA :
    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
    Sub Color_SFG(plants)
    Dim nbPlants As Integer, nbSFG As Integer, Lastline As Integer, LastRow As Integer
    Dim PArray() As Variant
    Dim cell As Range
    Dim i As Integer, j As Integer, x As Integer
    Dim isSFG As Boolean
    Dim RegExp As Object
    Dim ws As Worksheet
    Dim colMatches As MatchCollection
    
     'Initializing an Instance
    Set RegExp = CreateObject("vbscript.regexp")
    'Reg exp Setttings
    RegExp.Global = True
    RegExp.Pattern = "[BOM]{3}\d{4}"
    'String length (x) with BOM & - & 4 digits(0-9) with the 1st = 1
    RegExp.IgnoreCase = False
    
    Application.ScreenUpdating = False
    Worksheets("PDP Data").Activate
    
    Lastline = Range("A5").End(xlDown).Row
    nbPlants = UBound(plants)
    ReDim PArray(nbPlants, 1)
    For Each ws In Application.ActiveWorkbook.Sheets
        'Test whether the String can be compared.
        If RegExp.Test(ws.Name) = True Then
            'Get the matches.
            'Execute search.
            Set colMatches = RegExp.Execute(CStr(ws.Name))
            
            For i = LBound(plants) To UBound(plants)
                If Right(CStr(colMatches(0)), 4) = plants(i) Then
                    PArray(i, 1) = plants(i)
                    Worksheets(CStr(colMatches(0))).Activate
                    Do
                        j = j + 1
                    While Range("A" & j) <> colMatches(0)
                    LastRow = Range("A" & j).End(xlDown).Row - 1
                    Range("A" & j + 1 & ":A" & LastRow).Select
                    nbSFG = Distinct_count(Selection)
                    If (nbSFG + 1 > UBound(PArray, 2)) Then
                        ReDim Preserve PArray(1 To nbPlants, 1 To nbSFG + 1)
                    End If
                    isSFG = False
                    For Each cell In Worksheets(CStr(colMatches(0))).UsedRange.Rows
                        If isSFG = True And IsNumeric(Range("A" & cell.Row)) = True Then
                            For j = LBound(PArray, 2) + 1 To UBound(PArray, 2)
                                If IsEmpty(PArray(i, j)) Then
                                    PArray(i, j) = Range("A" & cell.Row)
                                    Exit For
                                End If
                                If Range("A" & cell.Row) = PArray(i, j) Then GoTo nextcell
                            Next j
                        ElseIf isSFG = False Then
                            If Cells(cell.Row, 1) = "SFG Code" Then isSFG = True
                        End If
    nextcell:
                    Next cell
                End If
            Next i
        End If
    Next ws
    End Sub

  2. #2
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2013
    Messages : 70
    Points : 161
    Points
    161
    Par défaut
    Bonjour AKMMM,


    Il me semble qu'il manque un END IF à la condition IF en ligne 53. J'ai compté le nombre de If, j'en compte 6, et le nombre de End If, j'en compte 5. Je ne saurais pas expliquer pourquoi VB indique qu'un IF est manquant, mais peut être qu'en rajoutant ce End If en ligne 53 votre problème sera réglé.

    Cordialement,
    Alex

  3. #3
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    bonjour,

    il manque le "Loop" dans ta boucle Do ... While ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Loop While Range("A" & j) <> colMatches(0)

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Responsable en Ingénierie Logicielle
    Inscrit en
    Juin 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Responsable en Ingénierie Logicielle
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2014
    Messages : 9
    Points : 9
    Points
    9
    Par défaut
    Merci bbil, c'était ça en effet
    Alex, lorsqu'une condition est écrite sur une seule ligne, on ne met pas de End If :
    Soit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    If condition Then
         code
    End If
    soit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    If condition then code
    Voilà, problème résolu

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

Discussions similaires

  1. [XL-2010] And If sans bloc If
    Par Madwinn dans le forum Excel
    Réponses: 2
    Dernier message: 29/01/2015, 10h29
  2. [XL-2010] End If sans bloc if
    Par stef94 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 23/01/2015, 16h39
  3. [XL-2010] End If sans bloc If
    Par statista dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 07/01/2011, 14h47
  4. [Toutes versions] If-End if :sans effet....
    Par lenul78570 dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 27/05/2010, 10h49
  5. [VBA-E] bloc sans "end if"
    Par chmod777 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 23/03/2006, 09h38

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