Remplir un tableau en fonction d'un croisement de données

niiiiiiiiiico

XLDnaute Occasionnel
Bonjour à tous,

J'ai un tableau où je saisis onglet par onglet des valeurs.

Dans ces onglets (janvier février, etc.) il y a 3 colonnes qui m'intéressent

Date dernier evt Rx Heure dernier evt Rx P/V


Si j'ai Oui dans P/V, alors je veux que les horaires s'incrémentent dans le tableau 'stats 2' en fonction des jours, sachant que je peux avoir des valeurs janvier dans l'onglet février, mars, etc. et du coup, je veux récupérer les horaires associés à chaque fois

Avec la P/J ça devrait être plus compréhensible. Dans celui-ci, les valeurs de l'onglet stats 2 (qui correspond à janvier) ont été rentrées manuellement.

J'aurais par la suite un onglet stats 3 pour février, etc.

En vous remerciant par avance !
 

Pièces jointes

  • outil pv.zip
    9 KB · Affichages: 49

cbea

XLDnaute Impliqué
Re : Remplir un tableau en fonction d'un croisement de données

Bonsoir niiiiiiiiiico,

Voici une solution.
J'ai rajouté un bouton sur la feuille Stat 2 pour récupérer les données dans les feuilles mensuelles.
 

Pièces jointes

  • outil pv_v1.zip
    21.8 KB · Affichages: 53

niiiiiiiiiico

XLDnaute Occasionnel
Re : Remplir un tableau en fonction d'un croisement de données

Bonsoir Cbea et merci pour cette réponse et ce travail !!!

J'ai pas mal de questions sur la macro


Comment ces lignes permettent de savoir que tel onglet est une feuille mensuelle ?

Public Sub RecupererData(wsFeuil As Worksheet, nMois As Integer, nAnnee As Integer)
' Récupérer les données dans toutes les feuilles mensuelles
Dim wsFMois As Worksheet
Dim derLig As Long
Dim Lig As Long

Dans mon fichier, je vais avoir 20 mois : Décembre (A-1), de janvier à décembre et de janvier à juillet (A+1)

Il s'agira d'aller chercher dans le mois en cours, le mois d'avant et les 7 prochains mois (d'où le besoin d'avoir 20 mois). Mais comment faire ?

Cette ligne me permet de rajouter des lignes à mon tableau (la seule chose à respecter est que la première ligne soit en position 8) ?

' Boucle de la première ligne de données à la dernière
For Lig = 8 To derLig

Est-il possible d'affecter la macro a un rectangle ? Si oui, comment ?

Pour que cette macro fonctionne sur les stats des autres mois, quelle manip dois je faire ?

Cette ligne permet à la macro de fonctionner qq soit le nombre de jour dans le mois, c'est bien ça ?

' Boucle de la ligne 29 à la dernière ligne dans le tableau de stat
For Lig = 29 To derLig

Désolé de mes questions simplettes, mais je n'ai aucune connaissance en VBA.

Une nouvelle fois merci !!
 

cbea

XLDnaute Impliqué
Re : Remplir un tableau en fonction d'un croisement de données

Bonsoir

1/ Lignes déterminant une feuille mensuelle :
Code:
Public Sub RecupererData(wsFeuil As Worksheet, nMois As Integer, nAnnee As Integer)
    ' Récupérer les données dans toutes les feuilles mensuelles
    Dim wsFMois As Worksheet
    Dim derLig As Long
    Dim Lig As Long
    
    ' Boucle sur toutes les feuilles du classeur
    For Each wsFMois In ThisWorkbook.Worksheets
        ' Test sur le nom de la feuille correspond à un mois
        If [COLOR="Red"]IsDate("01/" & wsFMois.Name & "/" & nAnnee) [/COLOR]Then


2/
Dans mon fichier, je vais avoir 20 mois : Décembre (A-1), de janvier à décembre et de janvier à juillet (A+1)

Il s'agira d'aller chercher dans le mois en cours, le mois d'avant et les 7 prochains mois (d'où le besoin d'avoir 20 mois). Mais comment faire ?
Il faut que dans le nom de tes feuilles, il y ait le mois et l'année et adapter la procédure pour effectuer la récupération des données.

