Graphique sur USF avec des cellules vides ou textes
#1
Semi pro XLPages

Inscription: 12/06/2008
De Ile de France Sud

Messages: 145

Système d'exploitation:
PC
Version Excel utilisée:
2003 _ 2010
Posté le : 09-05-2012 11h31
 Bonjour à tous
J'essaie d'avoir un graphique dans l'USF, pour cela j'ai le code suivant :

Option Explicit

Private Sub CommandButton1_Click()
Unload Me
End Sub

Private Sub UserForm_Initialize()
    'Utilisez l'objet WCChart pour la bibliothèque OWC9.
    'Utilisez l'objet ChChart dans les bibliothèques OWC10(Office 2002) et OWC11(Office 2003).

    Dim a As Integer
    Dim B As Range

' 1ère ligne du graphique
    Dim C As Object
    Dim Cht
' 2ème ligne du graphique qui existe dans le projet, mais pas dans l'exemple
    Dim C2 As Object
    Dim Cht2
   
    Dim firstaddress
    Dim G As Object
    Dim i As Integer
    Dim ligne As Long
    Dim nblign As Integer
    Dim plage As Range
   
' 1ère ligne du graphique
    Dim S1 As Object
    Dim TabX() 'As String
    Dim TabY() 'As ??????
' 2ème ligne du graphique qui existe dans le projet
    Dim S2 As Object
    Dim Tab2X() 'As String
    Dim Tab2Y() 'As ??????
   
a = 0
ligne = 5

    Set plage = Range("E5:E65536")
    nblign = Application.WorksheetFunction.CountA(plage)

' 1ère ligne du graphique
ReDim Preserve TabX(nblign)
ReDim Preserve TabY(nblign)
' 2ème ligne du graphique
ReDim Preserve Tab2X(nblign)
ReDim Preserve Tab2Y(nblign)


With Worksheets("Feuil1").Range("E5:E65536")
' je fais un "find" car dans le projet, les données ne sont pas toutes les lignes
    Set B = .Find("*", LookIn:=xlValues, Lookat:=xlWhole)
    If Not B Is Nothing Then
        firstaddress = B.Address
        Do
            ligne = B.Row
                TabX(a) = Range("E" & ligne).Text
               
' *****************  le problème
' A la place de cette ligne
                TabY(a) = Range("H" & ligne)
'J'ai testé cette ligne
'If IsNumeric(Range("H" & ligne)) Then TabY(a) = Range("H" & ligne) Else TabY(a) = "#N/A"
'mais qui ne fonctionne pas.
' *****************
               
            a = a + 1
            Set B = .FindNext(B)
        Loop While Not B Is Nothing And B.Address <> firstaddress
    End If
End With

    Set C = ChartSpace1.Constants
    Set Cht = ChartSpace1.Charts.Add
   
    With Cht
        .Type = C.chChartTypeScatterLineMarkers
        .HasTitle = True
        .Title.Caption = "Mon graphique"
    End With
   
     Set S1 = Cht.SeriesCollection.Add
         With S1
              .Type = C.chChartTypeLine
              .SetData C.chDimCategories, C.chDataLiteral, TabX
              .SetData C.chDimValues, C.chDataLiteral, TabY
              .DataLabelsCollection.Add
         End With

End Sub
Sur la feuille, les données du graphique sont, samedi 21 est en E5 :
 en  colonne E :
samedi 21 avril 2012
dimanche 22 avril 2012
lundi 23 avril 2012
mardi 24 avril 2012
mercredi 25 avril 2012
jeudi 26 avril 2012
vendredi 27 avril 2012
samedi 28 avril 2012
dimanche 29 avril 2012
lundi 30 avril 2012
mardi 1 mai 2012
mercredi 2 mai 2012
jeudi 3 mai 2012

en colonne H :  
9
5
4
inj       mais pour le graph-exemple de la feuille j'ai saisi =#N/A
8
2
1
5
7
cellule vide      mais pour le graph-exemple de la feuille j'ai saisi =#N/A
cellule vide      mais pour le graph-exemple de la feuille j'ai saisi =#N/A
1
5
mon problème est que j'ai des cellules vides ou texte en colonne H. Le graphique ne cumulant que les données "Value" cela ne fait une courbe que sur les 10 cellules sur les 13.
Si on trace le graphique sur la feuille, les cellules vides, que je transforme en #N/A pour l'exemple, sont 'ignorées" (les 24/4, 30/4 et 1/5), cad que la courbe est tracée du 23/4 au 25/4 et du 29/4 au 2/5 (et ne prend pas en compte les "#N/A" (voir graphique_sur_feuille.jpg)), mais en axe "X" les dates correspondantes existent. 
En VBA, je pensais adapter les cellules en colonne H, qui sont en "texte" ou vides, comme les cellules #N/A, comme ceci :
If IsNumeric(Range("H" & ligne)) Then TabY(a) = Range("H" & ligne) Else TabY(a) = "#N/A"  (ou "Erreur 2042" ou faire référence à une cellule H1=#N/A)
mais qui ne fonctionne pas. 
J'ai l'impression d'avoir une incompatibilité de Type dans "TabY", la cause étant le #N/A ??????
Ce que j'aimerai obtenir en VBA sur l'USF, c'est un graph avec "ignorance" des cellules "vides", "texte".
Merci d'avance pour vos conseils.
Eric










Pièce jointe:
zip graphique_sur_feuille_1.zip   [ Taille: 34.82 Ko - Téléchargements: 451 ]
Hors Ligne
Rapport   Haut 


Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Qui consulte actuellement ce sujet ?   1 Utilisateur(s) anonymes