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 VBA - Date en fonction de la valeur d'une cellule et "aujourd'hui" + copie première ligne vide [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2016
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2016
    Messages : 33
    Points : 21
    Points
    21
    Par défaut Problème VBA - Date en fonction de la valeur d'une cellule et "aujourd'hui" + copie première ligne vide
    Hello tout le monde,

    Je viens à vous car je suis clairement bloqué sur une macro que j'aimerai développer ! :s

    J'ai une extraction comptable dont j'aimerai copier des lignes filtrées vers une base de gestion.

    Mais j'ai beaucoup de mal avec un filtre : je souhaiterai filtrer la plage en se basant sur une date située dans une cellule (cette date est amenée à évoluer automatiquement) et la date d'aujourd'hui. Est-ce possible ?

    Par ailleurs, j'aimerai copier ces lignes à la suite d'autres lignes et ce de manière automatique (donc dans le code sans Range défini). M'étant basé sur des réponses apportés sur développez.net, je ne trouve pas de réponse à mon pro

    Voici mon code jusqu'à présent :

    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
        Windows("EDI_EXTRACT_CDG_DIVERSIFICATION.xls").Activate
        Application.CutCopyMode = False
        Selection.AutoFilter
        Windows("Base Call & IP 2016-macro.xlsm").Activate
        Sheets("Check").Range (A11)
        Selection.Copy
        Windows("EDI_EXTRACT_CDG_DIVERSIFICATION.xls").Activate
        ActiveSheet.Range("$A$1:$AB$5000").AutoFilter Field:=22, Criteria1:= _
            ">=15/09/2016", Operator:=xlAnd, Criteria2:="<=19/09/2016"
        ActiveSheet.Range("$A$1:$AB$5000").AutoFilter Field:=14, Criteria1:= _
            "=PJECST6", Operator:=xlOr, Criteria2:="=PJEINTP"
        Sheets("EDI-EXTRACT-CDG-DIVERSIFICATION").Range("$A$2:$AB$5000").SpecialCells(xlVisible).Copy
        Windows("Base Call & IP 2016-macro.xlsm").Activate
        Sheets("Base").Select
        Dim LngLastRow As Long
        LngLastRow = Range("A1").SpecialCells(xlCellTypeLastCell).Row + 1
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
    Milles merci à celles et ceux qui prendront le temps de m'aider.

    arochab

  2. #2
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 952
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 952
    Points : 5 180
    Points
    5 180
    Par défaut
    bonjour ,
    moi aussi comptable et débutant en VBA (grâce à ce super site)
    Tout d'abord ta requête n'est pas claire
    Pour moi j'ai un fichier mouvement ou j'enregistre les mouvements de dizaine de banques
    et si je veux éditer les mouvements de la banque X entre deux date je fais comme ça :
    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
    Option Explicit
    Sub GRAND_LIVRE()
    Dim plage As Range, cel As Range, plage1 As Range, plage2 As Range
    Dim valcherch As String, derlig As Long, derlig2 As Long
        Application.ScreenUpdating = False
        valcherch = Sheets("EDITION").Range("B5") ' ici pour moi c'est le nom de la banque
        'suppression ancoen données
        With Worksheets("EDITION")
            derlig = .Range("A" & Rows.Count).End(xlUp).Row
            Set plage1 = .Range("A12:A" & derlig)
        If .Range("A12") <> "" Then
        plage1.EntireRow.Delete
        End If
        End With
        'insertion nv données
        With Worksheets("Mouvement")
            derlig = .Range("A" & Rows.Count).End(xlUp).Row
            Set plage = .Range("A11:A" & derlig)
            derlig2 = .Range("B" & Rows.Count).End(xlUp).Row
            Set plage2 = .Range("B11:A" & derlig2)
        End With
        For Each cel In plage
            If cel = valcherch And Sheets("EDITION").Range("B6") <= cel(, 2) And cel(, 2) <= Sheets("EDITION").Range("B7") Then
                Worksheets("EDITION").Cells(Rows.Count, 1).End(xlUp)(2) = cel(, 2)
                Worksheets("EDITION").Cells(Rows.Count, 1).End(xlUp)(1, 2) = cel(, 5)
                Worksheets("EDITION").Cells(Rows.Count, 1).End(xlUp)(1, 3) = cel(, 7)
                Worksheets("EDITION").Cells(Rows.Count, 1).End(xlUp)(1, 4) = cel(, 8)
            End If
        Next cel
        Application.ScreenUpdating = True
    End Sub
    j'espere que tu peux inspirer de ce code qq chose
    bon courage .. et qui veut ... peut

  3. #3
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonjour,

    Une piste. Je suppose que les dates dans le classeur sont des dates valides formatées en "jj/mm/aaaa" donc pour filtrer, il faut transformer les dates en Long afin que le filtre fonctionne, ce que fait la fonction "CLng()". La fonction "CDate()" permet de convertir une date sous forme String en date valide :
    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
     
    Sub Test()
     
    '????? Je ne sais pas trop à quoi sert le code ci-dessous que j'ai mis en commentaire ?????
    '    Windows("EDI_EXTRACT_CDG_DIVERSIFICATION.xls").Activate
    '    Application.CutCopyMode = False
    '    Selection.AutoFilter
    '    Windows("Base Call & IP 2016-macro.xlsm").Activate
    '    Sheets("Check").Range (A11)
    '    Selection.Copy
     
        Dim Fe1 As Worksheet
        Dim Fe2 As Worksheet
        Dim DateDebut As Date
        Dim DateFin As Date
     
        DateDebut = CDate("15/09/2016") '<--changer par la cellule cible
        DateFin = Date '<--aujourd'hui
     
        Set Fe1 = ThisWorkbook.Sheets("Check")
     
        Set Fe2 = Workbooks("Classeur2.xls").Sheets("Base")
     
        Fe1.Range("$A$1:$AB$5000").AutoFilter 22, ">=" & CLng(DateDebut), xlAnd, "<=" & CLng(DateFin)
        Fe1.Range("$A$1:$AB$5000").AutoFilter 14, "=PJECST6", xlOr, "=PJEINTP"
     
        Fe1.AutoFilter.Range.EntireRow.Copy Fe2.Range("A" & Fe2.Range("A1").SpecialCells(11).Row)
     
    End Sub
    attention, dans mon code il y a une petite erreur, il faut remplacer "Classeur2.xls" par "Base Call & IP 2016-macro.xlsm" et la macro doit être mise dans le classeur où sont effectués les filtres

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 25/07/2013, 23h48
  2. lancer une macro en fonction de la valeur d'une cellule
    Par arkorrigan dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 11/06/2008, 18h18
  3. rechercher dans un tableau en fonction de la valeur d'une cellule
    Par jefe.k dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 08/06/2007, 11h04
  4. [VBA_Excel] Modifier un chemin en fonction de la valeur d'une cellule
    Par jefe.k dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 23/02/2007, 16h28
  5. [VBA-E] RechercheV si changement de valeur sur une cellule
    Par bonilla dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 18/01/2007, 17h22

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