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 :

créer une macro pour comparer deux cellules d'une même colonne


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Inscrit en
    Octobre 2010
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 18
    Points : 6
    Points
    6
    Par défaut créer une macro pour comparer deux cellules d'une même colonne
    Bonjour à tous,
    J'aimerai bien créer une macro qui me permettra de résoudre le problème suivant :
    Dans le fichier excel ci joint, j'ai 4 colonnes A: jours, B=prix, C=variation de prix (p(t)-p(t-1))
    *) si la variation de prix dans la colonne C ( p(t)-p(t-1)) est différente à 0, la valeur obtenu s'affichera telle quelle est dans la même cellule de la colonne D.

    *) si la variation de prix de la colonne C (p(t)-p(t-1)) est égale à 0 dans ce cas, je passe à comparer p(t) avec p(t-2) si p(t)-p(t-2) est positive (négative), j'affectera dans la même cellule de la colonne D la valeur 1 (-1 pour la un résultat negative).
    Or si p(t)-p(t-2)=0 je passe à comparer p(t)-p(t-3) la même pour p(t)-p(t-4) et p(t)-p(t-5) jusqu'à ce que j'obtiens une variation de prix non nulle. je m’arrêterai juste au niveau p(t)-p(t-5) et si cette variation p(t)-p(t-5) reste 0, la même cellule de la colonne D restera vide (pas de valeur).

    je veux résoudre ce problème par série de jour (c.à.d chaque jour à part) d'ou la difficulté
    merci d'avance
    Fichiers attachés Fichiers attachés

  2. #2
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Points : 3 974
    Points
    3 974
    Par défaut
    Bonjour,

    je veux résoudre ce problème par série de jour (c.à.d chaque jour à part)
    Si j’ai bien compris, tu ne prends pas en compte les variations entre 2 jours différents.
    Entre le 01092008 et le 02092008, la variation de -40 (7550 – 7510) n’est pas prise en compte.
    Idem entre le 02092008 et le 03092008, variation de -20 (7490 – 7470).
    Idem entre le 03092008 et le 04092008, variation de -220 (7440 – 7220).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub Test()
    Dim DerLig As Long
    Dim MaPlage As Range, Cel As Range
        With Worksheets("Feuil1") 'Nom de feuille à adapter
            DerLig = .Range("A" & .Rows.Count).End(xlUp).Row
            Set MaPlage = .Range("A2:A" & DerLig - 1)
            For Each Cel In MaPlage
                'Si les 2 dates sont identiques, on effectue le traitement
                If Cel.Offset(1, 0) = Cel Then _
                    Cel.Offset(1, 2) = Cel.Offset(1, 1) - Cel.Offset(0, 1)
            Next
        End With
    End Sub
    Cordialement.

  3. #3
    Futur Membre du Club
    Inscrit en
    Octobre 2010
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 18
    Points : 6
    Points
    6
    Par défaut
    oui vous avez compris chaque jour a part seulement la macro ne me donne aucun résultat

  4. #4
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Points : 3 974
    Points
    3 974
    Par défaut
    Re,

    Effectivement, j'ai oublié le traitement de la colonne D
    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
    Sub Test()
    Dim DerLig As Long
    Dim MaPlage As Range, Cel As Range
        With Worksheets("Feuil1") 'Nom de feuille à adapter
            DerLig = .Range("A" & .Rows.Count).End(xlUp).Row
            Set MaPlage = .Range("A2:A" & DerLig - 1)
            For Each Cel In MaPlage
                'Si les 2 dates sont identiques, on effectue le traitement
                If Cel.Offset(1, 0) = Cel Then
                    'Calcul de la variation
                    Cel.Offset(1, 2) = Cel.Offset(1, 1) - Cel.Offset(0, 1)
                    'Remplissage colonne D
                    Select Case Cel.Offset(1, 2)
                    Case Is < 0
                        Cel.Offset(1, 3) = -1
                    Case Is > 0
                        Cel.Offset(1, 3) = 1
                    End Select
                End If
            Next
        End With
    End Sub
    Cordialement.

  5. #5
    Futur Membre du Club
    Inscrit en
    Octobre 2010
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 18
    Points : 6
    Points
    6
    Par défaut
    merci de m'avoir répondu
    votre macro traite seulement, les variations de prix qui sont différente de zero or mon problème cité ci-dessus est de traiter principalement les variations égale à zéro votre macro me donne une partie des résultats souhaités.
    Cordialement,

  6. #6
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Points : 3 974
    Points
    3 974
    Par défaut
    Re,

    dans l’énoncé de ta demande, je ne vois pas quel traitement tu souhaites réaliser quand une variation est égale à zéro.
    Pour traiter ce cas, il te suffira de rajouter une clause
    Cordialement.

Discussions similaires

  1. une macro pour déplacer certaines valeurs d'une colonne à l'autre
    Par serna dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/02/2015, 14h45
  2. [MySQL] comment faire pour comparer 2 cellule d'une tableau
    Par fcolin dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 22/06/2009, 16h26
  3. [Tableaux] Une fonction pour comparer deux tableaux ?
    Par renaud26 dans le forum Langage
    Réponses: 5
    Dernier message: 20/06/2009, 11h11
  4. Réponses: 3
    Dernier message: 01/06/2009, 18h21
  5. [VBA]lancer une macro à chaque changement de cellule dans une feuille
    Par freddddd dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 04/05/2007, 13h58

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