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 :

Problème avec If ElseIf [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    étudiant
    Inscrit en
    Août 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : étudiant

    Informations forums :
    Inscription : Août 2014
    Messages : 5
    Points : 1
    Points
    1
    Par défaut Problème avec If ElseIf
    Bonjour,

    J'aimerais réaliser quelque chose qui est, je pense assez simple, mais il y a un bug dans ce que j'ai fait et je ne comprends pas pourquoi ça ne marche pas. Peut-être pourrez-vous m'aider...

    Voici ce que je veux faire :
    J'ai des plusieurs références de bracelets qui sont séparés en 3 catégories: manchettes, jonc et chaîne.
    Je veux réaliser je segmentation de ces bracelets en fonction du prix (entry, médium, High et parfois High end). Or cette segmentation varie en fonction de la catégorie de bracelets.

    Le problème avec ce que j'ai fait c'est qu'il ne fait apparaître que des entry et médium dans la colonne segmentation: aucun High ou High end...

    Voici ce que j'ai fait :
    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
    Sub variables()
      'Déclaration des variables
      Dim numero_ligne As Integer
     
    For numero_ligne = 3 To 42
     
       If Cells(numero_ligne, 8).Value = "BRACELET CHAINE" Then
     
           If Cells(numero_ligne, 2).Value < xx Then
           Cells(numero_ligne, 9).Value = "ENTRY"
     
           ElseIf xx <= Cells(numero_ligne, 2).Value < xx Then
           Cells(numero_ligne, 9).Value = "MEDIUM"
     
           ElseIf xx <= Cells(numero_ligne, 2).Value < xx Then
           Cells(numero_ligne, 9).Value = "HIGH"
     
           ElseIf cells(numero_ligne,2).value>= xx then
    Cells(numero_ligne, 9).Value = "HIGH-END"
     
           End If
     
       ElseIf Cells(numero_ligne, 8).Value = "BRACELET MANCHETTE" Then
     
           If Cells(numero_ligne, 2).Value < xx Then
           Cells(numero_ligne, 9).Value = "ENTRY"
     
           ElseIf xx <= Cells(numero_ligne, 2).Value < xx Then
           Cells(numero_ligne, 9).Value = "MEDIUM"
     
           ElseIf cells(numero_ligne,2).value>= xx then
     Cells(numero_ligne, 9).Value = "HIGH-END"
     
           End If
     
       ElseIf Cells(numero_ligne, 8).Value = "BRACELET JONC" Then
     
           If Cells(numero_ligne, 2).Value < xx Then
           Cells(numero_ligne, 9).Value = "ENTRY"
     
           ElseIf 600 <= Cells(numero_ligne, 2).Value < xx Then
           Cells(numero_ligne, 9).Value = "MEDIUM"
     
           ElseIf xx <= Cells(numero_ligne, 2).Value < xx Then
           Cells(numero_ligne, 9).Value = "HIGH"
     
           ElseIf cells(numero_ligne,2).value >= xx then
     Cells(numero_ligne, 9).Value = "HIGH-END"
     
           End If
     
        End If
     
        Next
     
        End Sub

    Merci d'avance pr votre aide !

    Bonne soirée

  2. #2
    Nouveau Candidat au Club
    Femme Profil pro
    étudiant
    Inscrit en
    Août 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : étudiant

    Informations forums :
    Inscription : Août 2014
    Messages : 5
    Points : 1
    Points
    1
    Par défaut Problème if elseif
    (Excusez-moi je viens de voir Qu'il y a des endif en trop sur ce que j'ai posté, c'est une erreur ! Une fois corrigé le problème persiste)

  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 040
    Points
    20 040
    Par défaut
    Citation Envoyé par duchesse_ Voir le message
    (Excusez-moi je viens de voir Qu'il y a des endif en trop sur ce que j'ai posté, c'est une erreur ! Une fois corrigé le problème persiste)
    Bonsoir,

    et qu'attendez-vous pour poster le code corrigé ?

    comment est initialisé votre variable xx ?

  4. #4
    Nouveau Candidat au Club
    Femme Profil pro
    étudiant
    Inscrit en
    Août 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : étudiant

    Informations forums :
    Inscription : Août 2014
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Bonsoir,

    Il n'y a pas d'erreur, c'est bien ce que j'ai lancé sur excel. Autemps pour moi !

    J'ai oublié de préciser que xx n'était pas une variable : j'ai en fait remplacé toutes les valeurs par xx pour des raisons de confidentialité (c'est des valeurs différentes à chaque fois).

    Merci pour votre aide !

  5. #5
    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 040
    Points
    20 040
    Par défaut
    Il est clair que sans vos valeur sois disant confidentielle il n'est pas possible de comprendre le fonctionnement de votre code..

    De plus je doute qu'avec une telle écriture le problème de votre code ne soit qu'une mauvais résultat .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ElseIf xx <= Cells(numero_ligne, 2).Value < xx Then

  6. #6
    Nouveau Candidat au Club
    Femme Profil pro
    étudiant
    Inscrit en
    Août 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : étudiant

    Informations forums :
    Inscription : Août 2014
    Messages : 5
    Points : 1
    Points
    1
    Par défaut Pb If ElseIf
    Si ca peut vous aider à comprendre voici le code avec des valeurs:

    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
    Sub variables()
       'Déclaration des variables
       Dim numero_ligne As Integer
     
    For numero_ligne = 3 To 42
     
        If Cells(numero_ligne, 8).Value = "BRACELET CHAINE" Then
     
            If Cells(numero_ligne, 2).Value < 50 Then
            Cells(numero_ligne, 9).Value = "ENTRY"
     
            ElseIf 50 <= Cells(numero_ligne, 2).Value < 150 Then
            Cells(numero_ligne, 9).Value = "MEDIUM"
     
            ElseIf 150 <= Cells(numero_ligne, 2).Value < 500 Then
            Cells(numero_ligne, 9).Value = "HIGH"
     
            ElseIf Cells(numero_ligne, 2).Value >= 500 Then
            Cells(numero_ligne, 9).Value = "HIGH-END"
     
            End If
     
        ElseIf Cells(numero_ligne, 8).Value = "BRACELET MANCHETTE" Then
     
            If Cells(numero_ligne, 2).Value < 110 Then
            Cells(numero_ligne, 9).Value = "ENTRY"
     
            ElseIf 110 <= Cells(numero_ligne, 2).Value < 500 Then
            Cells(numero_ligne, 9).Value = "MEDIUM"
     
            ElseIf Cells(numero_ligne, 2).Value >= 500 Then
            Cells(numero_ligne, 9).Value = "HIGH-END"
     
            End If
     
        ElseIf Cells(numero_ligne, 8).Value = "BRACELET JONC" Then
     
            If Cells(numero_ligne, 2).Value < 40 Then
            Cells(numero_ligne, 9).Value = "ENTRY"
     
            ElseIf 40 <= Cells(numero_ligne, 2).Value < 100 Then
            Cells(numero_ligne, 9).Value = "MEDIUM"
     
            ElseIf 100 <= Cells(numero_ligne, 2).Value < 500 Then
            Cells(numero_ligne, 9).Value = "HIGH"
     
            ElseIf Cells(numero_ligne, 2).Value >= 500 Then
            Cells(numero_ligne, 9).Value = "HIGH-END"
     
            End If
     
         End If
     
         Next
     
         End Sub
    Voici ce qui s'affiche dans ma colonne "Segmentation" :
    ENTRY
    MEDIUM
    MEDIUM
    MEDIUM
    MEDIUM
    MEDIUM
    ENTRY
    MEDIUM
    MEDIUM
    MEDIUM
    MEDIUM
    MEDIUM
    MEDIUM
    MEDIUM
    MEDIUM
    ENTRY
    MEDIUM
    MEDIUM
    ENTRY
    MEDIUM
    ENTRY
    MEDIUM
    MEDIUM
    ENTRY
    MEDIUM
    ENTRY
    ENTRY
    ENTRY
    MEDIUM
    ENTRY
    MEDIUM
    ENTRY
    MEDIUM
    MEDIUM
    ENTRY
    ENTRY
    ENTRY
    Comme je vous le disais, il n'y a pas de High ou de High end

  7. #7
    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 040
    Points
    20 040
    Par défaut
    bonjour,

    l'écriture :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       ElseIf 50 <= Cells(numero_ligne, 2).Value < 150 Then
    est incorrecte il faut écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       ElseIf 50 <= Cells(numero_ligne, 2).Value And Cells(numero_ligne, 2).Value  < 150 Then

  8. #8
    Invité
    Invité(e)
    Par défaut Bonjour, regardes ç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
    15
    16
    17
    18
    19
    20
    21
    22
    23
    Sub variables()
    'Déclaration des variables
    Dim numero_ligne As Integer
    For numero_ligne = 3 To 42
            Select Case Cells(numero_ligne, 8).Value
            Case "BRACELET CHAINE"
                If Cells(numero_ligne, 2).Value < xx Then Cells(numero_ligne, 9).Value = "ENTRY"
                If xx <= Cells(numero_ligne, 2).Value < xx Then Cells(numero_ligne, 9).Value = "MEDIUM"
                If xx <= Cells(numero_ligne, 2).Value < xx Then Cells(numero_ligne, 9).Value = "HIGH"
                If Cells(numero_ligne, 2).Value >= xx Then Cells(numero_ligne, 9).Value = "HIGH-END"
            Case "BRACELET MANCHETTE"
                If Cells(numero_ligne, 2).Value < xx Then Cells(numero_ligne, 9).Value = "ENTRY"
                If xx <= Cells(numero_ligne, 2).Value < xx Then Cells(numero_ligne, 9).Value = "MEDIUM"
                If Cells(numero_ligne, 2).Value >= xx Then Cells(numero_ligne, 9).Value = "HIGH-END"
            Case Cells(numero_ligne, 8).Value = "BRACELET JONC"
                If Cells(numero_ligne, 2).Value < xx Then Cells(numero_ligne, 9).Value = "ENTRY"
                If 600 <= Cells(numero_ligne, 2).Value < xx Then Cells(numero_ligne, 9).Value = "MEDIUM"
                If xx <= Cells(numero_ligne, 2).Value < xx Then Cells(numero_ligne, 9).Value = "HIGH"
                If Cells(numero_ligne, 2).Value >= xx Then Cells(numero_ligne, 9).Value = "HIGH-END"
     
        End Select
    Next
    End Sub

  9. #9
    Nouveau Candidat au Club
    Femme Profil pro
    étudiant
    Inscrit en
    Août 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : étudiant

    Informations forums :
    Inscription : Août 2014
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Merci beaucoup, cela fonctionne !!

  10. #10
    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 040
    Points
    20 040
    Par défaut
    bonjour rdurupt

    il semble que tu n'ais pas lu mon message tu écris :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      If xx <= Cells(numero_ligne, 2).Value < xx Then Cells(numero_ligne, 9).Value = "MEDIUM"
    ce qui équivaut à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      If (xx <= Cells(numero_ligne, 2).Value)  < xx Then Cells(numero_ligne, 9).Value = "MEDIUM"
    donc on as

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     (xx <= Cells(numero_ligne, 2).Value)
    que l'on peu remplacer par true ou false ...

    du coup c'est comme si tu écrivais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      If true  < xx Then Cells(numero_ligne, 9).Value = "MEDIUM"
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      If false < xx Then Cells(numero_ligne, 9).Value = "MEDIUM"
    c'est bien le résultat que tu compte avoir ?

  11. #11
    Invité
    Invité(e)
    Par défaut Bonjour bbil,
    Oui effectivement j'ai zappé!

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 02/03/2015, 20h59
  2. Réponses: 9
    Dernier message: 29/03/2011, 20h45
  3. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 18h48
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

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