Rapport de message :*
 

Graphique sur USF avec des cellules vides ou textes

Titre du sujet : Graphique sur USF avec des cellules vides ou textes
par Eric le 09/05/2012 11:31:29

 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