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 sur un else


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2014
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Août 2014
    Messages : 42
    Par défaut Problème sur un else
    Bonjour à tous,

    J'ai fait une macros pour matcher 2 fichiers mais je rencontre un problème sur "prix_exec1", en effet je voudrais qu'il prenne le prix de la cellule i,7 si c'est pareil avec l'autre fichier mais si c'est différent qu'il prenne i,20, le souci c'est que sans le else la macro fonctionne quand prix-exec1 = i,7 mais avec le else plus rien, voici le 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
    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
    Sub Match()
     
     
     
    'Matching
     
        'Morgan Stanley
     
        Sheets(2).Activate
     
    lignemax1 = Range("a7").End(xlDown).Row
     
    For p = 7 To lignemax1
     
    Sheets(2).Activate
     
        sens1 = Cells(p, 2)
            If sens1 = "Buy" Then
                sens1 = "B"
            ElseIf sens1 = "Sell" Then
                sens1 = "S"
            End If
     
        prix_exec1 = CDbl(Cells(p, 10).Value)
        commission1 = CDbl(Cells(p, 12).Value)
        quantite1 = CDbl(Cells(p, 9).Value)
     
     
        'Main courante
     
        Sheets(1).Activate
     
        lignemax2 = Range("b5").End(xlDown).Row
     
        For i = 5 To lignemax2
     
        If Cells(i, 3).Value = sens1 Then
            If CDbl(Cells(i, 7).Value) = prix_exec1 Then
             Else: Cells(i, 20).Value = prix_exec1
                If Round(CDbl(Cells(i, 11).Value), 2) = commission1 Then
                    If CDbl(Cells(i, 4).Value) = quantite1 Then
     
                       Cells(i, 12).Value = "JM"
     
                    End If
                End If
            End If
        End If
     
        Next i
     
     
    Next p
     
     
     
    End Sub
    Si quelqu'un pouvez y jeter un œil svp

  2. #2
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut


    Bonjour,

    comme de coutume pas vraiment clair, si je me réfère seulement au titre de cette discussion,
    j’émettrais donc un doute sur les lignes n°38 & 39 du code :
    après le Then il devrait y avoir autre chose que Else, sinon revoir la condition de cette ligne;
    le Else devrait être seul sur la ligne (voir donc l'aide VBA intégrée ‼), effacer les deux points
    et passer le reste de la ligne en ligne suivante puis, enfin, vérifier l'enchaînement logique des conditions …

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2014
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Août 2014
    Messages : 42
    Par défaut
    désolé j'ai des difficultés à être précis avec VBA, quand je descend le else, ça me met les prix_exec en i,20 alor que moi je veux juste que ça me mette JM en i,12 quand c'est bon

  4. #4
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par ayms75 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
            If CDbl(Cells(i, 7).Value) = prix_exec1 Then
             Else: Cells(i, 20).Value = prix_exec1
                If Round(CDbl(Cells(i, 11).Value), 2) = commission1 Then
                    If CDbl(Cells(i, 4).Value) = quantite1 Then
     
                       Cells(i, 12).Value = "JM"
     
                    End If
                End If
            End If
    Déjà, il n'y a aucune action entre le premier If et le Else ce qui semble totalement anomal.
    Ensuite, pour que le else mette effectivement "JM" dans la cellule, c'est sujet aux conditions des If suivants.

  5. #5
    Membre émérite
    Avatar de eric4459
    Homme Profil pro
    Ingénieur Gestion de Projets
    Inscrit en
    Avril 2014
    Messages
    605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Gestion de Projets
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 605
    Par défaut
    Tout à fait d'accord avec Menhir et Marc,

    Le principe de cette condition est

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If ta condition  then ' doit vérifier ta condition
    Action 1 'si la condition est vérifiée l'action se réalise
    Else 'Sinon (Si la condition n'est pas vérifiée)
    Action2 'On réalise la deuxième action
    End if
    Eric
    "Vous n’avez cessé d’essayer ? Vous n’avez cessé d’échouer ? Aucune importance !
    Réessayez, échouez encore, échouez mieux." Samuel Beckett
    Pensez aux balises et
    Visitez les FAQ Excel et allez faire un tour ici
    Tutoriels de SilkyRoad

  6. #6
    Membre émérite Avatar de keygen08
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations forums :
    Inscription : Octobre 2012
    Messages : 545
    Par défaut
    Bonjour
    Sans garantie du resultat puisque on ne sait pas forcement ce que vous voulez obtenir

    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
    Sub Match()
    Dim Sens1 As String
    Dim i As Integer, p As Integer
     
    For p = 7 To Sheets(2).Range("a7").End(xlDown).Row
        With Sheets(2)
            Sens1 = .Cells(p, 2)
                If Sens1 = "Buy" Then Sens1 = "B"
                If Sens1 = "Sell" Then Sens1 = "S"
     
            prix_exec1 = CDbl(.Cells(p, 10).Value)
            commission1 = CDbl(.Cells(p, 12).Value)
            quantite1 = CDbl(.Cells(p, 9).Value)
        End With
    Next p
     
    For i = 5 To Sheets(1).Range("b5").End(xlDown).Row
        With Sheets(1) 'Main courante
            If .Cells(i, 3).Value = Sens1 Then
                If CDbl(.Cells(i, 7).Value) <> prix_exec1 Then prix_exec1 = .Cells(i, 20).Value
     
                If Round(CDbl(.Cells(i, 11).Value), 2) = commission1 And CDbl(.Cells(i, 4).Value) = quantite1 Then .Cells(i, 12).Value = "JM"
            End If
        End With
    Next i
     
    End Sub
    Il reste trois variable a dimensionner et je ne sais que faire de cette variable prix_exec1 lorsqu'il est egal à (i,20)

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2014
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Août 2014
    Messages : 42
    Par défaut
    Merci pour vos réponse mais ça ne marche pas, le principe de la macro est qu'il y a 2 fichiers avec 4 valeurs à vérifier et si elles sont identiques alors ça met JM en i,12. mais pour le prix-exec1 si la valeurs n'est pas bonne en i,7 alors il faut vérifier en i,20 et si c'est bon mettre JM en i,12. j’espère avoir était plus clair

  8. #8
    Membre émérite Avatar de keygen08
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations forums :
    Inscription : Octobre 2012
    Messages : 545
    Par défaut
    Remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If CDbl(.Cells(i, 7).Value) <> prix_exec1 Then prix_exec1 = .Cells(i, 20).Value
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If CDbl(.Cells(i, 7).Value) = prix_exec1 Or CDbl(.Cells(i, 20).Value) = prix_exec1 Then
    dans le code precedement poster

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

Discussions similaires

  1. [XL-2010] Problème sur la fonction IF THEN ELSE
    Par ValerieH34 dans le forum Excel
    Réponses: 2
    Dernier message: 18/05/2015, 16h22
  2. Problème sur la recherche fulltext en v4 !
    Par poppa dans le forum Requêtes
    Réponses: 3
    Dernier message: 13/05/2004, 23h06
  3. Problème sur GetPrivateProfileString ???
    Par Bordelique dans le forum Langage
    Réponses: 7
    Dernier message: 25/06/2003, 22h15
  4. Problème sur une requête INSERT
    Par Marion dans le forum Langage SQL
    Réponses: 3
    Dernier message: 17/06/2003, 08h45
  5. problème sur une requête!!!!!
    Par Mcgrady_01 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 13/06/2003, 01h17

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