Graphe moqueur!!

Résolu/Fermé
alinea0504 Messages postés 4 Date d'inscription mardi 2 février 2021 Statut Membre Dernière intervention 14 février 2021 - 2 févr. 2021 à 10:25
yg_be Messages postés 22717 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 22 avril 2024 - 2 févr. 2021 à 18:47
Bonjour,

J'ai ecrit du code pour via un userform :
- entree des donnees et les stocker dans plusieurs feuilles suivant le choix fait dans une combobox
- visualiser des cartes de controles pour chaque feuille

je ne comprends pas pourquoi , mon code qui semble fonctionner , fait apparaitre dans les premieres feuilles du classeur des graphes correspondants à mon paramétrage , et puis sur les derniéres , c'est le "b.....l" .. ( changement de séries visibles , etc..)

si quelqu'un veut bien me donner des conseils et m'aider à résoudre ce pb..
Bonne journée à vous et merci par avance de votre temps accordé.


Option Explicit
Dim valeur As Byte
Dim dat As Date
Dim i As Integer, j As Integer
Public Fichier As Workbook

Dim bassinchoix As String
Dim PHGraph As Chart
Dim CHGraph As Chart
Dim rPlageAcceuil As Range
Dim rPlageSource As Range
Option Compare Text
Private Sub UserForm_Initialize() ''ok

'Variable pour un Objet Worksheet en PUBLIC pour tous les Controls de cet UserForm'à l'initialisation de l'userform
Set Fichier = ThisWorkbook
' TEST VENDREDI
' Affecter une valeur à une variable (= fixer la valeur de la variable)
'Attention ce nom doit correspondre au nom de votre ONGLET
Me.ComboBox1.Clear

For i = 1 To Sheets.Count - 2
'on exclue les feuilles ENTREE et LIMITES dans laquelle le userform general fonctionne
Me.ComboBox1.AddItem Sheets(i).Name
Next
i = 0

End Sub
Private Sub USerForm_Activate() ''OK
Application.ScreenUpdating = False
' POUR POSITIONNEMENT PLEINE PAGE USERFORM
With Me
.StartUpPosition = 3
.Width = Application.Width
.Height = Application.Height
.Left = 0
.Top = 0
End With
Me.TextBox6.Value = Format(Date, "dd/mm/yyyy")
Application.ScreenUpdating = True
End Sub
Private Sub CommandButton8_Click() ''OK
' pour fermer le formulaire et le sauvegarder
Unload Me 'Unload => Permet de fermer l'Userform et de l'effacer de la mémoire,
'les valeurs de ses contrôles sont à alors perdues.
' Me => Référence à l'objet en cours
Application.Quit
End Sub
Private Sub CommandButton10_Click() ''ok
Application.ScreenUpdating = False

'Entrées des données
bassinchoix = ComboBox1.Value

Worksheets(bassinchoix).Select
i = ActiveSheet.Range("A65536").End(xlUp).Row
j = i + 1

Cells(j, 2) = Format(Date, "dd/mm/yyyy")
Cells(j, 3) = Me.TextBox2.Text
Cells(j, 4) = Me.TextBox5.Text
'ENTREE LIMITES CONTROLES
'PH
Cells(j, 5) = Worksheets("LIMITES").Range("A4") 'bas
Cells(j, 6) = Worksheets("LIMITES").Range("B4") 'target
Cells(j, 7) = Worksheets("LIMITES").Range("C4") 'Haut
'CHLORE
Cells(j, 8) = Worksheets("LIMITES").Range("E4") 'bas
Cells(j, 9) = Worksheets("LIMITES").Range("F4") 'target
Cells(j, 10) = Worksheets("LIMITES").Range("G4") 'Haut
'CHLORE ABSSIN EXT

If bassinchoix = "BASSIN_EXTERIEUR" Then
Cells(j, 8) = Worksheets("LIMITES").Range("I4") 'bas
Cells(j, 9) = Worksheets("LIMITES").Range("J4") 'target
Cells(j, 10) = Worksheets("LIMITES").Range("K4") 'Haut
End If



'boutons radios Matin-Amidi
If OptionButton1.Value = True Then Cells(j, 1) = "M" 'BOUTON RADIO POUR UNE SELECTION UNIQUE SUR LES DEUX
If OptionButton2.Value = True Then Cells(j, 1) = "A"

Fichier.Save
Me.TextBox2.Text = ""
Me.TextBox5.Text = ""

'GRAPHES
'GRAPHE_PH

With Sheets(bassinchoix)
' Plage devant accueuillir le graphique
Set rPlageAcceuil = .Range("K1:T16").Offset(0, 1)
' Création du graphique, ne pas oublier le .Chart final
' L'objet graphique se place sur la plage et à sa taille
Set PHGraph = .ChartObjects.Add(rPlageAcceuil.Left, rPlageAcceuil.Top, rPlageAcceuil.Width, rPlageAcceuil.Height).Chart
' Source du graphique
Set rPlageSource = .Range("A:J")
End With

With PHGraph
' Type barre empilée
.ChartType = xlLine
' Source du graphique
.SetSourceData Source:=rPlageSource, PlotBy:=xlColumns
' Affichage du titre
.HasTitle = False
' Intitulé
'.ChartTitle.Characters.Text = rPlageSource.Cells(1, 1)
' Légende en position haute
.Legend.Position = xlLegendPositionTop
.FullSeriesCollection(1).IsFiltered = False
.FullSeriesCollection(3).IsFiltered = False
.FullSeriesCollection(3).Format.Line.DashStyle = msoLineSysDot
.FullSeriesCollection(3).Format.Line.ForeColor.RGB = RGB(255, 0, 0)
.FullSeriesCollection(4).IsFiltered = False
.FullSeriesCollection(4).Format.Line.DashStyle = msoLineSysDot
.FullSeriesCollection(4).Format.Line.ForeColor.RGB = RGB(146, 208, 80)
.FullSeriesCollection(5).IsFiltered = False
.FullSeriesCollection(5).Format.Line.DashStyle = msoLineSysDot
.FullSeriesCollection(5).Format.Line.ForeColor.RGB = RGB(255, 0, 0)

