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 :

Copier des données selon une date


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Chargé d'affaire
    Inscrit en
    Août 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2012
    Messages : 14
    Par défaut Copier des données selon une date
    Bonjour,

    J'ai un tableau avec de multiples colonnes dont la colonne "E" qui est la date à laquelle la ligne a été remplie.
    Je veux que toutes les données de mon tableau qui ont été entrées dans le mois en cours se copient dans un autre onglet.

    Pour l'instant j'ai la formule suivante
    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
     
    Sub Mensuel()
     
    Sheets("GameTime").Select
     
        RowDate = 5
     
    For Row = 5 To 20
     
            If Range("E" & CStr(Row)).Value = Month(Now) Then
                Sheets("Mensuel").Activate
                Rows(RowDate).Value = Sheets("GameTime").Rows(CStr(Row) & ":" & CStr(Row)).Value
                RowDate = RowDate + 1
                Sheets("GameTime").Select
     
            ElseIf Range("E" & CStr(Row)).Value = "" Then
     
            End If
     
    Next
     
    End Sub
    Et pourtant rien de se passe.
    Le format de mes cellules en "E" est un format date.

    Merci de votre aide!!

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    1) Row étant un chiffre, et un numéro de ligne étant également un chiffre, pourquoi convertir ce chiffre en string à la ligne 10 ? Par ailleurs, il est maladroit d'utiliser un nom de variable qui est également une propriété existante (Range.Row par exemple)
    2) la colonne E contenant des dates, la fonction Month renvoyant un numéro de mois, cette comparaison en ligne 10 ne peut fonctionner en l'état

    Je me suis juste arrêté là ... car un simple filtre avancé te permettra d'exporter vers une autre feuille l'ensemble des résultats, en moins de 5 lignes de code, et sans boucle
    Il suffira de deux critères : >=Début du mois en cours ET <Début du mois prochain

  3. #3
    Membre averti
    Femme Profil pro
    Chargé d'affaire
    Inscrit en
    Août 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2012
    Messages : 14
    Par défaut
    L'histoire c'est que je vais avoir, dans la même macro, tous mes autres onglets qui vont également copier leurs données du mois dans l'onglet "Mensuel". J'ai en tout 10 différents onglets. C'est pourquoi je pensais fonctionner en macro. Je ne veux pas faire un filtre à tous mes onglets et tout copier/coller. Je veux peser sur un bouton et que ça se fasse tout seul...

    Je vous dirait que mon code est ainsi parce que j'ai le même qui sert à copier toutes les données de ces même 10 onglets qui se copient dans un autre onglet selon un autre critère et que ça fonctionne bien ainsi. Quelqu'un m'avait aidé avec ce code à l'époque, je n'ai donc pas poussé plus loin. Je me suis dit puisque je voulais le même fonctionnement, mais basé sur une valeur différente, que je n'avais qu'à modifier un peu le code...

    Je suis preneuse pour tout conseil pour l'améliorer.

    Merci!

  4. #4
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Ceci resterait parfaitement possible en utilisant une feuille tremplin qui recevrait, feuille par feuille, le résultat du filtre avancé et la copie du résultat dans ta feuille réelle de destination.
    Si en prime tu réalises une procédures qui se charge de ce travail, et que tu la munies d'un paramètre représentant une feuille, tu pourras ainsi industrialiser le processus.

    Si tu ne souhaites pas te former à l'outil puissant qu'est le filtre élaborés, il te restes bien entendu le filtre chronologique d'un filtre automatique
    En utilisant l'enregistreur de macro, tu auras le criteria et l'operator qui filtre sur le mois en cours

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Criteria1:=xlFilterThisMonth, Operator:=xlFilterDynamic
    il ne reste qu'à copier la plage filtrée (le Range("_FilterDataBase")) vers ta feuille de destination. Et de faire ceci dans une boucle qui parcours tes feuilles sources.

    Voici pour la logique et quelques conseils pour débuter. Nous attendons tes essais, maintenant, pour aller plus loin dans l'aide

  5. #5
    Membre expérimenté
    Homme Profil pro
    Pompier de service
    Inscrit en
    Février 2014
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Pompier de service

    Informations forums :
    Inscription : Février 2014
    Messages : 146
    Par défaut
    Si tu veux malgré tout faire fonctionner comme ça, il faut remplacer ta ligne 10, qui ne va actuellement rien faire (puisque tu compares une date à un mois, donc une valeur numérique entre 1 et 12...) par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    MaVal = Range("E" & Row)
                If IsDate(MaVal) Then
                     If Month(MaVal) = Month(Now) Then
                           .....
    En effet, si ta cellule est vide, Month() va renvoyer 12 (???? bizarre, non), et si c'est autre chose qu'une date, c'est l'erreur 13 assurée.

  6. #6
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    une cellule vide renvoi 12 car elle est évaluée avec une valeur à 0
    Or, le numéro de série 1 correspondant au 31/12/1899, et quand bien même le numéro de série 0 correspond à "minuit sans date", je pense que l'évaluation s'effectue sur "numéro de série 1 auquel on soustrait un jour"

  7. #7
    Membre averti
    Femme Profil pro
    Chargé d'affaire
    Inscrit en
    Août 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2012
    Messages : 14
    Par défaut
    Citation Envoyé par joe.levrai Voir le message
    Ceci resterait parfaitement possible en utilisant une feuille tremplin qui recevrait, feuille par feuille, le résultat du filtre avancé et la copie du résultat dans ta feuille réelle de destination.
    Si en prime tu réalises une procédures qui se charge de ce travail, et que tu la munies d'un paramètre représentant une feuille, tu pourras ainsi industrialiser le processus.

    Si tu ne souhaites pas te former à l'outil puissant qu'est le filtre élaborés, il te restes bien entendu le filtre chronologique d'un filtre automatique
    En utilisant l'enregistreur de macro, tu auras le criteria et l'operator qui filtre sur le mois en cours

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Criteria1:=xlFilterThisMonth, Operator:=xlFilterDynamic
    il ne reste qu'à copier la plage filtrée (le Range("_FilterDataBase")) vers ta feuille de destination. Et de faire ceci dans une boucle qui parcours tes feuilles sources.

    Voici pour la logique et quelques conseils pour débuter. Nous attendons tes essais, maintenant, pour aller plus loin dans l'aide
    Merci beaucoup!
    J'ai testé le filtre élaboré et ça fonctionne pour un onglet, mais je fais comment pour tous mes onglets avec la feuille tremplin? Le tutoriel que vous m'avez donné n'en parle pas... Et pour la procédure dont vous parlez...

    Je me suis donc tournée vers une macro qui fait comme le filtre (enregistrement de Macro), mais encore là, je fais comment pour que les données de mon deuxième onglet se copient en dessous de ceux de mon premier onglet et ainsi de suite? Parce que d'un mois à l'autre le nombre de ligne ne sera pas pareil...

    Un gros merci

Discussions similaires

  1. [XL-2007] Copier une base de données selon une date dans une colonne
    Par Tobalich dans le forum Excel
    Réponses: 12
    Dernier message: 12/07/2014, 18h16
  2. Extraire des données selon une date et n°identique
    Par Aurianelm dans le forum SAS Base
    Réponses: 4
    Dernier message: 23/09/2013, 16h28
  3. copier des données selon un filtre avec une macro
    Par lagaff93 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/08/2013, 12h47
  4. Réponses: 8
    Dernier message: 18/04/2012, 14h35
  5. Grouper des données selon une date
    Par gids01 dans le forum iReport
    Réponses: 2
    Dernier message: 30/07/2007, 16h03

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