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 :

Comparaison de date [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 59
    Par défaut Comparaison de date
    Bonjour à tous,
    j'ai des successions de factures datées (sur 3 colonnes chacunes) et chacune d'elle est datée; j'aimerai pouvoir récupérer les prix minimums unitaires sur chaque année (2007, 2008, 2009 et 2010). J'ai donc fait la macro suivante, mais elle ne marche pas, elle me stock tous les prix dans la colonne correspondant à l'année 2010! Voyez-vous pourquoi?
    Merci d'avance!

    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
    Sub MIN()
    'Calcule les prix minimum pour chaque référence
    Dim PrixMinSept As Variant
    Dim PrixMinHuit As Variant
    Dim PrixMinNeuf As Variant
    Dim PrixMinDix As Variant
     
    Dim x As Integer
    Dim l As Integer
    Dim c As Integer
     
    ' Modifier le numéro du premier onglet Société
    For x = 5 To Sheets.Count
    ' Modifier l'intervalle des lignes de produits pour tous les onglets société
        For l = 4 To 160
        PrixMinSept = 10000
        PrixMinHuit = 10000
        PrixMinNeuf = 10000
        PrixMinDix = 10000
    ' Modifier le nombre limite de facture à prendre en compte
            For c = 1 To 60
                If Sheets(x).Cells(3, 3 * c + 7).Value = "PU" Then
                    If Format(Sheets(x).Cells(2, 3 * c + 8).Value, "dd/mm/yyyy") < 1 / 1 / 2008 Then
                        If (PrixMinSept > Sheets(x).Cells(l, 3 * c + 7).Value) And (Sheets(x).Cells(l, 3 * c + 7).Value <> 0) Then
                            PrixMinSept = Sheets(x).Cells(l, 3 * c + 7).Value
                        End If
                    ElseIf (Format(Sheets(x).Cells(2, 3 * c + 8).Value, "dd/mm/yyyy") < 1 / 1 / 2009) And (Format(Sheets(x).Cells(2, 3 * c + 8).Value, "dd/mm/yyyy") > 31 / 12 / 2007) Then
                        If (PrixMinHuit > Sheets(x).Cells(l, 3 * c + 7).Value) And (Sheets(x).Cells(l, 3 * c + 7).Value <> 0) Then
                            PrixMinHuit = Sheets(x).Cells(l, 3 * c + 7).Value
                        End If
                    ElseIf (Format(Sheets(x).Cells(2, 3 * c + 8).Value, "dd/mm/yyyy") < 1 / 1 / 2010) And (Format(Sheets(x).Cells(2, 3 * c + 8).Value, "dd/mm/yyyy") > 31 / 12 / 2008) Then
                        If (PrixMinNeuf > Sheets(x).Cells(l, 3 * c + 7).Value) And (Sheets(x).Cells(l, 3 * c + 7).Value <> 0) Then
                            PrixMinNeuf = Sheets(x).Cells(l, 3 * c + 7).Value
                        End If
                    ElseIf Format(Sheets(x).Cells(2, 3 * c + 8).Value, "dd/mm/yyyy") > 31 / 12 / 2009 Then
                        If (PrixMinDix > Sheets(x).Cells(l, 3 * c + 7).Value) And (Sheets(x).Cells(l, 3 * c + 7).Value <> 0) Then
                            PrixMinDix = Sheets(x).Cells(l, 3 * c + 7).Value
                        End If
                    End If
                End If
            Next c
    'Rentre les prix Min dans les colonnes d'année correspondante
            Sheets(x).Cells(l, 5).Value = PrixMinSept
            Sheets(x).Cells(l, 6).Value = PrixMinHuit
            Sheets(x).Cells(l, 7).Value = PrixMinNeuf
            Sheets(x).Cells(l, 8).Value = PrixMinDix
    ' Remplace les cases ayant la valeur 10000 par ""
            For c = 5 To 8
                If Sheets(x).Cells(l, c).Value = 10000 Then
                    Sheets(x).Cells(l, c).Value = ""
                End If
            Next c
        Next l
    Next x
    End Sub

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2006
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 288
    Par défaut
    Bonjour,
    je n'ai pas le temps d'étudier ton code, mais déjà il faudrait mettre les dates entre guillemets et comme ceci "01/01/2008" et non 1 / 1 / 2008.
    Je ne sais pas si c'est suffisant pour que ta macro fonctionne comme tu veux, mais en tout cas c'est nécessaire

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2009
    Messages : 104
    Par défaut
    Bonjour Bubale

    Je fais ue comparaison de d'âge selon les années.

    Alors peut-être que ecs fonctions pourront t'aider.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    DateNaissance = Worksheets("sheet1").Cells(Row, 9)
    AGE = Year(Now) - Year(DateNaissance)
    Dans DateNaissance j'ai une date au complet, mais Year extrait seulement l'année.

    Pour la variable Now, tu peux la remplacer par ta date de comparaison.

    Salutations

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 27
    Par défaut
    Bonjour,

    Je te conseille de mettre les dates au format "yyyy/mm/dd".
    Pour comparer les dates, tu peux utiliser DateValue("yyyy/mm/dd").

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

Discussions similaires

  1. comparaison de dates javascript
    Par SpaceFrog dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 12/07/2005, 08h45
  2. comparaison de dates
    Par pmithrandir dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 02/06/2005, 16h12
  3. comparaison de date
    Par nickoshiba dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 15/03/2005, 15h48
  4. Comparaison de dates
    Par Tapioca dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 16/06/2004, 15h55
  5. Problème de comparaison de dates
    Par MiJack dans le forum Langage SQL
    Réponses: 2
    Dernier message: 12/03/2004, 21h43

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