.FullSeriesCollection(8).IsFiltered = True
.FullSeriesCollection(7).IsFiltered = True
.FullSeriesCollection(6).IsFiltered = True
.FullSeriesCollection(2).IsFiltered = True

End With

'Worksheets(bassinchoix).ChartObjects(1).Chart.Export ThisWorkbook.Path & "\graphique.gif"


' SAUVEGARDE DU GRAPHIQUE PH BASSIN CHOISI ET AFFICHAGE DANS FRAME 09 PH
PHGraph.Export ThisWorkbook.Path & "\graphique.gif"
Me.Frame9.Picture = LoadPicture(ThisWorkbook.Path & "\graphique.gif")

'GRAPHE_CHLORE

With Sheets(bassinchoix)
' Plage devant accueuillir le graphique
Set rPlageAcceuil = .Range("K17:T32").Offset(0, 1)
' Création du graphique, ne pas oublier le .Chart final
' L'objet graphique se place sur la plage et à sa taille
Set CHGraph = .ChartObjects.Add(rPlageAcceuil.Left, rPlageAcceuil.Top, rPlageAcceuil.Width, rPlageAcceuil.Height).Chart
' Source du graphique
Set rPlageSource = .Range("A:J")
End With

With CHGraph
' Type barre empilée
.ChartType = xlLine
' Source du graphique
.SetSourceData Source:=rPlageSource, PlotBy:=xlColumns
' Affichage du titre
.HasTitle = False
' Intitulé
'.ChartTitle.Characters.Text = rPlageSource.Cells(1, 1)
' Légende en position haute
.Legend.Position = xlLegendPositionTop
.FullSeriesCollection(2).IsFiltered = False
.FullSeriesCollection(6).IsFiltered = False
.FullSeriesCollection(6).Format.Line.DashStyle = msoLineSysDot
.FullSeriesCollection(6).Format.Line.ForeColor.RGB = RGB(255, 0, 0)
.FullSeriesCollection(7).IsFiltered = False
.FullSeriesCollection(7).Format.Line.DashStyle = msoLineSysDot
.FullSeriesCollection(7).Format.Line.ForeColor.RGB = RGB(146, 208, 80)
.FullSeriesCollection(8).IsFiltered = False
.FullSeriesCollection(8).Format.Line.DashStyle = msoLineSysDot
.FullSeriesCollection(8).Format.Line.ForeColor.RGB = RGB(255, 0, 0)

.FullSeriesCollection(1).IsFiltered = True
.FullSeriesCollection(3).IsFiltered = True
.FullSeriesCollection(4).IsFiltered = True
.FullSeriesCollection(5).IsFiltered = True

End With
' SAUVEGARDE DU GRAPHIQUE CHLORE BASSIN CHOISI ET AFFICHAGE DANS FRAME 10 CHLORE
'Worksheets(bassinchoix).ChartObjects(1).Chart.Export ThisWorkbook.Path & "\graphique.gif"
CHGraph.Export ThisWorkbook.Path & "\graphique2.gif"
Me.Frame10.Picture = LoadPicture(ThisWorkbook.Path & "\graphique2.gif")

' DELETE CHARTS FEUILLE
Worksheets(bassinchoix).ChartObjects.Delete

Application.ScreenUpdating = True

End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
'vbFormControlMenu 0 L'ordre de fermeture provient de la Croix du UserForm
'vbFormCode 1 L'ordre de fermeture provient d'une macro
'vbAppWindows 2 L'ordre provient de la fermeture de la session Windows
'vbAppTaskManager 3 L'ordre de fermeture provient d'une instruction du Task Manager
'
' Si fermeture par la croix
If CloseMode = 0 Then
' Demander le mot de passe
If InputBox("Vous souhaitez fermer la fenêtre par la croix" & vbCr _
& "Merci de saisir le mot de passe", "Mot de passe") <> "MOSCAT12" Then
' Si différend de toto, ne pas fermer l'USF
Cancel = True
End If
End If
End Sub



Configuration: Windows / Edge 88.0.705.56
A voir également:

1 réponse

yg_be Messages postés 22717 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 22 avril 2024 1 476
2 févr. 2021 à 13:11
bonjour,
je pense qu'il serait utile que tu partages un fichier dans lequel nous pourrons observer le mauvais comportement de ton code.
0
Merci de votre réponse rapide..
Comment mettre le fichier en pièce jointe??
0
alinea0504 Messages postés 4 Date d'inscription mardi 2 février 2021 Statut Membre Dernière intervention 14 février 2021 > alinea0504
2 févr. 2021 à 17:29
il semblerait qu'en supprimant les feuilles incriminées ( qui étaient des copies des précédentes..) , et en les recréant , ça marche.. pourtant je n'ai rien modifié dans leur propriétés..
Dites moi qd mm comment mettre un fichier xlsm en piéce jointe , j'ai une autre question à poser mais je ne voudrais pas empecher la cloture de ce cas
0
yg_be Messages postés 22717 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 22 avril 2024 1 476 > alinea0504 Messages postés 4 Date d'inscription mardi 2 février 2021 Statut Membre Dernière intervention 14 février 2021
2 févr. 2021 à 18:47
pour partager ici un fichier, il faut le publier sur internet (google drive, cjoint.com, ...), puis partager ici un lien vers le fichier.
0