IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Sélectionner une plage de cellules variables pour faire un graphique?


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    217
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 217
    Points : 66
    Points
    66
    Par défaut Sélectionner une plage de cellules variables pour faire un graphique?
    Bonjour à tous,
    ma macro doit créer un graphique à partir d'une liste de longueur variable.
    Je dois donc faire référence à cette plage,que ej détermine en calculant la dernière ligne du tableau.
    Je n'arrive pas malgré tout à faire référence à cette plage lors de l'insertion du graphique,voici le code que j'utilise et qui ne fonctionne pas:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        'Creation du graphe
        DerniereLigneF2 = FL2.Range("B65535").End(xlUp).Row
         Charts.Add
        ActiveChart.ChartType = xl3DColumnClustered
        ActiveChart.SetSourceData Source:=Sheets("bilan").Range(Cells(2, 1), Cells(2, DerniereLigneF2)), PlotBy _
            :=xlColumns
    me donne une erreur (la méthode Cells de l’objet global a échoué) à ce niveau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ActiveChart.SetSourceData Source:=Sheets("bilan").Range(Cells(2, 1), Cells(2, DerniereLigneF2)), PlotBy _
    Que dois-je écrire pour pouvoir correctement faire référence à ma plage de cellules et insérer mon graphique ?
    Merci d’avance pour vos conseils,
    M

  2. #2
    Nouveau membre du Club
    Inscrit en
    Novembre 2007
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 20
    Points : 27
    Points
    27
    Par défaut graphe
    Bonjour,
    as-tu essayé avec Currentregion ?
    C'est-a-dire que si tu connais la premiere ligne de données,
    tu ecris "1ere_ligne.Currentregion.select" et cela te selectionnera automatiquement toutes les lignes de tongraphique, si j'ai bien compris ton problème.

  3. #3
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    217
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 217
    Points : 66
    Points
    66
    Par défaut
    Citation Envoyé par maleo833 Voir le message
    Bonjour,
    as-tu essayé avec Currentregion ?
    C'est-a-dire que si tu connais la premiere ligne de données,
    tu ecris "1ere_ligne.Currentregion.select" et cela te selectionnera automatiquement toutes les lignes de tongraphique, si j'ai bien compris ton problème.
    Mon souci c'est que ma liste, qui se trouve dans une colonnea une taille variable car elle provient d'u bilan qui est dans ma macro aussi.
    J'ai donc besoin de sélectionner la plage de cellules qui sera dans mon graphique mais avec ma méthode j'obtiens un msg d'erreur.
    Je n'ai pas compris l'utilisation de currentregion comment cela marche?

  4. #4
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    217
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 217
    Points : 66
    Points
    66
    Par défaut
    J'y suis bien arrivé avec CurrentRegion, mais par contre j'ai un souci, c'est-à-dire que lorsque j'exécute ma macro le graphique n'a pas la même aparrence que lorsue j'ai enregistrée ma macro: après exécution mon graphique est tout petit et presque illisible,alors qu'avec l'enregistreur lorsque j'ai fait ça en manuel le graphique était impec,vous pouvez comparer les deux sur le fichier joint ci-dessous (avec ma macro c'est le deuxième).
    Le code de la macro:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    Sub Macro21()
    '
    ' Macro21 Macro
    ' Macro enregistrée le 29/11/2007 par XER5
    '
     
    '
        ActiveCell.CurrentRegion.Select
        ActiveCell.CurrentRegion.Name = "selection"
        Charts.Add
        ActiveChart.ChartType = xl3DColumnClustered
        ActiveChart.SetSourceData Source:=Sheets("bilan").Range("selection"), PlotBy:= _
            xlColumns
        ActiveChart.Location Where:=xlLocationAsObject, Name:="bilan"
        With ActiveChart
            .HasTitle = False
            .Axes(xlCategory).HasTitle = False
            .Axes(xlSeries).HasTitle = False
            .Axes(xlValue).HasTitle = False
        End With
        ActiveChart.Legend.Select
        Selection.Delete
        ActiveChart.Axes(xlCategory).Select
        Selection.TickLabels.Orientation = xlUpward
        Selection.TickLabels.Orientation = xlHorizontal
        ActiveChart.SeriesCollection(1).Select
        ActiveChart.SeriesCollection(1).ApplyDataLabels Type:=xlDataLabelsShowValue, _
            AutoText:=True, LegendKey:=False
        ActiveChart.SeriesCollection(1).DataLabels.Select
        Selection.AutoScaleFont = True
        With Selection.Font
            .Name = "Arial"
            .FontStyle = "Gras"
            .Size = 10
            .Strikethrough = False
            .Superscript = False
            .Subscript = False
            .OutlineFont = False
            .Shadow = False
            .Underline = xlUnderlineStyleNone
            .ColorIndex = 19
            .Background = xlAutomatic
        End With
        ActiveChart.PlotArea.Select
        ActiveChart.SeriesCollection(1).DataLabels.Select
        Selection.AutoScaleFont = True
        With Selection.Font
            .Name = "Arial"
            .FontStyle = "Gras"
            .Size = 10
            .Strikethrough = False
            .Superscript = False
            .Subscript = False
            .OutlineFont = False
            .Shadow = False
            .Underline = xlUnderlineStyleNone
            .ColorIndex = 6
            .Background = xlAutomatic
        End With
        ActiveChart.PlotArea.Select
        ActiveChart.ChartArea.Select
    End Sub
    Qu'ajouter pour avoir une bonne mis ene forme?
    Merci d'avance,
    M
    Images attachées Images attachées  

  5. #5
    Nouveau membre du Club
    Inscrit en
    Novembre 2007
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 20
    Points : 27
    Points
    27
    Par défaut Echelle
    Essaie de jouer avex les propriétés ScaleWidth et ScaleHeight de ton graphique.

    exemple :

    ActiveChart.Scalewidth 1.5, msoFalse, msoScalefromTopLeft
    ActiveChart.Scaleheight 1.5, msoFalse, msoScalefromBottomRight

    Essaie de rajoutter ces 2 lignes à la fin de ton code
    1,5 etant l'echelle et msoScalefromTopLeft,msoScalefromBottomRight la direction vers laquelle tu agrandi ton graphe

    Tiens moi au courant.

  6. #6
    Membre émérite
    Avatar de cb_60
    Homme Profil pro
    Chargé de mission technique
    Inscrit en
    Juillet 2007
    Messages
    1 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Chargé de mission technique
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 253
    Points : 2 375
    Points
    2 375
    Billets dans le blog
    14
    Par défaut
    Bonjour
    regarde si cela te convient?
    L'imagination est plus importante que le savoir.... A . Einstein.
    https://www.developpez.net/forums/blogs/179588-cb_60/
    Merci de cliquer sur pour clore cette discussion.

  7. #7
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    217
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 217
    Points : 66
    Points
    66
    Par défaut
    Citation Envoyé par cb_60 Voir le message
    Bonjour
    regarde si cela te convient?
    Salut,
    effectivement avec tes paramètres mon graphique est "propre".
    Par contre j'aimerais qu'il soit un peu plus grand en largeur,quel paramètre dois-je modifier?
    @maleo: j'ai essayé ta technique mais j'obtiens un message d'erreur au niveau de scalewidth et scaleheight qui ne sont pas reconnus.

  8. #8
    Membre émérite
    Avatar de cb_60
    Homme Profil pro
    Chargé de mission technique
    Inscrit en
    Juillet 2007
    Messages
    1 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Chargé de mission technique
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 253
    Points : 2 375
    Points
    2 375
    Billets dans le blog
    14
    Par défaut
    Bonsoir
    Voici ton fichier
    Pour modifier la grandeur du graph:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
      With ActiveChart.Parent
            .Left = Range("d2").Left 'Position sur ta feuille
            .Top = Range("d2").Top
            .Height = 500 ' hauteur
            .Width = 720 ' largeur
      End With
    J'ai nettoyé un peu la macro

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    Sub Macro21()
    '
    ' Macro21 Macro
    ' Macro enregistrée le 29/11/2007 par XER5
     
    Application.ScreenUpdating = False
        Range("a1").CurrentRegion.Name = "selection"
        Charts.Add
        ActiveChart.Location Where:=xlLocationAsObject, Name:="bilan"
        With ActiveChart
           .ChartType = xl3DColumnClustered
           .SetSourceData Source:=Sheets("bilan").Range("selection"), PlotBy:=xlColumns
           .HasTitle = False
           .HasLegend = False
           .SeriesCollection(1).ApplyDataLabels Type:=xlDataLabelsShowValue, AutoText:=True, LegendKey:=False
           .RightAngleAxes = True
           .HeightPercent = 100
           .Walls.Interior.ColorIndex = xlNone
           .SeriesCollection(1).DataLabels.Font.Size = 10
           .SeriesCollection(1).DataLabels.Font.ColorIndex = 6
           .SeriesCollection(1).DataLabels.Font.Background = xlAutomatic
        End With
        ActiveSheet.ChartObjects(ActiveChart.Parent.Name).Name = "graph_1"
        With ActiveChart.Parent
            .Left = Range("d2").Left
            .Top = Range("d2").Top
            .Height = 500
            .Width = 720
         End With
        Range("a1").Select
     Application.ScreenUpdating = False
    End Sub
    L'imagination est plus importante que le savoir.... A . Einstein.
    https://www.developpez.net/forums/blogs/179588-cb_60/
    Merci de cliquer sur pour clore cette discussion.

Discussions similaires

  1. [XL-2010] Pb pour copier coller une plage de cellule variable
    Par eglantine217 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 08/05/2012, 12h10
  2. pb pour creer une plage de cellules variables
    Par jumpman dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 07/04/2012, 20h02
  3. Sélectionner une plage de cellules variable
    Par LeRogerTroutman dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 30/07/2009, 22h43
  4. Sélectionner une plage de cellules variables
    Par thierry_b dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 17/06/2009, 11h42
  5. Réponses: 2
    Dernier message: 27/09/2006, 19h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo