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 :

Erreur de compilation Sub End attendu


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 52
    Points : 38
    Points
    38
    Par défaut Erreur de compilation Sub End attendu
    Merci de me renseigner sur ce petit problème, en effet quand j'essaye d'éxecuter ma macro, j'ai ce message d'erreur: erreur de compilation end sub attendu.

    Voici ma macro:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub TypeColor()
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 3 Then
    If Target = "OPCVM" Then
    Rows(Target.Row & ":" & Target.Row).Interior.ColorIndex = 17
    Else
    Rows(Target.Row & ":" & Target.Row).Interior.ColorIndex = xlNone
    End If
    End If
    End Sub
    End Sub

  2. #2
    Membre régulier
    Inscrit en
    Avril 2010
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 68
    Points : 72
    Points
    72
    Par défaut
    tu ne peux pas emboiter les sub comme ç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
    Sub TypeColor()
    call Worksheet_change(target)
    End Sub
     
     
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 3 Then
    If Target = "OPCVM" Then
    Rows(Target.Row & ":" & Target.Row).Interior.ColorIndex = 17
    Else
    Rows(Target.Row & ":" & Target.Row).Interior.ColorIndex = xlNone
    End If
    End If
    End Sub

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 52
    Points : 38
    Points
    38
    Par défaut
    Merci pr l'aide, ms maintenant il met

    erreur d'éxecution 424

    ????

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    633
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 633
    Points : 877
    Points
    877
    Par défaut
    Bonjour

    il faut mettre ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 3 Then
    If Target = "OPCVM" Then
    Rows(Target.Row & ":" & Target.Row).Interior.ColorIndex = 17
    Else
    Rows(Target.Row & ":" & Target.Row).Interior.ColorIndex = xlNone
    End If
    End If
    End Sub
    dans le code de la feuille et non dans un module car il s'agit d'un événement qui seras lancé automatiquement à chaque fois que tu changeras une valeur dans ta feuille

    de plus tu n'as pas besoin de l'autre bout de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub TypeColor()
    call Worksheet_change(target)
    End Sub
    a+

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 52
    Points : 38
    Points
    38
    Par défaut
    MERCI ça marche, seul problème la coloration se fait sur toute la ligne
    et non pas seulement jusqu'à la limite du tableau!! Comment faire!?

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    633
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 633
    Points : 877
    Points
    877
    Par défaut
    a modifier suivant le nombre de colonne que tu veux colorer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 3 Then
    If Target = "OPCVM" Then
    Range(Cells(Target.Row, 1), Cells(Target.Row, 10)).Select.Interior.ColorIndex = 17
    Else
    Range(Cells(Target.Row, 1), Cells(Target.Row, 10)).Interior.ColorIndex = xlNone
    End If
    End If
    End Sub

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 52
    Points : 38
    Points
    38
    Par défaut
    merci zyhack, ms ya aucun changement quand j'execute la macro quer voici:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 3 Then
    If Target = "OPCVM" Then
    Range(Cells(Target.Row 1), Cells (Target.Row, 14)).Select.Interior.ColorIndex = 17
    Else
    Range(Cells(Target.Row, 1), Cells(Target.Row, 14)).Interior.ColorIndex = xlNone
    End If
    End If
    End Sub
    End Sub



    Sub TypeColor()
    End Sub

    y aurait-il une erreur?? et merci encore

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    633
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 633
    Points : 877
    Points
    877
    Par défaut
    tu avais oublié une virgule et il restait un select en trop

    essaye ce code je l'ai testé et il fonctionne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 3 Then
      If Target = "OPCVM" Then
        Range(Cells(Target.Row, 1), Cells(Target.Row, 14)).Interior.ColorIndex = 17
      Else
        Range(Cells(Target.Row, 1), Cells(Target.Row, 14)).Interior.ColorIndex = xlNone
      End If
    End If
    End Sub

  9. #9
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Tu n'as qu'à mettre ce code dans le module de ta feuille (évènement Change)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 3 Then
       If Target = "OPCVM" Then
          Range("A" & Target.Row & ":N" & Target.Row).Interior.ColorIndex = 17
       Else
          Range("A" & Target.Row & ":N" & Target.Row).Interior.ColorIndex = xlNone
       End If
    End If
    End Sub

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 52
    Points : 38
    Points
    38
    Par défaut
    J'ai testé les 2méthode (mercatog et zyhack) sans succés la macro continue à colorer toute les ligne!!! zut c casse bonbon les macros!!!
    pourtant ça ma l'air bien logique vos codage!

    Merci de réesseyer les gars!

  11. #11
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Testé et fonctionne (chez zyhack et chez moi)
    ci joint, code généralisé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim c As Range
     
    For Each c In Target
       If c.Column = 3 Then
          If UCase(Trim(c.Value)) = "OPCVM" Then
             Range("A" & c.Row & ":N" & c.Row).Interior.ColorIndex = 17
          Else
             Range("A" & c.Row & ":N" & c.Row).Interior.ColorIndex = xlNone
          End If
       End If
    Next c
    End Sub

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 52
    Points : 38
    Points
    38
    Par défaut Appliquer plusieurs macros à un même feuille
    Merci les gars ça marche. Pouvez-vous me dire comment on procède pr appliquer plusieurs macros à une seule feuille? Je voudrais appliquer à peu près la même macro que toute à l'heure, à la différence près que cette fois ci à la place de "opcvm" je met "tcn" et code couleur différent: J'ai esseyé de la mettre ds un module ms ça marche pas!!

  13. #13
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    633
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 633
    Points : 877
    Points
    877
    Par défaut
    si c'est pour comparer dans la même feuille utilise ce code en remplacement du précédent

    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
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim c As Range
     
    For Each c In Target
       If c.Column = 3 Then
          Select Case UCase(Trim(c.Value))
            Case "OPCVM"
              Range("A" & c.Row & ":N" & c.Row).Interior.ColorIndex = 17
            Case "TCN"
              Range("A" & c.Row & ":N" & c.Row).Interior.ColorIndex = 35
            Case Else
              Range("A" & c.Row & ":N" & c.Row).Interior.ColorIndex = xlNone
          End Select
       End If
    Next c
    End Sub

  14. #14
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Dans le même sens que zyhack, et par mesure de simplification d'écriture 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
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim c As Range
    Dim klr As Integer
     
    For Each c In Target
       If c.Column = 3 Then
          Select Case UCase(Trim(c.Value))
            Case "OPCVM": klr = 35
            Case "TCN": klr = 17
            'Case "Blabla": klr=39
            '....
            Case Else: klr = xlNone
          End Select
       End If
       Range("A" & c.Row & ":N" & c.Row).Interior.ColorIndex = klr
    Next c
    End Sub

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

Discussions similaires

  1. [XL-2010] Erreur de compilation : Sub ou Function non définie
    Par forum2015 dans le forum Macros et VBA Excel
    Réponses: 24
    Dernier message: 23/07/2014, 18h04
  2. [XL-2007] Erreur de compilation : sub ou fonction non définie
    Par Marine38500 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 14/02/2014, 17h37
  3. [XL-2007] Erreur de compilation : Sub ou Function non définie
    Par pimpom81 dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 27/03/2013, 20h47
  4. Réponses: 3
    Dernier message: 18/03/2008, 12h04
  5. Réponses: 5
    Dernier message: 27/04/2006, 20h53

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