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 :

Recherche avec operation sur date


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de mat-tech
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2006
    Messages : 202
    Par défaut Recherche avec operation sur date
    Bonjour à tous,

    J'aimerai effectuer une recher sur un plage de cellules qui contiennent des dates, et créer un graphique uniquement avec les données qui ont comme date 2005 par exemple, alors que dans les cellules la date est en format 12/02/2005.

    Il y a quelque temps, monsieur Fring m'avait donné cette procédure de recherche qui fonctionne très bien, mais je dois la modifier pour mon nouveau problème ... Mais je ne vois pas du tout comment extrère l'année contenue dans ces cellules

    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
     
    Private Sub CommandButton1_Click()
     
    Dim i As Integer, DateDeb As Date, DateFin As Date
    Dim Ligdeb As Integer, LigFin As Integer, Graph As Chart
     
    Application.ScreenUpdating = False
     
    DateDeb = Sheets("Feuil1").TextBox1
    DateFin = Sheets("Feuil1").TextBox2
     
    If DateDeb >= DateFin Then
    MsgBox "la date de fin doit être postérieure à la date de début"
    Exit Sub
    End If
     
    With Sheets("Feuil2")
        For i = 1 To .Cells(Rows.Count, 1).End(xlUp).Row
            If .Cells(i, 1) = DateDeb Then
                Ligdeb = i
                Exit For
            ElseIf .Cells(i, 1) > DateDeb Then
                Ligdeb = i
                Exit For
            End If
        Next
        For i = 1 To .Cells(Rows.Count, 1).End(xlUp).Row
            If .Cells(i, 1) = DateFin Then
                LigFin = i
                Exit For
            ElseIf .Cells(i, 1) > DateFin Then
                LigFin = i
                Exit For
            End If
        Next
    End With
     
    Set Graph = Charts.Add
    With Graph
        .ChartType = xlLine
        .SetSourceData Source:=Sheets("Feuil2").Range("A" & Ligdeb & ":C" & LigFin), PlotBy:=xlColumns
        .SeriesCollection(1).Name = "=""Conso"""
        .SeriesCollection(2).Name = "=""Temp"""
        .Location Where:=xlLocationAsNewSheet, Name:="Signature 1 courbe"
    End With
     
    Sheets("Feuil1").Activate
    Application.ScreenUpdating = True
     
    End Sub

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Pour ça, j'utiliserais Application.Union
    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
    Sub test()
    Dim serie1 As Range, Cell As Range
    'Pour utiliser Union, la première cellule de la série doit être précisée
    Set serie1 = Range("A1")
    With Worksheets("Feuil1")
        For Each Cell In .Range("A1:A" & .Range("A" & .Columns("A").Rows.Count).End(xlUp).Row)
            If IsDate(Cell) Then 'traite les cellules vides
                If Year(Cell) = 2005 Then
                   Set serie1 = Application.Union(serie1, Cell)
                End If
            End If
        Next
    End With
    MsgBox serie1.Address
    End Sub
    Edit
    J'ai oublié de te dire que tu peux aussi faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Set serie1 = Range("C1")
    With Worksheets("Feuil1")
        For Each Cell In .Range("A1:A" & .Range("A" & .Columns("A").Rows.Count).End(xlUp).Row)
            If IsDate(Cell) Then 'traite les cellules vides
                If Year(Cell) = 2005 Then
                   Set serie1 = Application.Union(serie1, Cell.Offset(0, 2))
                End If
            End If
        Next
    End With
    Ainsi tu fais ta recherche sur la colonne A et récupères ta plage colonne C

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 04/12/2008, 18h28
  2. opérations sur dates ?
    Par jessy212 dans le forum Access
    Réponses: 11
    Dernier message: 02/09/2006, 13h16
  3. [Access] requete sql avec condition sur date
    Par qeja dans le forum Langage SQL
    Réponses: 4
    Dernier message: 25/03/2006, 23h54
  4. requete avec tri sur date erronée
    Par olivll dans le forum Access
    Réponses: 11
    Dernier message: 20/10/2005, 15h45
  5. [Debutant(e)]operation sur dates
    Par sUrTr dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 11/10/2004, 15h58

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