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 :

condition dans univers restreint


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2009
    Messages : 28
    Par défaut condition dans univers restreint
    Bonjour,

    Je désire ecrire une condition avec restrictions. Cette condition me permettra d'obtenir la dernière date de chaque mois.

    Ma macro analyse les cellules de la colone 2 (cette cellule comporte la date)L'analyse est effectuée ligne après ligne en les comparant entre elles: la cellule de la ligne 3 avec la cellule de la ligne 2 puis la cellule de la ligne 4 avec la cellule de la ligne 3 puis la cellule de la ligne 5 avec la cellule de la ligne 4, ect

    Les informations traitées dans la date sont l'année et le mois uniquement.

    Je désire écrire la condition suivante:

    Si le mois de la ligne n+1 est supérieur au mois de la ligne n sachant que l'année est la même, alors copie et colle la ligne n dans la feuille2 et colore la ligne n dans la feuille1


    Voici le code que j'ai créé:


    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
    Sub nouveau()
     
    Dim Lig As Long, DerLig As Long
    Dim Y As Integer, YC As Integer
    Dim M As Byte, MC As Byte
    Dim i As Long
     
        DerLig = 2
        Sheets("Sheet2").Cells.ClearContents
        With Sheets("Sheet1")
            .Cells.Interior.ColorIndex = xlNone
     
            Y = Year(.Cells(2, 2))
            M = Month(.Cells(2, 2))
     
            For Lig = 2 To .Range("B65536").End(xlUp).Row
     
                YC = Year(.Cells(Lig, 2))
                MC = Month(.Cells(Lig, 2))
     
        If MC > M Or (MC = 1 And M = 12) And YC = Y Or (YC = 2000 And Y = 2009) Then
                    .Rows(Lig - 1).Copy Sheets("Sheet2").Rows(DerLig)
                    DerLig = DerLig + 1
                    .Rows(Lig - 1).Interior.ColorIndex = 3
                    Y = YC And M = MC
     
                End If
            Next Lig
        End With
    End Sub
    Mais c'est pas bon du tout et je n'arrive pas à comprendre ce qui ne vas pas et c'est pour cette raison que je sollicite votre aide pour interprêter le code et comprendre ou je dois le modifier...

    Merci,

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Bonsoir,
    je suivais la même discussion dans le post similaire
    Ma proposition (à tester)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Dim LastLig As Long, i As Long
     
    LastLig = Cells(Rows.Count, 1).End(xlUp).Row
    For i = 2 To LastLig - 1
        If Year(Range("A" & i + 1).Value) = Year(Range("A" & i).Value) Then
            If Month(Range("A" & i + 1).Value) > Month(Range("A" & i).Value) Then
                Rows(i).Interior.ColorIndex = 3
            End If
        Else
            Rows(i).Interior.ColorIndex = 3
        End If
    Next i
    Ou avec compactage:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim LastLig As Long, i As Long
     
    LastLig = Cells(Rows.Count, 1).End(xlUp).Row
    For i = 2 To LastLig - 1
        If (Year(Range("A" & i + 1).Value) = Year(Range("A" & i).Value) And Month(Range("A" & i + 1).Value) > Month(Range("A" & i).Value)) Or (Year(Range("A" & i + 1).Value) > Year(Range("A" & i).Value)) Then
            Rows(i).Interior.ColorIndex = 3
        End If
    Next i

  3. #3
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonjour, derouleu...
    1) Tu as eu tort de séparer ce test de l'autre (dont tu nous as parlé ailleurs)...... et c'est bien dommage !
    2) explique (pour voir) ce que j'ai mis en rouge et en bleu sur ces lignes de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    M = Month(.Cells(2, 2))
    .....
    .....
    If MC > M Or (MC = 1 And M = 12) And YC = Y Or (YC = 20000  And M = 2009)
    Si tu veux que l'on te prenne au sérieux, il va falloir que tu apprennes à commencer à l'être au moins un peu ...

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2009
    Messages : 28
    Par défaut
    Merci Mercato,

    C'est exactement ce que je cherchais à écrire

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 17/08/2005, 13h38
  2. Plusieur Condition dans REquette UPDATE
    Par ducseb dans le forum Langage SQL
    Réponses: 12
    Dernier message: 11/08/2005, 12h46
  3. [C#] Repeater - Condition dans la structure
    Par stailer dans le forum ASP.NET
    Réponses: 4
    Dernier message: 25/04/2005, 15h54
  4. Introduire une condition dans une requete
    Par DeezerD dans le forum Langage SQL
    Réponses: 9
    Dernier message: 12/10/2004, 19h13
  5. Condition dans une requête
    Par fdloisel dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 30/08/2004, 17h55

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