Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
866 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Problème de positionnement de graphique sous excel en vba(URGENT)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème de positionnement de graphique sous excel en vba(URGENT)

n°703517
Nkubi
Posté le 20-04-2004 à 10:48:02  profilanswer
 

Bonjour,
Mon problème est que dans une procédure je crée deux graphiques et bien sûr ils se mettent l'un au dessus de l'autre.
 
Donc j'aimerais savoir comment les mettre l'un à côté de l'autres (en les mettant tous les deux à la même taille) et avec le premier tout à droite.
 
Comme cette procédure je la rappelle ensuite je voulais savoir comment placer les deux prochains graphiques (en les mettant l'un à côté de l'autre) juste en dessous des grafs existant ????
le tout en vba évidemment :) .
 
Merci d'avance.


Message édité par Nkubi le 20-04-2004 à 13:51:48
mood
Publicité
Posté le 20-04-2004 à 10:48:02  profilanswer
 

n°703688
itawa
Posté le 20-04-2004 à 12:30:19  profilanswer
 

Bonjour,
 
En jouant avec les parametres Top left, width et height des graphiques:
 
With Sheets(1)
    .Shapes("Chart 1" ).Left = 0
    .Shapes("Chart 1" ).Top = 0
    .Shapes("Chart 2" ).Top = 0
    .Shapes("Chart 2" ).Left = .Shapes("Chart 1" ).Width + 5
    .Shapes("Chart 3" ).Top = .Shapes("Chart 1" ).height+ 5
    .Shapes("Chart 3" ).Left = 0
    .Shapes("Chart 4" ).Top = .Shapes("Chart 2" ).height+ 5
    .Shapes("Chart 4" ).Left = .Shapes("Chart 3" ).Width + 5
End With
 
I.

n°703764
Nkubi
Posté le 20-04-2004 à 13:44:16  profilanswer
 

Ok merci je ne savais pas que c'était shapes("nom du graphe" ), je pensais que cétait charts.
Mais le problème c'est que pour le graph 3 et le graphe 4 c'est que ils seront mis par exemple dans un mois (et ça peut-être tous les mois) par ma procédure alors comment je peux savoir le nom de mon dernier graphe et ainsi faire le Width+5

n°703792
itawa
Posté le 20-04-2004 à 14:03:30  profilanswer
 

Bonjour,
 
Quand tu ajoutes un graphique, si c'est par VBA, nomme le immediatement:
 
Chart.Add
ActiveChart.name = "graph1"
 
Ainsi si tout les mois tu ajoute deux graphs, il te suffit d'incrementer un numeros, ou de donner comme nom la date, ou je ne sais trop quel systeme, et ca te permet ainsi de ne deplacer que les graphiques correspondant en fonction des precedents.
 
I.
 
I.

n°703802
Nkubi
Posté le 20-04-2004 à 14:18:29  profilanswer
 

Merci Itawa j'avais mis ma ligne "ActiveChart.name=""" tout à la fin de mon truc c'est pour ça qu'il me mettait une erreur mais maintenant ça a l'air d'être bon.
 
Justement je ne voyais pas de systeme pour me repérer avec les graphes déjà créer. A moins qu'il soit possible de créer des variables qui ne se réinitialise pas à chaque appelle de procédure???
ET je ne peux pas mettre la date parce que l'utiliateur a aussi la possibilité de faire un graphe d'un mois de n'importe quelle année donc elle ne serait pas très indicative. Et si je mets un numéro comment savoir quel numéro j'ai mis en dernier, il faudrait que je "parcours" mes graphes jusqu'au dernier.
 
Donc je suis un peu bloqué sur ce problème aussi.

n°703966
JihemAir
Je sais pas
Posté le 20-04-2004 à 15:33:19  profilanswer
 

Petite procédure qui parcourt toutes les feuilles du classeur et tous les graphes de chaque feuille et qui renvoie le nombre de graphes du classeur. Peut-être utile...
 
Public Sub ScanGraph(lNbChart As Long)
Dim shTemp As Worksheet
Dim graphTemp As ChartObject
 
    For Each shTemp In ThisWorkbook.Sheets
        For Each graphTemp In shTemp.ChartObjects
            lNbChart = lNbChart + 1
        Next graphTemp
    Next shTemp
     
    Set shTemp = Nothing
    Set graphTemp = Nothing
     
End Sub


---------------
J'ai un message.."Cliquez OK pour continuer."...Qu'est ce que je fais ?
n°704008
Nkubi
Posté le 20-04-2004 à 15:49:05  profilanswer
 

en fait ITAWA : Chart.Add  
                ActiveChart.name = "nomgraf"  
ça ne marche pas en tout cas chez moi.
 
Quelqu'un peut me dire comment nommer un graphique???
je cherche depuis longtemps et tout ce que j'ai trouvé ne marche pas (J'EN AI MAAAARRRRREEEE....)

n°704515
itawa
Posté le 21-04-2004 à 06:53:09  profilanswer
 

Bonjour,
Excuse moi, c'est moi qui ai fait une petite faute de frappe:
 
Charts.Add '<<<Avec un "s">>>
ActiveChart.name = "nomgraf"
 
