Inverser l'ordre des valeurs sur l'axe des abscisses
J'ai problème sur des graphiques dont des valeurs de dates sont affichées en abscisses,
Certains de ces graphiques affichent ces valeurs en sens inverse, c'est à dire que la data la plus récente est en première et la plus ancienne en dernière,
Pourtant les plages de données utilisées pour les graphiques sont du même type, alors pourquoi certains afficheraient les données dans le bon sens et pas d'autre ?
J'ai essayé de cliquer droit sur l'axe des abscisses > mise en forme de l'axe et de sélectionner "abscisse en ordre inverse":
Cela n'a pas donné le résultat souhaité,
Merci d'avance pour votre aide,
Bonjour,
n'aurais-tu pas utilisé 2 types de graphique différents(courbes et nuage de points ?) en lieu et place de nuage de points pour tes 2 graphiques ?
Bonjour,
eh bien tu as un conflit de type de données pour l'abscisse entre 2 types de graphique combinés. (l'un est considéré comme une série de valeurs sans relation entre elles (ordre selon les données du tableau) et l'autre comme étant une série continue (ordre croissant ou décroissant des valeurs))
Erreur de ma part ce sont tous des courbes avec marques :
En faisant quelque test j'ai pu me rendre compte qu'à chaque ouverture de fichier le problème était résolu,
Le problème apparaît uniquement lorsque j'appuie sur ce bouton :
Qui lance cette macro :
La macro Actualiser fait appel à des macros de traitement de données spécifiques à chaque graphique qui vont copier les données de la feuille source "Données brutes" ,
Par exemple la macro de SSA1 va copier les données de la colonne date et celles de la colonne SSA1 de la feuille "Données brutes" et les coller dans la feuille SSA1 et les traiter sur cette même feuille, le graphique SSA1 affiche ensuite les dernières données traitées de la feuille SSA1 à l'aide plages de données,
Chaque macro de traitement de données correspond à une feuille et à un graphique de la feuille "Suivi journalier air", toutes ces macros sont appelées dans la macro Actualiser,
La macro Actualiser_Suivi_journalier_air lié au bouton lance cette macro Actualiser qui vient actualiser toutes les données des graphiques et lance ensuite une ligne de code permettant de retourner sur la feuille "Suivi journalier air" , c'est cette dernier ligne de code qui pose problème, car quand on l'enlève il n'y a plus le problème mais on atterri sur une autre feuille ce qui n'est pas souhaitable.
Et ce problème ne touche que les graphiques SSA1 et SSA2, pourtant les plages de données et les macros liées à chaque graphique sont construites de la même manière.
ça me paraît complètement incompréhensible,
Je vous laisse le fichier en PJ pour mieux comprendre,
Le code de la macro Actualiser :
Sub Actualiser()
'
' Macro permettant de lancer toutes les macros de traitements de données et...
' ... ainsi mettre à jour les données dans les graphiques et tableaux utilisant celles-ci
'
'
SSA1m
SSA2m
SSA3m
SSA4m
PG1m
PG2m
PRm
PSm
RVm
End Sub
Le code de SSA1m pour exemple (les autres sont construites pareil) :
Sub SSA1m()
'
' SSA1 Macro
'
'
With Sheets("SSA1").Activate
'on reinitialise la feuille
reinit
'on copie la colonne du tableau de données brutes correspondant au poste concerné, ainsi que...
' ...la colonne de dates sur notre feuille de traitement de données de ce même poste
Worksheets("Données Brutes").Range("A:A,C:C").Copy Worksheets("SSA1").Range("A1")
'on supprime les lignes ne contenant pas de données
Range("B:B").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
'on utilise la fonction DeleteRowsByAdvancedFilter pour supprimer des lignes en fonction...
'...des formules qu'on lui envoie en paramètre, correspondant aux conditions qui nous intéressent
Dim rng As Range
Dim FormulaText As String
Dim FormulaTextA As String
Dim FormulaTextB As String
Dim FormulaTextC As String
FormulaText = "=AND(B1<B2)"
FormulaTextA = "=AND(B2<B3)"
FormulaTextB = "=AND(B2=0)"
FormulaTextC = "=AND(A2=A3)"
Set rng = Worksheets("SSA1").Range("A1").CurrentRegion
DeleteRowsByAdvancedFilter rng, FormulaText
DeleteRowsByAdvancedFilter rng, FormulaTextA
DeleteRowsByAdvancedFilter rng, FormulaTextB
DeleteRowsByAdvancedFilter rng, FormulaTextC
'on ajoute les headers pour se repérer directement sur la feuille entre toutes les données traitées
Range("C1") = nbHeuresHeader
Range("D1") = conso24hHeader
Range("E1") = debitHoraireBrutHeader
Range("F1") = debitHoraireHeader
Range("G1") = moisHeader
Range("H1") = anneeHeader
Range("A1:H1").Font.FontStyle = "Gras"
'on ajoute les formules permettant de traiter les données
Range("C2") = nbHeures
Range("D2") = conso24h
Range("E2") = debitHoraireBrut
Range("F2") = debitHoraire
Range("G2") = mois
Range("H2") = annee
'on utilise la fonction AutoFill pour appliquer les formules sur autant de lignes qu'il y a de données
Range("C2").AutoFill Destination:=Range("C2:C" & Cells(Rows.Count, "A").End(xlUp).Row), Type:=xlFillDefault
Range("D2").AutoFill Destination:=Range("D2:D" & Cells(Rows.Count, "A").End(xlUp).Row), Type:=xlFillDefault
Range("E2").AutoFill Destination:=Range("E2:E" & Cells(Rows.Count, "A").End(xlUp).Row), Type:=xlFillDefault
Range("F2").AutoFill Destination:=Range("F2:F" & Cells(Rows.Count, "A").End(xlUp).Row), Type:=xlFillDefault
Range("G2").AutoFill Destination:=Range("G2:G" & Cells(Rows.Count, "A").End(xlUp).Row), Type:=xlFillDefault
Range("H2").AutoFill Destination:=Range("H2:H" & Cells(Rows.Count, "A").End(xlUp).Row), Type:=xlFillDefault
'on modifie le format des données de la colonne C qui est du formate date/heure en heures
Range("C2:C" & Cells(Rows.Count, "A").End(xlUp).Row).NumberFormat = "[h]"
'On met à jour les plages de données utiliser dans les graphiques pour toujours avoir les 10...
'...dernières valeurs de chaque postes après actualisation des données
Names("DateSSA1").RefersToR1C1 = "=SSA1!R2C1:R11C1"
Names("DebitSSA1").RefersToR1C1 = "=SSA1!R2C5:R11C5"
End With
End Sub
bonsoir,
désolé je ne vois rien d'anormal de ce code.