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 :

Problème de fonction [XL-2002]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 50
    Par défaut Problème de fonction
    Bonjour tout le monde,

    Je commence à programmer sous VBE et je rencontre mes premières erreurs!

    Je cherche à créer un graphique qui apparaitrait dans une autre feuille du même book. J'ai donc la feuille "Trend Curves" qui regroupe les données pour le graphique et un bouton (BtCurve)qui permet de tracer la courbe.

    Voici le code:

    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
    63
    64
    65
    66
    Public Sub BtCurve_Click()
     
    Dim objChart As Chart, objRange As Range
    Dim I As Integer, J As Integer, sMsg As String
    Dim Rslt As Variant
    Dim ESheet As Boolean
    Dim NberSheet As Integer
     
        'Définition des constantes
    EquipmentName = Worksheets("Trend Curves").Range("E41").Value
    XTitle = Worksheets("Trend Curves").Range("M40").Value
    YTitle = Worksheets("Trend Curves").Range("N40").Value
    Title = YTitle & "=f(" & XTitle & ")"
     
        'Selectionne les données voulues
        Set objRange = Worksheets("Trend Curves").Range(Worksheets("Trend Curves").Cells(40, 14), Worksheets("Trend Curves").Cells(Rows.Count, 15))
     
        Set objChart = ThisWorkbook.Charts.Add
     
        'Vérification de l'existence d'une feuille du même nom
     
        ESheet = fExiste(Title)
        'MsgBox fExiste(Title)
     
        If ESheet = True Then
                    Worksheets.Application.DisplayAlerts = False
                    Sheets(Title).Delete
                    objChart.Name = Title
                    Worksheets.Application.DisplayAlerts = True
        Else
                    objChart.Name = Title
        End If
     
        'Mise en page du graphique
     
        objChart.Tab.ColorIndex = 6
        objChart.ChartType = xlXYScatter
     
        objChart.SeriesCollection.Add objRange, xlColumns, True, True
     
        With objChart
            .HasTitle = True
     
            With .ChartTitle
                .Characters.Text = " " & EquipmentName & "      " & YTitle & " = f( " & XTitle & " )  "
                .Shadow = True
                .Border.Weight = xlHairline
     
            End With
     
            With .Axes(xlValue, xlPrimary)
                .HasTitle = True
                .AxisTitle.Characters.Text = " " & YTitle
     
            End With
     
     
            With .Axes(xlCategory)
                .HasTitle = True
                .AxisTitle.Characters.Text = " " & XTitle
     
            End With
     
        End With
     
    End Sub
    Mon problème se situe au niveau de la vérification de l'existence d'une feuille du même nom. Je fais appel à la fonction fExiste:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Public Function fExiste(SheetName As Variant) As Boolean
     
    Dim Sheet As Excel.Worksheet
     
    For I = 1 To Worksheets.Count
      Set Sheet = Worksheets(I)
      If Sheet.Name = SheetName Then fExiste = True Else fExiste = False
    Next I
     
    End Function
    Mais je n'arrive pas à récupérer la sortie de la fonction qui reste toujours à Faux. Ca ne doit pas être trop compliqué mais je ne m'y connais pas et je rame...

    Merci d'avance

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Par défaut
    Salut Titwou et le forum
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Public Function fExiste(SheetName As string) As Boolean
    application.volatile 
    For I = 1 To Worksheets.Count
      If Worksheets(I).Name = SheetName Then 
         fExiste = True 
         exit function
      endif
    Next I
    End Function
    Il faut arrêter ta fonction quand elle trouve la feuille, sinon, à la feuille suivante ta fonction repasse à faux
    A+

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 50
    Par défaut
    Merci pour ta réponse, c'est vrai que c'est pas bête!

    Et ca y est j'ai compris d'où venait mon erreur: je créais des graphiques ("Charts") et non pas des feuilles ("Sheets")... donc le code de la fonction devient:

    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
    Public Function fExiste(SheetName As Variant) As Boolean
     
    Application.Volatile
     
    For I = 1 To ActiveWorkbook.Charts.Count
     
         If ActiveWorkbook.Charts(I).Name = SheetName Then
         fExiste = True
         Exit Function
     
      End If
     
    Next I
     
    End Function

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. C++ Problème de fonctions et pointeurs
    Par zmatz dans le forum C++
    Réponses: 3
    Dernier message: 01/10/2005, 16h20
  2. [MFC][WINSOCK] Problème avec fonction recv
    Par Le Farfadet dans le forum MFC
    Réponses: 4
    Dernier message: 23/09/2005, 11h00
  3. Problème de fonction
    Par Anduriel dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 26/05/2005, 20h30
  4. Problème avec fonction d'envoie de mail
    Par zyg dans le forum Réseau/Web
    Réponses: 1
    Dernier message: 23/02/2005, 08h48
  5. [Requête] Problème avec fonction "DATE_FORMAT()"
    Par sekiryou dans le forum Requêtes
    Réponses: 4
    Dernier message: 11/01/2005, 21h52

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