Problème création graphique plage variable
Résolu
Wazzid
Messages postés
14
Date d'inscription
Statut
Membre
Dernière intervention
-
Wazzid Messages postés 14 Date d'inscription Statut Membre Dernière intervention -
Wazzid Messages postés 14 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je rédige un nouveau post qui fait suite à mon précédent.
Je n'avais obtenue aucune réponse et entre temps j'ai réussi à avancer mais je suis maintenant bloqué pour la création du graphe avec la sélection de la plage de données.
Ma macro va chercher à l'aide de la méthode find, la dernière colonne utile pour réaliser mon graphe et descend jusqu'à l'avant dernière cellule non vide ce qui me permet de définir la dernière case de ma plage de données.
Or je souhaite maintenant définir la plage de la cellule A1 à ma dernière définit juste avant mais le code Range("A1:Lastcell") ne fonctionne pas, il me renvoie une erreur
Si vous pouviez me sortir de cette situation, merci de votre aide.
Fichier excel : http://www.cjoint.com/c/GFoiTTT3Uky
Sub graph()
'
' graphe Macro
'
'
Dim grph1 As Worksheet
Dim grph2 As Worksheet
Dim grph3 As Worksheet
Dim i As Integer
Dim y As Integer
Dim z As Integer
Dim Cpt As Integer
Dim Cpy As Integer
Dim Cpu As Integer
Dim CptSh As Integer
Cpt = 0
CptSh = Sheets.Count
For i = 1 To CptSh
If Sheets(i).Name <> "graphique phase 1" Then Cpt = Cpt + 1 Else Exit For
Next i
If Cpt = CptSh Then
Sheets.Add After:=Sheets("synthese")
ActiveSheet.Name = "graphique phase 1"
End If
Cpy = 0
CptSh = Sheets.Count
For y = 1 To CptSh
If Sheets(y).Name <> "graphique phase 2" Then Cpy = Cpy + 1 Else Exit For
Next y
If Cpy = CptSh Then
Sheets.Add After:=Sheets("graphique phase 1")
ActiveSheet.Name = "graphique phase 2"
End If
Cpu = 0
CptSh = Sheets.Count
For u = 1 To CptSh
If Sheets(u).Name <> "graphique phase 3" Then Cpu = Cpu + 1 Else Exit For
Next u
If Cpu = CptSh Then
Sheets.Add After:=Sheets("graphique phase 2")
ActiveSheet.Name = "graphique phase 3"
End If
Dim R1 As Range 'déclare la variable R1 (Recherche 1)
Dim R2 As Range 'déclare la variable R2 (Recherche 2)
Dim R3 As Range 'déclare la variable R2 (Recherche 3)
Dim R4 As Range 'déclare la variable R2 (Recherche 4)
Dim R5 As Range 'déclare la variable R2 (Recherche 5)
Dim R6 As Range 'déclare la variable R2 (Recherche 6)
Dim COL As Integer 'déclare la variable COL (COLonne)
Dim COL2 As Integer 'déclare la variable COL2 (COLonne 2)
Dim COL3 As Integer 'déclare la variable COL3 (COLonne 3)
Dim DL As Long 'déclare la variable DL (Dernière Ligne)
Dim Lastcell As Range
Dim courbe1 As Range
Sheets("resultat").Select
Set R1 = Sheets("resultat").Rows(1).Find("Mph1", , xlValues, xlWhole)
If Not R1 Is Nothing Then 'condition : si au moins une occurrence est trouvée
COL = R1.Column 'définit la colonne COL de la première occurrence trouvée
DL = Sheets("resultat").Cells(Application.Rows.Count, COL).End(xlUp).Offset(-1, 0).Row 'définit la dernière ligne éditée DL de la colonne COL de l'onget OND
End If 'fin de la condition
Set Lastcell = Cells(DL, COL)
Set courbe1 = Range("A1:Lastcell") ' la méthode range de l'objet global à échoué
'Lastcell me renvoie la valeur correspondante à ma dernière case voulue pour faire ma plage
Worksheets("graphique phase 1").Shapes.AddChart2(227, xlLineMarkers).Select
ActiveChart.SetSourceData Source:=Range("resultat!courbe1")
End Sub
Je rédige un nouveau post qui fait suite à mon précédent.
Je n'avais obtenue aucune réponse et entre temps j'ai réussi à avancer mais je suis maintenant bloqué pour la création du graphe avec la sélection de la plage de données.
Ma macro va chercher à l'aide de la méthode find, la dernière colonne utile pour réaliser mon graphe et descend jusqu'à l'avant dernière cellule non vide ce qui me permet de définir la dernière case de ma plage de données.
Or je souhaite maintenant définir la plage de la cellule A1 à ma dernière définit juste avant mais le code Range("A1:Lastcell") ne fonctionne pas, il me renvoie une erreur
Si vous pouviez me sortir de cette situation, merci de votre aide.
Fichier excel : http://www.cjoint.com/c/GFoiTTT3Uky
Sub graph()
'
' graphe Macro
'
'
Dim grph1 As Worksheet
Dim grph2 As Worksheet
Dim grph3 As Worksheet
Dim i As Integer
Dim y As Integer
Dim z As Integer
Dim Cpt As Integer
Dim Cpy As Integer
Dim Cpu As Integer
Dim CptSh As Integer
Cpt = 0
CptSh = Sheets.Count
For i = 1 To CptSh
If Sheets(i).Name <> "graphique phase 1" Then Cpt = Cpt + 1 Else Exit For
Next i
If Cpt = CptSh Then
Sheets.Add After:=Sheets("synthese")
ActiveSheet.Name = "graphique phase 1"
End If
Cpy = 0
CptSh = Sheets.Count
For y = 1 To CptSh
If Sheets(y).Name <> "graphique phase 2" Then Cpy = Cpy + 1 Else Exit For
Next y
If Cpy = CptSh Then
Sheets.Add After:=Sheets("graphique phase 1")
ActiveSheet.Name = "graphique phase 2"
End If
Cpu = 0
CptSh = Sheets.Count
For u = 1 To CptSh
If Sheets(u).Name <> "graphique phase 3" Then Cpu = Cpu + 1 Else Exit For
Next u
If Cpu = CptSh Then
Sheets.Add After:=Sheets("graphique phase 2")
ActiveSheet.Name = "graphique phase 3"
End If
Dim R1 As Range 'déclare la variable R1 (Recherche 1)
Dim R2 As Range 'déclare la variable R2 (Recherche 2)
Dim R3 As Range 'déclare la variable R2 (Recherche 3)
Dim R4 As Range 'déclare la variable R2 (Recherche 4)
Dim R5 As Range 'déclare la variable R2 (Recherche 5)
Dim R6 As Range 'déclare la variable R2 (Recherche 6)
Dim COL As Integer 'déclare la variable COL (COLonne)
Dim COL2 As Integer 'déclare la variable COL2 (COLonne 2)
Dim COL3 As Integer 'déclare la variable COL3 (COLonne 3)
Dim DL As Long 'déclare la variable DL (Dernière Ligne)
Dim Lastcell As Range
Dim courbe1 As Range
Sheets("resultat").Select
Set R1 = Sheets("resultat").Rows(1).Find("Mph1", , xlValues, xlWhole)
If Not R1 Is Nothing Then 'condition : si au moins une occurrence est trouvée
COL = R1.Column 'définit la colonne COL de la première occurrence trouvée
DL = Sheets("resultat").Cells(Application.Rows.Count, COL).End(xlUp).Offset(-1, 0).Row 'définit la dernière ligne éditée DL de la colonne COL de l'onget OND
End If 'fin de la condition
Set Lastcell = Cells(DL, COL)
Set courbe1 = Range("A1:Lastcell") ' la méthode range de l'objet global à échoué
'Lastcell me renvoie la valeur correspondante à ma dernière case voulue pour faire ma plage
Worksheets("graphique phase 1").Shapes.AddChart2(227, xlLineMarkers).Select
ActiveChart.SetSourceData Source:=Range("resultat!courbe1")
End Sub
A voir également:
- Problème création graphique plage variable
- Changer carte graphique - Guide
- Creation compte gmail - Guide
- Création site web - Guide
- Media creation tool - Télécharger - Systèmes d'exploitation
- Création compte google - Guide
9 réponses
Bonjour
Essaies ceci
Cdlmnt
Essaies ceci
DL = Sheets("resultat").Cells(Rows.Count, col).End(xlUp).Row - 1 Set Lastcell = Cells(DL, col) Set courbe1 = Range("A1:" & Lastcell.Address)
Cdlmnt
Bonjour
Lorsque tu copies un code dans ton message, merci de le coller entre balise
j'ai omis de télécharger ton classeur
Edit: 14h37
petites modif après consultation du classeur
Bonjour CCm excuse moi je n'avais pas rafraichi
Michel
Lorsque tu copies un code dans ton message, merci de le coller entre balise