I.

n°704525
Nkubi
Posté le 21-04-2004 à 08:06:22  profilanswer
 

En fait Itawa quand je l'avais essayé j'avais mis le 'S'. Là je viens de réessayer mais ça ne marche pas, le nom reste graphiqueXX.  
Je commence à en avoir marre j'ai essayé des tas de trucs et ça ne marche pas.

n°704792
Nkubi
Posté le 21-04-2004 à 11:45:17  profilanswer
 

JihEmAir t'as fonction est vraiment bien et j'ai voulue la changer un petit peu pour qu'elle puise traiter aussi qu'une seule feuille dont le nom est le paramètre et j'ai donc écrit:
 
Public Function ScanGraph(lNbChart As Integer, Optional feuille)
Dim shTemp As Worksheet
Dim graphTemp As ChartObject
    If IsMissing(feuille) Then
        For Each shTemp In ThisWorkbook.Sheets
            For Each graphTemp In shTemp.ChartObjects
                lNbChart = lNbChart + 1
            Next graphTemp
        Next shTemp
     
        Set shTemp = Nothing
        Set graphTemp = Nothing
        ScanGraph = lNbChart
    Else
        With Worksheets(feuille)
        For Each graphTemp In .ChartObjects
                lNbChart = lNbChart + 1
        Next graphTemp
         
        End With
         
        Set shTemp = Nothing
        Set graphTemp = Nothing
        ScanGraph = lNbChart
    End If
End Function
 
et comme ça n'a pas l'air de marcher j'ai besoin d'aide. J'ai un with dans le else parce que le deboggeur m'a dit qu'il manquait un with mais sinon je ne sais pas quoi mettre pour traiter juste une seule feuille.
 
MERCI.

mood
Publicité
Posté le 21-04-2004 à 11:45:17  profilanswer
 

n°704821
JihemAir
Je sais pas
Posté le 21-04-2004 à 12:08:19  profilanswer
 

Il faut passer le nom de la feuille à traiter en paramètre à la procédure. Il n'y a pas besoin de With. Il suffit de tester si le paramètre nom_de_la_feuille (strSheetName) est vide.
 
Public Sub ScanGraph(lNbChart As Long, Optional strSheetName As String)
Dim shTemp As Worksheet
Dim graphTemp As ChartObject
 
    ' Teste si un nom est passé à la procédure.
    ' si pas de nom, on traite toutes les feuilles
    If strSheetName = "" Then
        For Each shTemp In ThisWorkbook.Sheets
            For Each graphTemp In shTemp.ChartObjects
                lNbChart = lNbChart + 1
                ' Ici, on remomme le graphique
                graphTemp.Name = "Chart" & lNbChart
            Next graphTemp
        Next shTemp
    Else
' Une seule feuille qu'on récupère dans shTemp
        Set shTemp = ThisWorkbook.Sheets(strSheetName)
        For Each graphTemp In shTemp.ChartObjects
            lNbChart = lNbChart + 1
            ' Ici, on renomme le graphique
            graphTemp.Name = "Chart" & lNbChart
        Next graphTemp
    End If
     
    Set shTemp = Nothing
    Set graphTemp = Nothing
     
End Sub
 
 
J'espère avoir aidé......


---------------
J'ai un message.."Cliquez OK pour continuer."...Qu'est ce que je fais ?
n°705093
Nkubi
Posté le 21-04-2004 à 15:25:06  profilanswer
 

Merci JihEmAir, ça marche en fait je crois que mon ancienne version marchait quand même mais que je l'utilisait mal mais maintenant j'utilise quand même la tienne.
En plus grâce à ta fonction j'ai résolu tous mes problèmes vu que j'ai changé mon algo et donc maintenant mon problème de renommer un graphique ne me sert plus à rien.
 
Encore merci.

n°706154
Nkubi
Posté le 22-04-2004 à 16:39:05  profilanswer
 

J'ai une autre question maintenant pas très en rapport avec le reste.
 
Alors je voudrais créer des graphiques et les mettre directement dans un autre classeur, dans une feuille donnée. Mais je ne sais pas si c'est possible dasn les options de créations du graphiques (le tout en vba évidemment).
 
Si c'est pas possible, j'ai essayé de couper ces graphiques et de les mettres où je voulais, mais le problème c'est qu'apparemment soit il ne sont pas collé en tant que graphique (mais en tant qu'image) soit leur nom change et donc je n'arrive pas à en faire ce que je veux après.
 
Quelqu'un pour m'aider????
 
Merci.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Problème de positionnement de graphique sous excel en vba(URGENT)

 

Sujets relatifs
Affichage & Temporisation, problème[BO] Pb : Exportation des plusieurs rapports au format Excel
Problème de lecture de fichier temporaireprobleme avec scanf
[debutant] Probleme avec include iostream sous VC++Probleme bizard sur les pointeurs en C !
Ouvrir un mail outlook depuis un bouton Excel/VBA ???Probleme avec les dieses !
[C++] Compilateur C++ .NET 2003 / SDL > Problème à la compilationInterface graphique Mysql
Plus de sujets relatifs à : Problème de positionnement de graphique sous excel en vba(URGENT)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR