Forum des développeurs  

Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé.
Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Microsoft Office > Excel > VBA Excel

Réponse
 
Outils de la discussion
Vieux 27/08/2008, 14h14   #1 (permalink)
Membre du Club
 
Date d'inscription: juillet 2008
Messages: 93
Par défaut problème de positionnement d'un graphique

Bonjour,
je voudrais créer un graph sur la feuille Récap_3ème tri_V_élo1 et le positionner sous la cellule Range("F" & j + 17&). J'ai crée le programme suivant:

Code :
 
    Sheets("Récap_3ème tri_V_élo1").Activate  
    Range("F" & j + 17&).Select
    Charts.Add
    graph_absence = ActiveChart.Name
    ActiveChart.ChartType = xlPie
    ActiveChart.SetSourceData Source:=Sheets("Récap_3ème tri_V_élo1").Range( _
        "F82:F83"), PlotBy:=xlColumns
    ActiveChart.Location Where:=xlLocationAsObject, Name:= _
        "Récap_3ème tri_V_élo1"
    With ActiveChart
        .HasTitle = True
        .ChartTitle.Characters.Text = "Représentation du taux d'absences"
    End With
    ActiveChart.HasLegend = False
    ActiveChart.ApplyDataLabels Type:=xlDataLabelsShowNone, LegendKey:=False, _
        HasLeaderLines:=True
    ActiveChart.ChartTitle.Select
    ActiveChart.PlotArea.Select
    ActiveChart.ChartArea.Select
    ActiveSheet.Shapes("Graphique 13").IncrementLeft -8.25
    ActiveSheet.Shapes("Graphique 13").IncrementTop 158.25
 
Mon problème est qu'il ne se positionne pas sur la bonne feuille: Récap_3ème tri_V_élo1 pourtant je l'active juste avant de créer le graph.
De plus pour le code suivant:
Code :
ActiveSheet.Shapes("Graphique 13").IncrementLeft -8.25
    ActiveSheet.Shapes("Graphique 13").IncrementTop 158.25
Il me faudrait une formulation générique pour pouvoir refaire un graph sans être embétée pour cela j'ai créé le code
Code :
 graph_absence = ActiveChart.Name
mais j'arrive pas à m'en servir.
Est ce que quelqu'un peut m'aider?
Merci d'avance.
frisou65 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 27/08/2008, 14h19   #2 (permalink)
Modérateur
 
Avatar de ouskel'n'or
 
Date d'inscription: février 2005
Localisation: Une petite rue qui "avait" un merle
Messages: 11 574
Par défaut

Incremente déplace ton graph
Top et left le positionnent
Code :
    ActiveSheet.Shapes("Graphique 13").Top = 10
    ActiveSheet.Shapes("Graphique 13").Left = 10
__________________
Je...ne...réponds...pas....aux...questions...techniques... par...mp
La recherche (VBA-E) : Le Forum, La FAQ, Les cours et tutoriels, Contribuez, Les Sources et... l'Aide en ligne !!!
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 27/08/2008, 14h24   #3 (permalink)
Membre du Club
 
Date d'inscription: juillet 2008
Messages: 93
Par défaut

ok merci et pour le positionnement sur la feuille?
Vu que j'active la feuille sur laquelle je veux mettre le graphique pourquoi il se met sur une autre feuille au hasard dans le classeur? Il faut que je fasse quoi?
frisou65 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 27/08/2008, 14h31   #4 (permalink)
Modérateur
 
Avatar de ouskel'n'or
 
Date d'inscription: février 2005
Localisation: Une petite rue qui "avait" un merle
Messages: 11 574
Par défaut

Pour la feuille dans laquelle incorporer le graphe, inutile de la sélectionner
Code :
Dim Graph As Chart
Set Graph = Charts.Add
    With Graph
        .ChartType = xlColumnClustered
        .SetSourceData Source:=Sheets("Récap_3ème tri_V_élo1").Range( _
        "F82:F83"), PlotBy:=xlColumns
        .Location Where:=xlLocationAsObject, Name:= _
        "Récap_3ème tri_V_élo1"
    End With
    With ActiveChart
        .HasTitle = True
        .etc.
    End With
__________________
Je...ne...réponds...pas....aux...questions...techniques... par...mp
La recherche (VBA-E) : Le Forum, La FAQ, Les cours et tutoriels, Contribuez, Les Sources et... l'Aide en ligne !!!
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 27/08/2008, 14h53   #5 (permalink)
Membre du Club
 
