bj51
XLDnaute Nouveau
Bonjour,
Je cherche à réaliser un graphique temporel représentant un niveau acoustique en fonction du temps. J'ai donc deux colonnes, l'une contenant les informations horaires, l'autre les niveaux acoustiques. Le graphique doit présenter les données en deux séries distinctes : le jour et la nuit. Deux cellules (B2 et D2) de la feuille servent à définir le début et la fin de la période nocturne (et donc de la période diurne). Une autre cellule de la feuille (H4) permet de savoir quelle est la taille de la plage de données (qui peut être variable).
J'ai créé une macro permettant de déplacer les données dans une nouvelle colonne, extraire les données en période de nuit et les déplacer dans la colonne adjacente, en utilisant la fonction .Find :
Le problème est que les cellules trouvées (c_soir et c_matin) ne sont pas celles attendues, et je ne vois pas d'où peut venir le problème. Une idée ?
Je cherche à réaliser un graphique temporel représentant un niveau acoustique en fonction du temps. J'ai donc deux colonnes, l'une contenant les informations horaires, l'autre les niveaux acoustiques. Le graphique doit présenter les données en deux séries distinctes : le jour et la nuit. Deux cellules (B2 et D2) de la feuille servent à définir le début et la fin de la période nocturne (et donc de la période diurne). Une autre cellule de la feuille (H4) permet de savoir quelle est la taille de la plage de données (qui peut être variable).
J'ai créé une macro permettant de déplacer les données dans une nouvelle colonne, extraire les données en période de nuit et les déplacer dans la colonne adjacente, en utilisant la fonction .Find :
Code:
Sub ajuster_periodes()
'Déclarations.
Dim donnees_temp As Range
Dim donnees_tot As Range
Dim donnees_tot_depl As Range
Dim donnees_nuit As Range
Dim donnees_nuit_depl As Range
Dim taille As Integer
Dim h_soir As Integer
Dim h_matin As Integer
Dim c_soir As Range
Dim c_matin As Range
'Affectations.
taille = ActiveSheet.Range("H4").Value - 1
Set donnees_temp = ActiveSheet.Range(Cells(12, 32), Cells(12 + taille, 32)) ' Données temporelles (heures seulement)
Set donnees_tot = ActiveSheet.Range(Cells(12, 31), Cells(12 + taille, 31)) ' Données de niveau (total)
Set donnees_tot_depl = ActiveSheet.Range(Cells(12, 33), Cells(12 + taille, 33)) ' Colonne où déplacer les données de niveau avant de séparer les périodes jour/nuit
h_soir = ActiveSheet.Range("D2").Value
h_matin = ActiveSheet.Range("B2").Value
With donnees_temp.Cells
Set c_soir = .Find(h_soir) ' Recherche de la cellule de départ de la période "nuit"
Set c_matin = .Find(h_matin, c_soir) ' Recherche de la cellule de fin de la période "nuit"
End With
Set donnees_nuit = ActiveSheet.Range(Cells(c_soir.Row, c_soir.Column + 1), Cells(c_matin.Row - 1, c_matin.Column + 1)) ' Définition de la période "nuit" dans la colonne "jour"
Set donnees_nuit_depl = ActiveSheet.Range(Cells(c_soir.Row, c_soir.Column + 2), Cells(c_matin.Row - 1, c_matin.Column + 2)) ' Définition de la période "nuit"
'Traitement.
ActiveSheet.Range(Cells(12, 33), Cells(10000, 34)).ClearContents ' Vidage des colonnes "jour" et "nuit"
donnees_tot_depl.Value = donnees_tot.Value ' Copie des données dans la colonne "jour"
donnees_nuit_depl.Value = donnees_nuit.Value ' Copie des données dans la colonne "nuit"
donnees_nuit.ClearContents ' Suppression des données "nuit" dans la colonne "jour"
End Sub
Le problème est que les cellules trouvées (c_soir et c_matin) ne sont pas celles attendues, et je ne vois pas d'où peut venir le problème. Une idée ?