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 :

IF imbriquer erreur indice Comprend pas


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2009
    Messages : 22
    Par défaut IF imbriquer erreur indice Comprend pas
    bonjour a tous
    voila mon petit souci qui me rend insomniac
    j ai une mise en couleur de la selon la valeur de la seulement j ai 36 couleur possible selon condition,
    a la I = 4 => erreur l indice n appartient pas a la selection
    c est peu ete une faute debile mais je suis au tout debut de mon aprentisage donc voila s'il vous plait eclairez moi

    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
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim i As Integer
    Dim WS As String 'variable de controle
    i = 1
    While i < 32760
        WS = Worksheets("BDR").Cells(i, 2).Text
         If Worksheets("BDR").Cells(i, 4).Text = "Assurance Apartement" Then
            Worksheets("BDR").Cells(i, 2).Interior.ColorIndex = 43
                ElseIf Worksheets("BDR").Cells(i, 4).Text = "Assurance Familliale" Then
                       Worksheets("BDR").Cells(i, 2).Interior.ColorIndex = 6754
                       ElseIf Worksheets("BDR").Cells(i, 4).Text = "Assurance incendie" Then
                              Worksheets("BDR").Cells(i, 2).Interior.ColorIndex = 5345
                              ElseIf Worksheets("BDR").Cells(i, 4).Text = "Assurance Vie" Then
                                     Worksheets("BDR").Cells(i, 2).Interior.ColorIndex = 89
                                     ElseIf Worksheets("BDR").Cells(i, 4).Text = "Assurance Voiture" Then
                                            Worksheets("BDR").Cells(i, 2).Interior.ColorIndex = 65
                                            ElseIf Worksheets("BDR").Cells(i, 4) = "Cigarettes" Then
                                                   Worksheets("BDR").Cells(i, 2).Interior.ColorIndex = 70
                                                            ElseIf Worksheets("BDR").Cells(i, 4) = "Coiffeuse (ced)" Then
                                                            Worksheets("BDR").Cells(i, 2).Interior.ColorIndex = 75
                                                                  ElseIf Worksheets("BDR").Cells(i, 4) = "Coiffeuse (Rosa)" Then
                                                                         Worksheets("BDR").Cells(i, 2).Interior.ColorIndex = 80
                                                                         ElseIf Worksheets("BDR").Cells(i, 4) = "Compte Epargne" Then
                                                                                Worksheets("BDR").Cells(i, 2).Interior.ColorIndex = 85
                                                                                ElseIf Worksheets("BDR").Cells(i, 4) = "Confort" Then
                                                                                       Worksheets("BDR").Cells(i, 2).Interior.ColorIndex = 90
                                                                                       ElseIf Worksheets("BDR").Cells(i, 4) = "Course Alimentaire" Then
                                                                                              Worksheets("BDR").Cells(i, 2).Interior.ColorIndex = 95
                                                                                              ElseIf Worksheets("BDR").Cells(i, 4) = "Course Menage" Then
                                                                                                     Worksheets("BDR").Cells(i, 2).Interior.ColorIndex = 100
                                                                                                     ElseIf Worksheets("BDR").Cells(i, 4) = "Divers" Then
                                                                                                            Worksheets("BDR").Cells(i, 2).Interior.ColorIndex = 200
                                                                                                            ElseIf Worksheets("BDR").Cells(i, 4) = "Emprunt Maison" Then
                                                                                                                   Worksheets("BDR").Cells(i, 2).Interior.ColorIndex = 300
                                                                                                                   ElseIf Worksheets("BDR").Cells(i, 4) = "Emprunt Maman(franca)" Then
                                                                                                                          Worksheets("BDR").Cells(i, 2).Interior.ColorIndex = 500
                                                                                                                          ElseIf Worksheets("BDR").Cells(i, 4) = "Emprunt Voiture" Then
                                                                                                                                 Worksheets("BDR").Cells(i, 2).Interior.ColorIndex = 700
                                                                                                                                 ElseIf Worksheets("BDR").Cells(i, 4) = "Essence" Then
                                                                                                                                 Worksheets("BDR").Cells(i, 2).Interior.ColorIndex = 1000
                                                                                                                          ElseIf Worksheets("BDR").Cells(i, 4) = "Gsm cédric" Then
                                                                                                                          Worksheets("BDR").Cells(i, 2).Interior.ColorIndex = 5000
                                                                                                                   ElseIf Worksheets("BDR").Cells(i, 4) = "Gsm Rosa" Then
                                                                                                                   Worksheets("BDR").Cells(i, 2).Interior.ColorIndex = 10000
                                                                                                            ElseIf Worksheets("BDR").Cells(i, 4) = "Loyer Appartement" Then
                                                                                                            Worksheets("BDR").Cells(i, 2).Interior.ColorIndex = 20000
                                                                                                     ElseIf Worksheets("BDR").Cells(i, 4) = "Luminus" Then
                                                                                                     Worksheets("BDR").Cells(i, 2).Interior.ColorIndex = 50000
                                                                                              ElseIf Worksheets("BDR").Cells(i, 4) = "Mazout Chauffage" Then
                                                                                              Worksheets("BDR").Cells(i, 2).Interior.ColorIndex = 100000
                                                                                       ElseIf Worksheets("BDR").Cells(i, 4) = "Medecin" Then
                                                                                       Worksheets("BDR").Cells(i, 2).Interior.ColorIndex = 200000
                                                                                ElseIf Worksheets("BDR").Cells(i, 4) = "Medicament" Then
                                                                                Worksheets("BDR").Cells(i, 2).Interior.ColorIndex = 500000
                                                                         ElseIf Worksheets("BDR").Cells(i, 4) = "Mutuelle cédric" Then
                                                                         Worksheets("BDR").Cells(i, 2).Interior.ColorIndex = 1000000
                                                                  ElseIf Worksheets("BDR").Cells(i, 4) = "Mutuelle Rosa" Then
                                                                  Worksheets("BDR").Cells(i, 2).Interior.ColorIndex = 3000000
                                                            ElseIf Worksheets("BDR").Cells(i, 4) = "Ordinateur" Then
                                                            Worksheets("BDR").Cells(i, 2).Interior.ColorIndex = 5000000
                                         ElseIf Worksheets("BDR").Cells(i, 4) = "Region Wallone des eaux" Then
                                         Worksheets("BDR").Cells(i, 2).Interior.ColorIndex = 6000000
                                  ElseIf Worksheets("BDR").Cells(i, 4) = "Salaire cédric" Then
                                  Worksheets("BDR").Cells(i, 2).Interior.ColorIndex = 7000000
                           ElseIf Worksheets("BDR").Cells(i, 4) = "Salaire Rosa" Then
                           Worksheets("BDR").Cells(i, 2).Interior.ColorIndex = 8000000
                    ElseIf Worksheets("BDR").Cells(i, 4) = "Sport (cédric)" Then
                    Worksheets("BDR").Cells(i, 2).Interior.ColorIndex = 9000000
              ElseIf Worksheets("BDR").Cells(i, 4) = "Vêtements" Then
              Worksheets("BDR").Cells(i, 2).Interior.ColorIndex = 10000000
        ElseIf Worksheets("BDR").Cells(i, 4) = "Voiture" Then
        Worksheets("BDR").Cells(i, 2).Interior.ColorIndex = 30000000
    End If
     i = i + 1
    Wend
    End Sub
    petite precision ws est une variable de controle pour verifier pendant le pas a pas à quelle ligne je me touve car j ai remarquer que lorsque

    i=4 je me trouve a la cellule B2 bizar
    pour ceux qui voudrai tester le fichier est en piece jointe ^^
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bon...matin,

    Je viens de regarder, apparemment ton code n'aime pas les numéros de couleurs que tu attribues, j'ai changé pour de vrais valeurs et plus de problème.
    ci-joint les codes couleurs

    bonne journée

    PS : je n'ai rien regardé d'autre
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  3. #3
    Membre Expert
    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
    Par défaut
    Salut dec3003 et le forum
    Je verrais plus une macro dans ce style
    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
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim i As Long
    Dim Couleur As Long
    For i = 1 To Range("D" & Rows.Count).End(xlUp).Row
        Select Case Worksheets("BDR").Cells(i, 4)
            Case "Assurance Appartement"
                Couleur = 43
            Case "Assurance Familliale"
                Couleur = 6754
            Case "Assurance incendie"
                Couleur = 5345
            Case "Assurance Vie"
                Couleur = 89
            Case "Assurance Voiture"
                Couleur = 65
            Case "Cigarettes"
                Couleur = 70
            Case "Coiffeuse (ced)"
                Couleur = 75
            Case "Coiffeuse (Rosa)"
                Couleur = 80
            Case "Compte Epargne"
                Couleur = 85
            Case "Confort"
                Couleur = 90
            Case "Course Alimentaire"
                Couleur = 95
            Case "Course Menage"
                Couleur = 100
            Case "Divers"
                Couleur = 200
            Case "Emprunt Maison"
                Couleur = 300
            Case "Emprunt Maman(franca)"
                Couleur = 500
            Case "Emprunt Voiture"
                Couleur = 700
            Case "Essence"
                Couleur = 1000
            Case "Gsm cédric"
                Couleur = 5000
            Case "Gsm Rosa"
                Couleur = 10000
            Case "Loyer Appartement"
                Couleur = 20000
            Case "Luminus"
                Couleur = 50000
            Case "Mazout Chauffage"
                Couleur = 100000
            Case "Medecin"
                Couleur = 200000
            Case "Medicament"
                Couleur = 500000
            Case "Mutuelle cédric"
                Couleur = 1000000
            Case "Mutuelle Rosa"
                Couleur = 3000000
            Case "Ordinateur"
                Couleur = 5000000
            Case "Region Wallone des eaux"
                Couleur = 6000000
            Case "Salaire cédric"
                Couleur = 7000000
            Case "Salaire Rosa"
                Couleur = 8000000
            Case "Sport (cédric)"
                Couleur = 9000000
            Case "Vêtements"
                Couleur = 10000000
            Case "Voiture"
                Couleur = 30000000
        End Select
        Worksheets("BDR").Cells(i, 2).Interior.ColorIndex = Couleur
    Next
    End Sub
    Je trouve ça plus lisible. Mais c'est une opinion personnelle.

    Tu Utilises Colorindex : en gros, c'est le numéro d'index de ta couleur dans la palette et ça m'étonnerait fortement que même la tienne dépasse la centaine. Je n'ai pas corrigé, ne sachant pas quelles couleurs représentent tes nombres.
    Si tu veux des couleurs spécifiques, tu peux utiliser (.Color =) et soit mettre la couleur (entier long), soit la coder avec RVB(rouge,vert,bleu), par exemple.
    A+
    Nota : pour éviter les fautes de frappes, je te conseillerais d'utiliser une liste de validayion pour ta colonne D : "Assurance Apartement" en est un exemple flagrant

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2009
    Messages : 22
    Par défaut merci
    pour l'orthogrophe j'ai fais des copier coller j'avais pas vu la faute lool je suis comme qui dirai pas douer en francais lol je crois que je vais créer une classe pour les attribuer a des varriable si cela est possible bien entendu enfin je vais poffiner mon code lorsque j aurai fini le programme , c'est mon premier alors du coup pas toujours evident enfin merci a vous les

  5. #5
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 122
    Par défaut
    Salut
    Si c t pour moi, j'utiliserais 2 colonnes de mon tableau que je cacherais dans un coin ou sur une feuille "Gestion" par exemple.
    Dans ces 2 colonnes:
    1er colonne les chaines de texte (Assurance Appartement,Assurance Familliale,Assurance incendie,...)
    2eme colonne en face des chaine le format souhaité désiré.

    Puis dans ton code, tu recherches a quelle chaine correspond

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("BDR").Cells(i, 4)
    Puis tu lui attribue le format correspondant, ça prendrait 3 lignes de code au lieux de... beaucoup trop ^^, de plus l'avantage, c'est que même un néophyte en vba, pourras modifier facilement le tableau et ainsi rajouter ou modifier les formats obtenus en fonction de telle ou telle chaine.

    [Edit]
    Aller voila ce que ça donnerai, voir fichier joint, j'ai fait des modifs dans Resume et le code fonctionne pour BRD.
    [/Edit]

    A++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  6. #6
    Membre Expert
    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
    Par défaut
    salut à tous
    Une autre proposition, avec un pseudo format multiconditionnel
    A+

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

Discussions similaires

  1. [Débutant] Erreur je comprends pas pourquoi!
    Par steph-declic dans le forum C#
    Réponses: 6
    Dernier message: 23/07/2014, 16h02
  2. erreur javascript : comprends pas.
    Par laurentSc dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 19/02/2010, 17h10
  3. erreur session_start(); comprend pas
    Par lonycc dans le forum Langage
    Réponses: 2
    Dernier message: 15/04/2007, 19h58
  4. Réponses: 9
    Dernier message: 31/05/2005, 13h38
  5. Erreur Objet requis : 'this' --> Comprend pas!!
    Par Grozeil dans le forum ASP
    Réponses: 3
    Dernier message: 30/03/2005, 09h46

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