Renvoi de valeurs sous condition (fonction de la date)

Flo300

XLDnaute Nouveau
Bonjour à tous,

Je me retrouve face à un problème et espère trouver la solution.
Vous trouverez en pièce jointe un exemple de fichier.

Voici mon problème:
Dans l'onglet "Données" j'ai un tableau comportant en colonne 1 la date, en colonne 2 l'heure, et en colonne 3, un flux.
Je voudrais (entres autres) faire une analyse par mois des flux et donc dans un deuxième onglet avoir les données du mois de janvier, dans le troisième onglet, les données du mois de février, ...

Il s'agit ici d'un fichier simpliste, mes données seront beaucoup plus complexes (et liées avec d'autres fichiers) et il est important que je trouve une solution pour qu'automatiquement mes données mensuelles apparaissent sur des onglet différents.
J'ai bien pensé à la condition (si janvier, afficher les valeurs) mais je veux que les données apparaissent à partir de la 2ème ligne...

Je pense que ça doit être possible de faire un boucle qui recherche le mois correspondant et affiche l'ensemble des données de ce mois dans un autre onglet, mais n'ayant jamais utilisé VBA, je ne vois pas du tout comment c'est possible.

Pouvez-vous m'éclairer?
Merci.
 

Pièces jointes

  • Test.xls
    47.5 KB · Affichages: 82
  • Test.xls
    47.5 KB · Affichages: 88
  • Test.xls
    47.5 KB · Affichages: 83

Robert

XLDnaute Barbatruc
Repose en paix
Re : Renvoi de valeurs sous condition (fonction de la date)

Bonjour Flo, bonjour le forum,

En pièce jointe ton fichier modifié avec un bouton Envoi et son code ci-dessous. Cette macro ne fonctionne que si tu gardes les onglets dans cet ordre car elle ne tient pas compte du nom de l'onglet mais de sa position... :
Code:
Private Sub CommandButton1_Click() 'bouton "Envoi"
Dim cel As Range 'déclare la variable cel (CELlule)
Dim m As Byte 'déclare la variable m (Mois)
Dim dest As Range 'déclare la variable dest (DESTination)
 
'boucle sur toutes les cellules éditées cel de la colonne A
For Each cel In Sheets("Données").Range("A2:A" & Sheets("Données").Range("A65536").End(xlUp).Row)
    m = Month(cel.Value) 'définit le mois m
    Set dest = Sheets(m + 1).Range("A65536").End(xlUp).Offset(1, 0) 'définit la destination
    cel.EntireRow.Copy dest 'copie la ligne et la colle dans la destination
Next cel 'prochaine cellule cel de la boucle
End Sub

Peut être faut-il effacer les anciennes données avant ? Car si tu cliques sur Envoi plusieurs fois, toutes les données sont doublées, triplées, etc...
 

Pièces jointes

  • Flo_v01.xls
    92 KB · Affichages: 79
  • Flo_v01.xls
    92 KB · Affichages: 83
  • Flo_v01.xls
    92 KB · Affichages: 79
Dernière édition:

Flo300

XLDnaute Nouveau
Re : Renvoi de valeurs sous condition (fonction de la date)

C'est super.
Est-il possible de réaliser la même opération mais d'avoir les données dans un fichier et de renvoyer (de la même manière) les données par mois dans un deuxième fichier?
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Renvoi de valeurs sous condition (fonction de la date)

Bonjour Flo, bonjour le forum,

Flo voici une version 2 mais là aussi il y a des contraintes. Ils faut que tous les fichiers soient dans le même dossier que celui-ci et qu'ils portent les noms suivants :"1_2010.xlx", "2_2010.xls", ... "12_2010.xls". Ou alors tu adaptes le code... Pour fonctionner, les fichiers doivent êtres ouverts mais la macro les ouvrira si ils ne le sont pas.
 

Pièces jointes

  • Flo_v02.xls
    62 KB · Affichages: 73
  • Flo_v02.xls
    62 KB · Affichages: 72
  • Flo_v02.xls
    62 KB · Affichages: 77

Flo300

XLDnaute Nouveau
Re : Renvoi de valeurs sous condition (fonction de la date)

Je vois déjà un peu plus clair avec les codes VBA!
Ce que je voulais obtenir c'est uniquement 2 fichiers le premier avec les données et le deuxième avec les mois (un onglet par mois).
Mais finalement, ce n'est pas lus mal d'avoir un fichier par mois.

Un grand merci Robert! :D
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Renvoi de valeurs sous condition (fonction de la date)

Bonjour Flo, bonjour le forum,

Voilà...
 

Pièces jointes

  • Flo_v03.xls
    61 KB · Affichages: 116
  • Cible.xls
    37.5 KB · Affichages: 94
  • Cible.xls
    37.5 KB · Affichages: 94
  • Cible.xls
    37.5 KB · Affichages: 96

Flo300

XLDnaute Nouveau
Re : Renvoi de valeurs sous condition (fonction de la date)

Bonjour à tous,

Encore un petite question :
Pour mes données de 2010 (allant de janvier à août) cela fonctionne parfaitement.
Par contre, lorsque je fais la même manipulation avec mes données de 2009, ça bug.
J'obtiens l'erreur d'exécution 13 sur m = Month(cel.value)

Il faut savoir que ma série de données pour 2009 démarre en juin. Est-ce lié?

Merci.
 

Statistiques des forums

Discussions
314 450
Messages
2 109 726
Membres
110 552
dernier inscrit
jasson