3/
Cette ligne me permet de rajouter des lignes à mon tableau (la seule chose à respecter est que la première ligne soit en position 8) ?
Oui, c'est cela.

4/
Est-il possible d'affecter la macro a un rectangle ? Si oui, comment ?
Voir la modification dans le fichier

5/
Pour que cette macro fonctionne sur les stats des autres mois, quelle manip dois je faire ?
Il faut dupliquer la feuille Stats2 et aucune modification ou d'ajout de procédure VBA.

6/
Cette ligne permet à la macro de fonctionner qq soit le nombre de jour dans le mois, c'est bien ça ?
C'est exact.
 

Pièces jointes

  • outil pv_v2.zip
    20 KB · Affichages: 35

niiiiiiiiiico

XLDnaute Occasionnel
Re : Remplir un tableau en fonction d'un croisement de données

Bonjour,

Comment renommer le nom de mes feuilles ? Et comment dire que l'info à récupérer est dans le précédent mois, le mois en cours et les 7 suivants ?


Mes feuilles de stats étant déjà faites, si je copie ce code :

Option Explicit

Private Sub cmdRecuperer_Click()
Dim nMois As Integer, nAnnee As Integer
Dim wsFeuil As Worksheet

' Mois et Année à traiter
nMois = Month(Range("C29").Value)
nAnnee = Year(Range("C29").Value)
' Feuille dans laquelle les données sont affichées
Set wsFeuil = ActiveSheet

' Effacer le contenu de la feuille Stat
Range("D29:M" & Cells.Rows.Count).ClearContents

' Récupérer les données dans toutes les feuilles mensuelles
Call RecupererData(wsFeuil, nMois, nAnnee)
End Sub

dans la partie vba de chacune de mes feuilles stats, ça irait ?

Encore merci !
 

cbea

XLDnaute Impliqué
Re : Remplir un tableau en fonction d'un croisement de données

Bonsoir niiiiiiiiiico,

Dans le fichier joint, tu trouveras la manière de renommer les feuilles (ex : Décembre 2007, Janvier 2008...). Attention à bien écrire le nom des mois avec les accents : Février, Août, Décembre.

J'ai modifié le code en mettant en place la règle de gestion : traitement des feuilles de M-1 à M+7.
Les modifications dans le code sont notées comme ceci : "- Modif ici -".
 

Pièces jointes

  • outil pv_v3.zip
    25.1 KB · Affichages: 39

niiiiiiiiiico

XLDnaute Occasionnel
Re : Remplir un tableau en fonction d'un croisement de données

Bonjour cbea et une nouvelle fois merci pour ta patience !

A l'origine, mes onglets s'appelaient :

Décembre (A-1) ; Janvier ; Février ; ... ; Décembre ; Janvier (A+1) ; ... ; Juillet (A+1)

J'avais fais ceci pour ne pas avoir à modifier le nom de mes onglet, mes liens hypertexte et mes formules qui vont piocher dans d'autres onglets lorsque le fichier sera utilisé l'année prochaine. Il y a moyen de contourner le problème ?

Sur mon fichier actuel, j'ai fais insérer module, j'ai copié tout ton texte, est-ce suffisant ?

Dans tes autres feuilles, tu as "Option Explicit", dois-je le mettre également ?

Encore merci !
 

cbea

XLDnaute Impliqué
Re : Remplir un tableau en fonction d'un croisement de données

Bonjour niiiiiiiiiico,

Voici un nouveau code en ayant des feuilles nommées : Décembre (A-1), Janvier, ...., Décembre, Janvier (A+1), ...., Juillet (A+1)

Sur mon fichier actuel, j'ai fais insérer module, j'ai copié tout ton texte, est-ce suffisant ?
Oui


Dans tes autres feuilles, tu as "Option Explicit", dois-je le mettre également ?
Non
 

Pièces jointes

  • outil pv_v4.zip
    25.7 KB · Affichages: 43

Discussions similaires

Statistiques des forums

Discussions
312 113
Messages
2 085 430
Membres
102 889
dernier inscrit
monsef JABBOUR