j'ai omis de télécharger ton classeur
Dim Col As Byte, Dl As Integer
Dim Courbe1 As Range
With Sheets("resultat")
If Application.CountIf(.Rows(1), "Mph1") = 0 Then GoTo inconnu
Col = .Rows(1).Find(what:="Mph1", After:=.range("A1").Column
Dl = .Columns(Col).Find(what:="*", searchdirection:=xlPrevious).Row
Set Courbe1 = .Range(.Cells(1, 1), .Cells(Dl, Col))
End With
'la suite du code......
Exit Sub
'gestionaire errereur
inconnu:
MsgBox "mth1 inconnu", vbCritical
End Sub
Edit: 14h37
petites modif après consultation du classeur
Bonjour CCm excuse moi je n'avais pas rafraichi
Michel
Bonjour michel_m ,
Désolé ce sera fait dorénavant merci.
A propos de votre message, pourquoi me recommandez vous de remplacer mon code par la votre ? Je débute sur VBA et j'imagine bien que mes macros crée à partir de code trouver sur le net sois horrible pour des habitués du codage VBA.
Je cherche simplement à comprendre ce qui ne va pas.
Merci de votre aide
Cordialement
Désolé ce sera fait dorénavant merci.
A propos de votre message, pourquoi me recommandez vous de remplacer mon code par la votre ? Je débute sur VBA et j'imagine bien que mes macros crée à partir de code trouver sur le net sois horrible pour des habitués du codage VBA.
Je cherche simplement à comprendre ce qui ne va pas.
Merci de votre aide
Cordialement
J'ai rajouté l'Offset qui manquait sur ton code afin de bien avoir la bonne dernière cellule pour ma plage de données de mon graphe.
Mais j'obtiens la même erreur à la derniere ligne pour la création du graphe.
Je vois bien que mon code pour créer un graphe ne va pas et les lignes de codes utilisés par l'enregistreur de macro de ne vont pas non plus.
Est ce seulement le range qui ne va pas ou toute la structure du code concernant la création du graphe qui ne convient pas ?
Merci de ton aide
Cordialement
Mais j'obtiens la même erreur à la derniere ligne pour la création du graphe.
Je vois bien que mon code pour créer un graphe ne va pas et les lignes de codes utilisés par l'enregistreur de macro de ne vont pas non plus.
Est ce seulement le range qui ne va pas ou toute la structure du code concernant la création du graphe qui ne convient pas ?
Merci de ton aide
Cordialement
Dim Col As Byte, Dl As Integer
Dim Courbe1 As Range
With Sheets("resultat")
If Application.CountIf(.Rows(1), "Mph1") = 0 Then GoTo inconnu
Col = .Rows(1).Find(What:="Mph1", After:=Range("A1")).Column
Dl = .Columns(Col).Find(What:="*", searchdirection:=xlPrevious).Offset(-1, 0).Row
Set Courbe1 = .Range(.Cells(1, 1), .Cells(Dl, Col))
End With
Set Lastcell = Cells(Dl, Col)
Set Courbe1 = Range("A1:" & Lastcell.Address)
Worksheets("graphique phase 1").Shapes.AddChart2(227, xlLineMarkers).Select
Sheets("resultat").SetSourceData Source:=Range("courbe1") ' Erreur derniere ligne méthode Range de l'objet global a échoué
Exit Sub
'gestionaire errereur
inconnu:
MsgBox "mth1 inconnu", vbCritical
End Sub
Essaies ceci
> michel. ça va ? et aucun pb pour l'incruste, bien au contraire ...
Cdlmnt
Set Lastcell = Sheets("resultat").Cells(DL, COL) Set courbe1 = Sheets("resultat").Range("A1:" & Lastcell.Address) Sheets("graphique phase 1").Select Charts.Add ActiveChart.ChartType = xlLineMarkers ActiveChart.SetSourceData Source:=courbe1 ActiveChart.Location Where:=xlLocationAsObject, Name:="graphique phase 1"
> michel. ça va ? et aucun pb pour l'incruste, bien au contraire ...
Cdlmnt
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour
offset s'applique à une cellule (range) et non à un entier (integer)
la ligne que je t'avais transmis donne la dernière ligne occupée mais si tu maintiens le retrait de cette dernière ligne
au besoin, fais une un essai avec les 2 manières dans une feuille d'un classeur avec des données dans une colonne
Salut CCM, ca va ca va malgré cette canicule (38-40°) ressentis dehors)
je te demande une astuce par MP. merci d'avance
offset s'applique à une cellule (range) et non à un entier (integer)
la ligne que je t'avais transmis donne la dernière ligne occupée mais si tu maintiens le retrait de cette dernière ligne
Dl = .Columns(Col).Find(What:="*", searchdirection:=xlPrevious).Row-1
au besoin, fais une un essai avec les 2 manières dans une feuille d'un classeur avec des données dans une colonne
Salut CCM, ca va ca va malgré cette canicule (38-40°) ressentis dehors)
je te demande une astuce par MP. merci d'avance
De rien,
Si c'est fini, peux tu mettre le sujet à résolu (en dessous du titre de ton premier message)
Bonne journée à tous
Si c'est fini, peux tu mettre le sujet à résolu (en dessous du titre de ton premier message)
Bonne journée à tous
Malheuresement non, j'ai de nouveau un problème avec un Range ...
Pour mes graphiques suivant j'ai besoin des 4 premieres colonnes + d'une plage à l'intérieure du tableau.
Je pesnais donc utilisé un Union de mes deux Plage mais j'obtiens deja avant ça une erreur sur ma plage de données que j'ai voulu définir en prenant la première cellule et la dernière.
Cordialement
Pour mes graphiques suivant j'ai besoin des 4 premieres colonnes + d'une plage à l'intérieure du tableau.
Je pesnais donc utilisé un Union de mes deux Plage mais j'obtiens deja avant ça une erreur sur ma plage de données que j'ai voulu définir en prenant la première cellule et la dernière.
Set Lastcell2 = Sheets("resultat").Cells(DL2, COL2)
Set Firstcell = Sheets("resultat").Cells(1, COL).Offset(0, 1)
Set LastD = Range("D" & Rows.Count).End(xlUp)
Set plage_AD = Sheets("resultat").Range("A1:" & LastD.Address)
Set plage_valeur2 = Sheets("resultat").Range("Firstcell.Adress: & Lastcell2.Adress")
' Erreur plage_valeur2 = nothing
Set courbe2 = Sheets("resulat").Union(plage_valeur2, plage_AD)
Sheets("graphique phase 2").Select
Cordialement
Essaies ceci (tu concaténes tes deux adresses en les séparant par ":" - il y a 2 "d" à Address)
Cdlmnt
Set plage_valeur2 = Sheets("resultat").Range(Firstcell.Address & ":" & Lastcell2.Address)
Cdlmnt
j'avais trouvé cette ligne de codes en cherchant un peu sur internet et finalement c'est la ligne du dessous qui ne va plus ...
Même problème avec ce code là
Ces Range ça me rend dingue ...
Set courbe2 = Sheets("resulat").Union(plage_valeur2, plage_AD)
Même problème avec ce code là
Set Lastcell2 = Sheets("resultat").Cells(DL2, COL2)
Set Firstcell = Sheets("resultat").Cells(1, COL).Offset(0, 1)
Set LastD = Range("D" & Rows.Count).End(xlUp)
Set plage_AD = Sheets("resultat").Range("A1:" & LastD.Address)
Set plage_valeur2 = Sheets("resultat").Range(Firstcell, Lastcell2)
Set courbe2 = Sheets("resulat").Union(Range("plage_valeur2"), Range("plage_AD"))
Ces Range ça me rend dingue ...
Merci beaucoup de ton aide ccm81
Pareil à michel_m
Je posterais mon code en entier concernant ma macro si des personnes se retrouvent avec le même type de problème que moi.
' Il faut avouer que tous les autres post m'ont bien aidés pour réaliser une grande partie de ma macro aussi
Je marquerai comme résolu le sujet juste après
Encore merci,
Bonne journée
Pareil à michel_m
Je posterais mon code en entier concernant ma macro si des personnes se retrouvent avec le même type de problème que moi.
' Il faut avouer que tous les autres post m'ont bien aidés pour réaliser une grande partie de ma macro aussi
Je marquerai comme résolu le sujet juste après
Encore merci,
Bonne journée
Voici la totalité du code qui me permet de créer des graphes à partir d'un tableau de données
Avec pour chaque graphe des variables pour aller chercher sur la première ligne la colonne ou se trouve un certain texte et ainsi définir la plage de données correspondante au graphe voulu avec la première et dernière cellule.
Avec pour chaque graphe des variables pour aller chercher sur la première ligne la colonne ou se trouve un certain texte et ainsi définir la plage de données correspondante au graphe voulu avec la première et dernière cellule.
Sub graph()
'
' graphe Macro
'
'
Dim grph1 As Worksheet 'déclare grph1 comme feuille excel
Dim grph2 As Worksheet 'déclare grph2 comme feuille excel
Dim grph3 As Worksheet 'déclare grph3 comme feuille excel
Dim i As Integer
Dim y As Integer
Dim z As Integer
Dim Cpt As Integer
Dim Cpy As Integer
Dim Cpu As Integer
Dim CptSh As Integer
Cpt = 0
CptSh = Sheets.Count
For i = 1 To CptSh 'Créée la feuille graphique phase 1 après la feuille resultat
If Sheets(i).Name <> "graphique phase 1" Then Cpt = Cpt + 1 Else Exit For 'si elle n'existe pas déjà
Next i
If Cpt = CptSh Then
Sheets.Add After:=Sheets("synthese")
ActiveSheet.Name = "graphique phase 1"
End If
Cpy = 0
CptSh = Sheets.Count
For y = 1 To CptSh
If Sheets(y).Name <> "graphique phase 2" Then Cpy = Cpy + 1 Else Exit For
Next y
If Cpy = CptSh Then
Sheets.Add After:=Sheets("graphique phase 1")
ActiveSheet.Name = "graphique phase 2"
End If
Cpu = 0
CptSh = Sheets.Count
For u = 1 To CptSh
If Sheets(u).Name <> "graphique phase 3" Then Cpu = Cpu + 1 Else Exit For
Next u
If Cpu = CptSh Then
Sheets.Add After:=Sheets("graphique phase 2")
ActiveSheet.Name = "graphique phase 3"
End If
Dim R1 As Range 'déclare la variable R1 (Recherche 1)
Dim COL As Integer 'déclare la variable COL (COLonne)
Dim DL As Long 'déclare la variable DL (Dernière Ligne)
Dim Lastcell As Range
Dim courbe1 As Range
Sheets("resultat").Select
Set R1 = Sheets("resultat").Rows(1).Find("Mph1", , xlValues, xlWhole)
If Not R1 Is Nothing Then 'condition : si au moins une occurrence est trouvée
COL = R1.Column 'définit la colonne COL de la première occurrence trouvée
DL = Sheets("resultat").Cells(Application.Rows.Count, COL).End(xlUp).Offset(-1, 0).Row 'définit la dernière ligne éditée DL de la colonne COL de l'onget OND
End If 'fin de la condition
Set Lastcell = Sheets("resultat").Cells(DL, COL)
Set courbe1 = Sheets("resultat").Range("A1:" & Lastcell.Address)
Sheets("graphique phase 1").Select
Charts.Add
ActiveChart.ChartType = xlLineMarkers
ActiveChart.SetSourceData Source:=courbe1
ActiveChart.Location Where:=xlLocationAsObject, Name:="graphique phase 1"
ActiveSheet.ChartObjects("Graphique 1").Activate
ActiveChart.ChartArea.Select
ActiveSheet.Shapes("Graphique 1").Height = 402.5196850394
ActiveSheet.Shapes("Graphique 1").Width = 688.8188976378
ActiveSheet.Shapes("Graphique 1").IncrementLeft -148.8
ActiveSheet.Shapes("Graphique 1").IncrementTop -101.4
ActiveChart.ClearToMatchStyle
ActiveChart.ChartStyle = 231
ActiveChart.Axes(xlCategory).Select
ActiveChart.Axes(xlCategory).TickLabelSpacing = 1
ActiveChart.Axes(xlCategory).TickLabelSpacing = 100
ActiveChart.Axes(xlValue).Select
ActiveChart.Axes(xlValue).MinimumScale = 0
ActiveChart.Axes(xlValue).MajorGridlines.Select
Selection.Delete
ActiveSheet.ChartObjects("Graphique 1").Activate
ActiveChart.SetElement (msoElementPrimaryValueAxisTitleAdjacentToAxis)
ActiveChart.Axes(xlValue, xlPrimary).HasTitle = True
ActiveChart.Axes(xlValue).AxisTitle.Select
ActiveChart.Axes(xlValue, xlPrimary).AxisTitle.Text = "Échauffement (k)"
Selection.Format.TextFrame2.TextRange.Font.Size = 20
Dim R2 As Range 'déclare la variable R1 (Recherche 2)
Dim COL2 As Integer 'déclare la variable COL (COLonne 2)
Dim DL2 As Long 'déclare la variable DL (Dernière Ligne2)
Dim Lastcell2 As Range
Dim Firstcell As Range ' déclare la variable Firstcell ( premiere cellule graphe 2)
Dim plage_valeur2 As Range
Dim courbe2 As Range
Dim plage_AD As Range
Dim LastD As Range
Sheets("resultat").Select
Set R2 = Sheets("resultat").Rows(1).Find("Mph2", , xlValues, xlWhole)
If Not R2 Is Nothing Then 'condition : si au moins une occurrence est trouvée
COL2 = R2.Column 'définit la colonne COL de la première occurrence trouvée
DL2 = Sheets("resultat").Cells(Application.Rows.Count, COL2).End(xlUp).Offset(-1, 0).Row 'définit la dernière ligne éditée DL de la colonne COL
End If 'fin de la condition
Set Lastcell2 = Sheets("resultat").Cells(DL2, COL2) ' Définit ma dernière cellule de ma plage de données
Set Firstcell = Sheets("resultat").Cells(1, COL).Offset(0, 1) 'Définit ma première cellle de ma plage de données
Set LastD = Range("D" & Rows.Count).End(xlUp) ' Va chercher la derniere case non vide de la colonne D
Set plage_AD = Sheets("resultat").Range("A1:" & LastD.Address) ' Définit ma plage constante des 4 premieres colonnes
Set plage_valeur2 = Sheets("resultat").Range(Firstcell, Lastcell2) ' définit ma plage de données à l'intérieur de mon tableau
Set courbe2 = Union(plage_valeur2, plage_AD) ' unifie les deux plages pour la plage de données à donner au graphe
Sheets("graphique phase 2").Select
Sheets("graphique phase 2").Select
Charts.Add
ActiveChart.ChartType = xlLineMarkers
ActiveChart.SetSourceData Source:=courbe2
ActiveChart.Location Where:=xlLocationAsObject, Name:="graphique phase 2"
ActiveSheet.ChartObjects("Graphique 1").Activate
ActiveChart.ChartArea.Select
ActiveSheet.Shapes("Graphique 1").Height = 402.5196850394
ActiveSheet.Shapes("Graphique 1").Width = 688.8188976378
ActiveSheet.Shapes("Graphique 1").IncrementLeft -148.8
ActiveSheet.Shapes("Graphique 1").IncrementTop -101.4
ActiveChart.ClearToMatchStyle
ActiveChart.ChartStyle = 231
ActiveChart.Axes(xlCategory).Select
ActiveChart.Axes(xlCategory).TickLabelSpacing = 1
ActiveChart.Axes(xlCategory).TickLabelSpacing = 100
ActiveChart.Axes(xlValue).Select
ActiveChart.Axes(xlValue).MinimumScale = 0
ActiveChart.Axes(xlValue).MajorGridlines.Select
Selection.Delete
ActiveSheet.ChartObjects("Graphique 1").Activate
ActiveChart.SetElement (msoElementPrimaryValueAxisTitleAdjacentToAxis)
ActiveChart.Axes(xlValue, xlPrimary).HasTitle = True
ActiveChart.Axes(xlValue).AxisTitle.Select
ActiveChart.Axes(xlValue, xlPrimary).AxisTitle.Text = "Échauffement (k)"
Selection.Format.TextFrame2.TextRange.Font.Size = 20
' 3eme graphe
Dim R3 As Range 'déclare la variable R1 (Recherche 3)
Dim COL3 As Integer 'déclare la variable COL (COLonne 3)
Dim DL3 As Long 'déclare la variable DL (Dernière Ligne3)
Dim Lastcell3 As Range
Dim Firstcell2 As Range
Dim COL_D As Range
Dim plage_valeur3 As Range
Dim courbe3 As Range
Sheets("resultat").Select
Set R3 = Sheets("resultat").Rows(1).Find("Mph3", , xlValues, xlWhole)
If Not R3 Is Nothing Then 'condition : si au moins une occurrence est trouvée
COL3 = R3.Column 'définit la colonne COL de la première occurrence trouvée
DL3 = Sheets("resultat").Cells(Application.Rows.Count, COL3).End(xlUp).Offset(-1, 0).Row 'définit la dernière ligne éditée DL3 de la colonne COL3
End If 'fin de la condition
Set Lastcell3 = Sheets("resultat").Cells(DL3, COL3)
Set Firstcell2 = Sheets("resultat").Cells(1, COL2).Offset(0, 1)
Set LastD = Range("D" & Rows.Count).End(xlUp)
Set plage_AD = Sheets("resultat").Range("A1:" & LastD.Address)
Set plage_valeur3 = Sheets("resultat").Range(Firstcell2, Lastcell3)
Set courbe3 = Union(plage_valeur3, plage_AD)
Sheets("graphique phase 3").Select
Sheets("graphique phase 3").Select ' créer graphe phase 3 avec source donnée range courbe3
Charts.Add ' dans la feuille graphique phase 3
ActiveChart.ChartType = xlLineMarkers
ActiveChart.SetSourceData Source:=courbe3
ActiveChart.Location Where:=xlLocationAsObject, Name:="graphique phase 3"
ActiveSheet.ChartObjects("Graphique 1").Activate ' Selectionne graphe 3 et modifie taille et position
ActiveChart.ChartArea.Select
ActiveSheet.Shapes("Graphique 1").Height = 402.5196850394
ActiveSheet.Shapes("Graphique 1").Width = 688.8188976378
ActiveSheet.Shapes("Graphique 1").IncrementLeft -148.8
ActiveSheet.Shapes("Graphique 1").IncrementTop -101.4
ActiveChart.ClearToMatchStyle
ActiveChart.ChartStyle = 231 ' Selectionne style graphe
ActiveChart.Axes(xlCategory).Select
ActiveChart.Axes(xlCategory).TickLabelSpacing = 1
ActiveChart.Axes(xlCategory).TickLabelSpacing = 100
ActiveChart.Axes(xlValue).Select
ActiveChart.Axes(xlValue).MinimumScale = 0
ActiveChart.Axes(xlValue).MajorGridlines.Select
Selection.Delete
ActiveSheet.ChartObjects("Graphique 1").Activate ' Ajoute titre axe Y
ActiveChart.SetElement (msoElementPrimaryValueAxisTitleAdjacentToAxis)
ActiveChart.Axes(xlValue, xlPrimary).HasTitle = True
ActiveChart.Axes(xlValue).AxisTitle.Select
ActiveChart.Axes(xlValue, xlPrimary).AxisTitle.Text = "Échauffement (k)" ' Nom titre axe y = Echauffement (k)
Selection.Format.TextFrame2.TextRange.Font.Size = 20 ' Change taille texte
End Sub
je viens d'essayer avec le code donné.
Une erreur intervient lors de la dernière ligne,
Je pense ne pas utiliser les bonnes formules pour créer mon graphique
Si vous pouviez m'indiquez la démarche à suivre, merci
Cordialement