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 d'extraction entre 2 dates


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 54
    Points : 43
    Points
    43
    Par défaut Problème d'extraction entre 2 dates
    Bonjour,
    J'ai trouvé ce code sur un forum, mais après modification l'extraction entre 2 dates ne fonctionne plus avez vous une idée du souci

    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
      Sub Extraction()
     
        ' Extraction entre deux dates
        ' Critères de dates     - Feuil1
        ' Base de données       - Feuil2
        ' Extraction            - Feuil3
     
        Sheets("Feuil3").Range("A1").CurrentRegion.Clear
     
          With Sheets("Feuil2")
            Application.CutCopyMode = False
     
           .Range("k2") = "=AND(a2>=Feuil1!A3,a2<=Feuil1!B3)"              'critères
            .Range("A1:g" & .Cells(Rows.Count, 7).End(xlUp).Row) _
            .AdvancedFilter Action:=xlFilterCopy, CriteriaRange:= _
            .Range("E1:E7"), CopyToRange:=Sheets("Feuil3").Range("a1:g1"), Unique:=False
            .Range("k2") = ""
            '.Rows(1).Delete
          End With
        End Sub
    Fichiers attachés Fichiers attachés

  2. #2
    Membre actif Avatar de vanhoa
    Homme Profil pro
    Analyste Financier
    Inscrit en
    Octobre 2013
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Analyste Financier
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2013
    Messages : 117
    Points : 253
    Points
    253
    Par défaut
    Bonjour,

    Tu souhaites faire quoi exactement?

    Car de mon cote, sans rentrer dans le detail de ton code, je n'ai pas d'erreur de code qui intervient.
    Tu as un message d'erreur?

    Qu'est ce qui ne marche pas?

    vanhoa
    vanhoa

    Je suis ici pour venir en aide (a mon niveau) comme on le fait aussi pour moi!
    Merci pour votre indulgence quant a mes reponses.
    N'oubliez pas, nous sommes remuneres en quand c'est merite!!

  3. #3
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 54
    Points : 43
    Points
    43
    Par défaut
    Bonjour,
    j'aimerai extraire les 7 colonnes de la feuil2 selon les dates de la feuil1 et avoir le résultat sur la feuil3

    Mon souci c'est que je n'ai pas le bon tri par rapport à ma date de sélection si je sélectionne la date du 29 avril 2014, il me donne les valeurs du 29 et d'autre qui non rien à voir

    (voir le fichier joint)

  4. #4
    Membre actif Avatar de vanhoa
    Homme Profil pro
    Analyste Financier
    Inscrit en
    Octobre 2013
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Analyste Financier
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2013
    Messages : 117
    Points : 253
    Points
    253
    Par défaut
    ok,

    voici un code qui marche et qui t'evite de rentrer tes formules en dur:

    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
    Option Explicit
     
    Sub Extraction()
    Dim nblignes As Long, i As Long, lignedest As Long, j As Byte
     
    Sheets("Feuil3").Range("A1").CurrentRegion.Clear
     
    With Sheets("Feuil2")
        nblignes = .Cells(1, 1).End(xlDown).Row
        lignedest = 1
        For i = 1 To nblignes
            If .Cells(i, 1) >= Sheets("Feuil1").Cells(3, 1) And .Cells(i, 1) <= Sheets("Feuil1").Cells(3, 2) Then
                For j = 1 To 7
                    Sheets("Feuil3").Cells(lignedest, j) = .Cells(i, j)
                Next j
                lignedest = lignedest + 1
            Else
            End If
        Next i
    End With
     
    End Sub
    copie d'abord le format de ta Feuil2 dans ta Feuil3

    dis moi si ca marche de ton cote

    vanhoa
    vanhoa

    Je suis ici pour venir en aide (a mon niveau) comme on le fait aussi pour moi!
    Merci pour votre indulgence quant a mes reponses.
    N'oubliez pas, nous sommes remuneres en quand c'est merite!!

  5. #5
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 54
    Points : 43
    Points
    43
    Par défaut
    Super ça fonctionne très bien
    mais mon souci maintenant comme je ne comprends pas tout au vba, serait d'extraire de l'onglet "mouvement" a partir de la cellule b7, la même chose et mettre le résultat en feuil3

    j'ai essayé, mais je n'y arrive pas

    j'espère ne pas trop abuser de ta générosité

    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
    Sub Extraction1()
    Dim nblignes As Long, i As Long, lignedest As Long, j As Byte
     
    Sheets("feuil3").Range("A1").CurrentRegion.Clear
     
    With Sheets("mouvements")
        nblignes = .Cells(1, 1).End(xlDown).Row
        lignedest = 1
        For i = 1 To nblignes
            If .Cells(i, 1) >= Sheets("Feuil1").Cells(3, 1) And .Cells(i, 1) <= Sheets("Feuil1").Cells(3, 2) Then
                For j = 1 To 7
                    Sheets("feuil3").Cells(lignedest, j) = .Cells(i, j)
                Next j
                lignedest = lignedest + 1
            Else
            End If
        Next i
    End With
     
    End Sub
    j'ai mis le fichier en pièce jointe
    Fichiers attachés Fichiers attachés

  6. #6
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut

    Bonjour, bonjour,

    à mon avis l'idéal serait d'utiliser un filtre (exemple ici) ou encore un filtre avancé
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  7. #7
    Membre actif Avatar de vanhoa
    Homme Profil pro
    Analyste Financier
    Inscrit en
    Octobre 2013
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Analyste Financier
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2013
    Messages : 117
    Points : 253
    Points
    253
    Par défaut
    Voila le code qu'il te faut dans ce cas:

    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
    Sub Extraction1()
    Dim nblignes As Long, i As Long, lignedest As Long, j As Byte
     
    Sheets("feuil3").Range("A1").CurrentRegion.Clear
     
    With Sheets("mouvements")
        nblignes = .Cells(6, 2).End(xlDown).Row
        lignedest = 1
        For i = 6 To nblignes
            If .Cells(i, 2) >= Sheets("Feuil1").Cells(3, 1) And .Cells(i, 2) <= Sheets("Feuil1").Cells(3, 2) Then
                For j = 2 To 8
                    Sheets("feuil3").Cells(lignedest, j - 1) = .Cells(i, j)
                Next j
                lignedest = lignedest + 1
            Else
            End If
        Next i
    End With
     
    End Sub
    comme ton onglet "mouvements" est different, tu dois adapter les lignes et colonnes.
    J'ai teste le code, il fonctionne.
    vanhoa

    Je suis ici pour venir en aide (a mon niveau) comme on le fait aussi pour moi!
    Merci pour votre indulgence quant a mes reponses.
    N'oubliez pas, nous sommes remuneres en quand c'est merite!!

  8. #8
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 54
    Points : 43
    Points
    43
    Par défaut Merci
    super un grand merci !!!
    ça fonctionne nickel !!
    c'est exactement ce que je voulais

    bonne journée

  9. #9
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par anelinette Voir le message
    ne fonctionne plus
    C'est un peu limité comme description de problème...
    Est-ce que ça a fonctionné "avant modification" ?
    Qu'est-ce que ça devait faire ?
    Quelles modifications ont été apportées ?
    Qu'est que ça ne fait plus ?

    Avec le plus de précisions possibles.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

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

Discussions similaires

  1. [Débutant] Problème d'extraction de la date sur un FTP
    Par Jah73 dans le forum VB.NET
    Réponses: 5
    Dernier message: 12/02/2014, 16h10
  2. problème de jour entre deux Dates sous delphi
    Par wiski08000 dans le forum Débuter
    Réponses: 5
    Dernier message: 16/11/2013, 19h08
  3. [XL-2007] Extraction entre 2 dates avec regroupement et somme
    Par Daniel-Gérald dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 27/02/2011, 11h42
  4. Problème de calcul entre 2 dates
    Par Emeline1989 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 16/04/2010, 09h30
  5. Problème sur calcul entre 2 dates
    Par kcizth dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 08/10/2008, 19h17

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