Code graphique à modifier pour exclure cellules vides

Y compris Power BI, Power Query et toute autre question en lien avec Excel
Répondre
j
jfk15
Membre habitué
Membre habitué
Messages : 102
Inscrit le : 28 mai 2015
Version d'Excel : 2013 FR

Message par jfk15 » 7 juin 2015, 08:15

Bonjour,

J'ai pu adapter le code de Jean-Eric (merci à lui) pour faire des graphiques. Afin de l'améliorer encore, j'aurais aimé savoir quoi ajouter afin qu'il ne prenne pas les cellules vides dans la sélection. Vous verrez dans le code ci dessous que les deux plages sélectionnées vont de A1 à A31 et de c1 à c31. Les cellules vides peuvent se trouver sur les dernières cellules (le plus souvent) mais parfois entre deux cellules pleines. Bref, les cellules vides ne sont pas toujours contiguës.
Merci pour votre aide.
Sub graphe31a()
'
' graphe31a Macro

Dim wsData As Worksheet, wsChart As Worksheet
Dim rngChart As Range
Dim objChart As ChartObject
Dim objLE As LegendEntry

ActiveSheet.unprotect Password:="toto"

    Application.ScreenUpdating = False

    Set wsData = Feuil241
    Set wsChart = ActiveSheet

    On Error Resume Next
    wsChart.ChartObjects(1).Delete
    On Error GoTo 0

    Set rngChart = wsData.Cells(3, 1).CurrentRegion ' Attention!...

    Set objChart = wsChart.ChartObjects.Add _
            (Left:=wsChart.Columns("c").Left, _
            Top:=wsChart.Rows(9).Top, _
            Width:=600, _
            Height:=250)

    With objChart.Chart
        .ChartType = xlColumnClustered
        .SetSourceData Source:=Feuil241.Range("A1:A31,C1:C31")
        .HasTitle = True
        .ChartTitle.Text = "MOYENNES E31A"
        .HasLegend = False
    End With

    Set objChart = Nothing
    Set rngChart = Nothing
    Set wsChart = Nothing: Set wsData = Nothing
ActiveSheet.protect Password:="toto", DrawingObjects:=False, Contents:=True, Scenarios:=True

End Sub
Avatar du membre
James007
Fanatique d'Excel
Fanatique d'Excel
Messages : 12'007
Appréciations reçues : 421
Inscrit le : 30 août 2014
Version d'Excel : 2007 EN

Message par James007 » 7 juin 2015, 09:21

Bonjour,

Il existe beaucoup de solutions différentes pour règler cette question ... :wink:

Dans ta feuille, tu peux utiliser la fonction NA

https://support.office.com/fr-ch/articl ... bd9bb6b47c
A+

:)

Quand on n’a qu’un marteau, tous les problèmes deviennent des clous…
Avatar du membre
Jean-Eric
Fanatique d'Excel
Fanatique d'Excel
Messages : 16'718
Appréciations reçues : 703
Inscrit le : 27 août 2012
Version d'Excel : 365 Personnel

Message par Jean-Eric » 7 juin 2015, 09:55

Bonjour,
A tester et à adapter en conséquence. ;;)
Cdlt.
xlp - jfk15 essai graphique cellules vides.xlsm
(20.43 Kio) Téléchargé 21 fois
Private Sub CommandButton1_Click()
Dim ws As Worksheet
Dim lRow As Long
Dim rngX As Range, rngY As Range
Dim objChart As ChartObject

    Set ws = ActiveSheet
    
    On Error Resume Next
    ws.ChartObjects(1).Delete
    On Error GoTo 0

    With ws
        lRow = .Cells(Rows.Count, 1).End(xlUp).Row
        Set rngY = .Range(.Cells(2, 3), .Cells(lRow, 3)).SpecialCells(xlCellTypeConstants)
        Set rngX = rngY.Offset(, -2)
        Set objChart = .ChartObjects.Add(250, 60, 400, 250)

        With objChart.Chart
            .ChartType = xlColumnStacked
            With .SeriesCollection.NewSeries
                .Values = rngY
                .XValues = rngX
            End With
        End With
    End With
    
    Set objChart = Nothing
    Set rngX = Nothing: Set rngY = Nothing
    Set ws = Nothing

End Sub
Jean-Eric

Je ne réponds pas aux M.P. non sollicités.
j
jfk15
Membre habitué
Membre habitué
Messages : 102
Inscrit le : 28 mai 2015
Version d'Excel : 2013 FR

Message par jfk15 » 7 juin 2015, 11:45

Merci. je vais essayer d'adapter cela.
Avatar du membre
Jean-Eric
Fanatique d'Excel
Fanatique d'Excel
Messages : 16'718
Appréciations reçues : 703
Inscrit le : 27 août 2012
Version d'Excel : 365 Personnel

Message par Jean-Eric » 7 juin 2015, 13:15

Re,
Prends ton temps, et si tu as des difficultés, n'hésite pas à joindre un fichier. ::D
Cdlt.
Jean-Eric

Je ne réponds pas aux M.P. non sollicités.
j
jfk15
Membre habitué
Membre habitué
Messages : 102
Inscrit le : 28 mai 2015
Version d'Excel : 2013 FR

Message par jfk15 » 7 juin 2015, 14:07

Merci Jean Eric.
Tu sais il y a encore seulement qques jours, j'avais zéro connaissance (en VBA) donc j'essaie de m'accrocher. il faut donc que je lise le code que vous fournisser, que j'essaie de le comprendre et ensuite que je vois là où je dois modifier des trucs.
Pour chaque modification que j'apporte je fais des recherches sur google pour le langage, puis j'écris. J'oublie toujours des "", des ; des , où je ne sais quoi.. Donc je relis et je relis....
En // à cela, je fais des macros avec l'enregistreur quand c'est relativement simple. J'arrive même à en écrire qqunes aujourd'hui (très simple).

MAIS TOUT CELA SERAIT IMPOSSIBLE SANS VOTRE AIDE.

Vraiment un GRAND MERCI car j'ai un projet à coeur en ce moment et j'y passe toutes mes journées en plus du boulot et quand je vois tout ce que vous faites vous aussi... Chapeau.
Avatar du membre
Jean-Eric
Fanatique d'Excel
Fanatique d'Excel
Messages : 16'718
Appréciations reçues : 703
Inscrit le : 27 août 2012
Version d'Excel : 365 Personnel

Message par Jean-Eric » 7 juin 2015, 19:05

Re,
Si tu travailles avec Office 2013, l'aide VBA est désormais dans les nuages. :mrgreen:
Un lien pour faire tes courses. Les aides sont en langue anglaise, mais bon...
https://www.microsoft.com/en-us/downloa ... x?id=40326
Sinon, un site incontournable pour tes débuts :
http://boisgontierjacques.free.fr/
Il en existe évidemment d'autres...
Cdlt.
Jean-Eric

Je ne réponds pas aux M.P. non sollicités.
j
jfk15
Membre habitué
Membre habitué
Messages : 102
Inscrit le : 28 mai 2015
Version d'Excel : 2013 FR

Message par jfk15 » 8 juin 2015, 23:40

Merci jean Eric pour tes liens.
Cdt
Avatar du membre
Jean-Eric
Fanatique d'Excel
Fanatique d'Excel
Messages : 16'718
Appréciations reçues : 703
Inscrit le : 27 août 2012
Version d'Excel : 365 Personnel

Message par Jean-Eric » 9 juin 2015, 07:51

Bonjour,
Toujours à essayer d'adapter le code envoyé le 7 juin?
Cdlt.
Jean-Eric

Je ne réponds pas aux M.P. non sollicités.
j
jfk15
Membre habitué
Membre habitué
Messages : 102
Inscrit le : 28 mai 2015
Version d'Excel : 2013 FR

Message par jfk15 » 9 juin 2015, 08:11

Bonjour,
Pour l'instant non car le rendu visuel est tout à fait exploitable en l'état. En plus, dans mes formules j'avais prévu une formule "si" qui renvoyait à un "" donc le graphique reste relativement propre. De plus, ce projet suit les résultats sur 3 ans. par conséquent, il y a 1 chance sur x (valeur importante) que la valeur de la cellule reste vide. Donc dans le temps je me suis posé un souci inutilement.
Merci

Non là j'essaie
http://forum.excel-pratique.com/excel/f ... 65190.html

Enfin c'est trop compliqué pour moi. A la limite je suis capable de faire la macro d'un graphique pour un individu pour un niveau mais il faut que je la copie/colle autant de fois qu'il y a de possibilités en changeant à chaque fois les paramètres... Autant dire un travail de fou.....
Répondre
  • Sujets similaires
    Réponses
    Vues
    Dernier message