Date d'inscription: juillet 2008
Messages: 93
Par défaut

Ceci ne marche pas car il ne me la met pas sur la bonne feuille : Récap_3ème tri_V_élo1
Je ne comprends pas.
frisou65 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 27/08/2008, 16h20   #6 (permalink)
Membre du Club
 
Date d'inscription: juillet 2008
Messages: 93
Par défaut problème de graphique

Bonjour,
je souhaite créer un graph en secteur, le positionner sur la feuille Récap_3ème tri_V_élo1 et le positionner à l'endroit de la cellule Range("F" & j + 17&).
De plus comme je réalise plusieurs graph il faut que je trouve une méthode générique pour disposer le graph que je viens de créer.
J'ai réalisé le code suivant:

Code :
    Sheets("Récap_3ème tri_V_élo1").Activate    
    Range("F" & j + 17&).Select    
    Dim Graph As Chart
    Set Graph = Charts.Add
    With Graph
        .ChartType = xlPie
        .SetSourceData Source:=Sheets("Récap_3ème tri_V_élo1").Range( _
        "F82:F83"), PlotBy:=xlColumns
        .Location Where:=xlLocationAsObject, Name:= _
        "Récap_3ème tri_V_élo1"
    End With  
    graph_abscence = ActiveChart.Name
    
    With ActiveChart
        .HasTitle = True
        .ChartTitle.Characters.Text = "Absence"
    End With
   ActiveChart.HasLegend = False 
ActiveSheet.ChartObjects(graph_abscence).Activate
    ActiveWindow.Visible = False
    ActiveWindow.WindowState = xlNormal
    ActiveWindow.WindowState = xlMaximized
    Sheets("Récap_3ème tri_V_élo1").Select
    ActiveSheet.ChartObjects(graph_abscence).Activate
    ActiveChart.Paste
    Sheets("Récap_3ème tri_V_élo1").Activeshapes.Right = Range("F" & j + 17&).Right
    Sheets("Récap_3ème tri_V_élo1").Activeshapes.Top = Range("F" & j + 17&).Top
Le code ne marche pas à partir le la ligne verte. Je ne comprends pas.
Est ce que quelqu'un peut m'aider?
Merci d'avance.
frisou65 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 27/08/2008, 17h59   #7 (permalink)
Modérateur
 
Avatar de ouskel'n'or
 
Date d'inscription: février 2005
Localisation: Une petite rue qui "avait" un merle
Messages: 11 574
Par défaut

Pourquoi dis-tu que mon code, ici, ne fonctionne pas et que tu l'utilises ?
__________________
Je...ne...réponds...pas....aux...questions...techniques... par...mp
La recherche (VBA-E) : Le Forum, La FAQ, Les cours et tutoriels, Contribuez, Les Sources et... l'Aide en ligne !!!
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 28/08/2008, 08h45   #8 (permalink)
Membre du Club
 
Date d'inscription: juillet 2008
Messages: 93
Par défaut

En fait ça fonctionnait pas directement mais en modifiant un peu ce que j'avais ça a fonctionné.
Merci.
frisou65 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 28/08/2008, 09h50   #9 (permalink)
Membre du Club
 
Date d'inscription: juillet 2008
Messages: 93
Par défaut problème de positionnement d'un graphique 2

Bonjour,
les lignes en bleu ne fonctionnent pas, je ne comprends pas pourquoi.
Mon but au niveau des lignes en bleu est de coller le graph et ensuite de le positionner.

Code :
    Sheets("Récap_3ème tri_V_élo1").Activate    
    Range("F" & j + 17&).Select    
    Dim Graph As Chart
    Set Graph = Charts.Add
    With Graph
        .ChartType = xlPie
        .SetSourceData Source:=Sheets("Récap_3ème tri_V_élo1").Range( _
        "F82:F83"), PlotBy:=xlColumns
        .Location Where:=xlLocationAsObject, Name:= _
        "Récap_3ème tri_V_élo1"
    End With
    With ActiveChart
        .HasTitle = True
        .ChartTitle.Characters.Text = "Absence"
    End With
    ActiveChart.HasLegend = False
    graph_absence = ActiveChart.Name    
    nom = ActiveSheet.Name    
    nom2 = Len(graph_absence) - Len(nom)   
    graph_absence2 = Right(graph_absence, nom2)
    ActiveSheet.ChartObjects(graph_absence2).Activate
    ActiveWindow.Visible = False
    ActiveWindow.WindowState = xlNormal
    ActiveWindow.WindowState = xlMaximized
    Sheets("Récap_3ème tri_V_élo1").Select
    ActiveSheet.ChartObjects(graph_absence2).Activate
    Charts(graph_absence2).Paste
    ActiveSheet.Shapes(graph_absence2).Right = Range("F" & j + 17&).Right
    ActiveSheet.Shapes(graph_absence2).Top = Range("F" & j + 17&).Top
Est ce que quelqu'un peut m'aider?
Merci d'avance.
frisou65 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 28/08/2008, 10h09   #10 (permalink)
Modérateur
 
Avatar de ouskel'n'or
 
Date d'inscription: février 2005
Localisation: Une petite rue qui "avait" un merle
Messages: 11 574
Par défaut

Déjà une question : Où copies-tu "quelque chose" pour le coller ici ?
Citation:
Charts(graph_absence2).Paste
__________________
Je...ne...réponds...pas....aux...questions...techniques... par...mp
La recherche (VBA-E) : Le Forum, La FAQ, Les cours et tutoriels, Contribuez, Les Sources et... l'Aide en ligne !!!
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 28/08/2008, 10h47   #11 (permalink)
Membre du Club
 
Date d'inscription: juillet 2008
Messages: 93
Par défaut

Voilà là j'ai rajouté la copie mais ça marche toujours pas.

Code :
 
    ActiveSheet.ChartObjects(graph_absence2).Activate
    ActiveChart.Copy
    ActiveWindow.Visible = False
    ActiveWindow.WindowState = xlNormal
    ActiveWindow.WindowState = xlMaximized
    Sheets("Récap_3ème tri_V_élo1").Select
    ActiveSheet.ChartObjects(graph_absence2).Activate
    ActiveChart.Paste
    ActiveSheet.Shapes(graph_absence2).Right = Range("F" & j + 17&).Right
    ActiveSheet.Shapes(graph_absence2).Top = Range("F" & j + 17&).Top
 
frisou65 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 28/08/2008, 11h21   #12 (permalink)
Modérateur
 
Avatar de ouskel'n'or
 
Date d'inscription: février 2005
Localisation: Une petite rue qui "avait" un merle
Messages: 11 574
Par défaut

C'est l'objet ChartObject qui a la propriété Left et Top, pas l'objet Chart
Avec l'object Shape, tu peux tester ça
Code :
Sub Test()
Dim FL1 As Worksheet
    Set FL1 = Worksheets("Feuil1")
    With FL1.Shapes(1)
        .Select
        .Top = 12
        .Left = 12
    End With
End Sub
Si ça peut t'aider... Tu sauras adapter ?

Mais poursuis tes questions dans la même discussion, ça m'évitera d'avoir à les fusionner. Il est toujours question ici de positionnement d'un graphe, dans une feuille précise d'abord, puis dans la feuille elle-même

PS - A quoi servent ces lignes ?
Citation:
ActiveChart.Copy
ActiveWindow.Visible = False
ActiveWindow.WindowState = xlNormal
ActiveWindow.WindowState = xlMaximized
Sheets("Récap_3ème tri_V_élo1").Select
ActiveSheet.ChartObjects(graph_absence2).Activate
ActiveChart.Paste
Re...
Pour désigner ton graphe sans t'emm berter tu peux utiliser
Code :
   With FL1.Shapes(FL1.Shapes.count)
puisque c'est le dernier créé
__________________
Je...ne...réponds...pas....aux...questions...techniques... par...mp
La recherche (VBA-E) : Le Forum, La FAQ, Les cours et tutoriels, Contribuez, Les Sources et... l'Aide en ligne !!!
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 28/08/2008, 12h30   #13 (permalink)
Membre du Club
 
Date d'inscription: juillet 2008
Messages: 93
Par défaut

Merci ça marche très bien.
frisou65 est déconnecté   Envoyer un message privé Réponse avec citation
Réponse

Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Microsoft Office > Excel > VBA Excel

 
Offres d' emploi informatique sur Lesjeudis.com


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non
Navigation rapide