Placer des graphiques vba (urgent)

Fermé
charly - 25 mars 2011 à 10:38
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 - 25 mars 2011 à 15:37
Bonjour,

je souhaiterai positionné mais graphique sur un feuil sachant que le nombre de graphique dépend du choix de l'utilisateur, j'ai donc fais ce code :

Sub Dimensions_Graphiques()
Dim Nbre_Graphe As Byte
Dim x As Integer
Dim y As Integer
    x = 1
    y = 1
    For Nbre_Graphe = 1 To ActiveSheet.ChartObjects.Count
        With ActiveSheet.Shapes(Nbre_Graphe)
            .Left = Cells(y, x).Left
            .Top = Cells(y, x).Top
            .Width = 450 'la largeur voulue
            .Height = 300 'la hauteur voulue
            x = x + 8
            y = y + 25
        End With
    Next Nbre_Graphe
End Sub


Mais j'ai un message d'erreur comme quoi la méthode cells ne fonctionne pas, quelqu'un aurait une idée?



10 réponses

lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
Modifié par lermite222 le 25/03/2011 à 12:50
Bonjour,
Plante directement ou après en avoir positionner quelque un. ?
Ta macro n'a pas d'erreur. Sauf que tu met tes graph en diagonale ? c'est voulu?
Après 10 graph, si tu est en Excel 97-2003 ça plante pour dépassement capacité.

A+
Toute la connaissance du monde ne peu tenir dans une seul tête (moi)
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
0
non ce n'est pas l'effet voulu ^^ je me suis rendu compte de mon erreur quand je l'ai fais foctionner. sauriez-vous coment faire pour que les graph s'affiche dans un cette ordre : le graph qui arrive en premier se positionne en haut a gauche, le 2e en haut à droite le 3e en dessou a gauche le 4e sous le 2e etc...?

J'ai résolu l'autre problème sinon, j'ai déclarer un variable as range et je mis sheets(feuil3).cells(x,y) dans cette variable
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
Modifié par lermite222 le 25/03/2011 à 13:48
    y = y + 25 : If Y > 50 then Y = 25 : x = x + 8

Pour 2 graph par ligne
et supprimer x=x+8
A+

Toute la connaissance du monde ne peu tenir dans une seul tête (moi)
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
0
celà ne fonctionne passa place correctement le deuxieme, puis ensuite sa saute pas mal de lignes puis sa fais un ligne de 3 graphiques et sa en met ensuite un juste en dessou du graphique du milieu dans la ligne de 3
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
25 mars 2011 à 14:21
Un peu de réflexion Stp
Y a une erreur..
 y = y + 25 : If Y > 50 then Y = 1 : x = x + 8

Et si ça va pas remet le code tel qu'il est maintenant.
0
on s'est répondu en même temps. Voir message ci-dessous
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
c'est bon c'est réglé vous aviez juste inversé les lignes et les colonnes, voici le code

Dim Nbre_Graphe As Byte
Dim x As Integer
Dim y As Integer
Dim caspos As Range

x = 1
y = 1
    For Nbre_Graphe = 1 To ActiveSheet.ChartObjects.Count
        With ActiveSheet.Shapes(Nbre_Graphe)
            Set caspos = Feuil3.Cells(y, x)
            .Left = caspos.Left 'position des graphiques
            .Top = caspos.Top 'position des graphiques
            .Width = 450 'la largeur voulue
            .Height = 300 'la hauteur voulue
        End With
        x = x + 8: If x > 16 Then x = 1: y = y + 25
    Next Nbre_Graphe


mais j'ai une réaction bisarre. les deux premiers graph se placent correctement, mais je reste et décalé de 25 suivant y comme si on faisait y=y+50 au lieu de y=y+25

en tous cas merci beaucoup!
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
Modifié par lermite222 le 25/03/2011 à 15:01
Comprend pas, décalage de quoi ?
Avec le code que tu met, x = les colonnes et y = les lignes...
les 2 premiers sur A1 et et H1
suivant sur A25 et H25, etc..
Edit : Et je viens de tester, ça fonctionne impec.
Edit 2 :
Je crois que j'ai compris.
x = 1 
y = 1 
    For Nbre_Graphe = 1 To ActiveSheet.ChartObjects.Count 
        With ActiveSheet.Shapes(Nbre_Graphe) 
             
            .Left = ActiveSheet.Cells(y, x).Left 'position des graphiques 
            .Top = ActiveSheet.Cells(y, x).Top 'position des graphiques 
            .Width = 450 'la largeur voulue 
            .Height = 300 'la hauteur voulue 
        End With 
        x = x + 8: If x > 16 Then x = 1: y = y + 25 
    Next Nbre_Graphe


quand tu met Feuil3 ?? tu travail sur quel feuille ?
Feuil3 c'est le N° d'ordre de la feuille et Sheets("Feuil3") c'est le nom de la feuille.

Toute la connaissance du monde ne peu tenir dans une seul tête (moi)
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
0
Non çà devrai être A26 et H26 (car y=1 au début) sauf que mon graphique se place en A52. J'ai fais un test "step by step" et y est bien égale à 26 et pourtant le graphique se le place en A52. par contre la ligne du dessou se place bien juste après. c'est très bisarre et je ne comprends pas. je suis novice j'ai comencé VBA il y a 3 semaines au début de mon stage en entreprise.
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
25 mars 2011 à 15:14
C'est toi qui inverse les lignes et les colonnes..
Prend l'exemple de mon code, il fonctionne.
PS : Avec les dimensions que tu donne au graph le positionnement sur les lignes step by step est bon avec 25 et x avec 8
donc, comme dis plus haut...
les 2 premiers sur A1 et et i1
suivant sur A25 et i25, etc..
0
je viends de re essayer avec votre code et je comfirme que vous inversez les ligne et les colonnes, avec votre code 2 lignes par colone or je veux 2 colonne par ligne.

et que ce soit avec votre code ou le mien j'ai toujours ce décalage entre la 1er ligne de graphiques et la 2e
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
Modifié par lermite222 le 25/03/2011 à 15:38
Un exemple ??
J'ai mis le raccourci Ctrl+P pour les placer.
Toute la connaissance du monde ne peu tenir dans une seul tête (moi)
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
0