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 :

Fonction renvoyant un tableau


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2013
    Messages : 3
    Par défaut Fonction renvoyant un tableau
    Bonjour à tous,

    je suis en train de développer une fonction permettant de mettre à jour des données dans un graphique (secteur) et étant donnée le nombre important de graphique que je dois traité j'ai préféré lui dédier une fonction spécifique.

    je passe toutes la partie de recherche des valeurs et des calculs qui amène au résultat de ma fonction, ma fonction renvoi une variable tableau avec 6 valeurs.

    la procédure appel la fonction et met à jour les valeurs du graph correspondant cependant lorsque je vérifie mon graph après l’exécution de ma procédure, j'ai une valeur de trop affiché et elle sont décalé par rapport à ce que j'attend.

    Quelqu'un pourrait-il m'expliqué pourquoi ma fonction renvoie une valeur de trop SVP

    je vous met la procédure qui appel la fonction et la fonction :

    Procédure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub Centreur()
    'Calcul la répartition des temps pour la fabrication d'un centreur
    Const CritèreFiltre As String = "CSID001", ColonneFiltre As Integer = 5
    Const Article As String = "*centreur*", Graph As String = "Graphique 14"
     
    Worksheets("TDB").Activate
    ActiveSheet.ChartObjects(Graph).Activate
    With ActiveChart
        .SeriesCollection(1).Values = CalculTaux(Article, ColonneFiltre, CritèreFiltre)
    End With
    Worksheets("TDB").Activate
    End Sub
    et la fonction Alléger
    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
    Function CalculTaux(Recherche As String, Colfiltre As Integer, CritèreFiltre As String) As Variant
    For i = 1 To nbLigne
        Set Cellule = ActiveSheet.Columns(ColOF).Cells.Find(what:=OF(i))
        If Not Cellule Is Nothing Then
            tps(1) = tps(1) + Cells(Cellule.Row, 6) 'somme les temps de prod
            tps(2) = tps(2) + Cells(Cellule.Row, 7) 'somme les temps de regalage
            tps(3) = tps(3) + Cells(Cellule.Row, 9) 'somme les temps de pannes
            tps(4) = tps(4) + Cells(Cellule.Row, 10) 'somme les temps d'arret
            tps(5) = tps(5) + Cells(Cellule.Row, 14) 'somme les temps d'Etat CN prete
            tps(6) = tps(6) + Cells(Cellule.Row, 15) 'somme les temps de attente
        End If
    Next i
     
    CalculTaux = tps()
    End Function

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    258
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 258
    Par défaut
    Je te propose de vérifier la chose suivante.
    ton graphique utilise une collection
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     .SeriesCollection(1).Values
    La grande différence entre une collection et un tableau est que l'abscisse de la première donnée d'une collection est 0 contrairement à un tableau qui commence à 1

    Ainsi, Excel est un tableau donc la première ligne porte le numéro 1

    Je te propose d'essayer de commencer tes calculs Tps à 0 au lieu de 1

    tps(0)=....

    jusqu'à 5 au lieu de 6.

    Christophe

  3. #3
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Bonjour,

    personne ne pourrait objectivement te répondre car le code présenté est incomplet
    ou il y a sucrage de fraises dans le nom des variables ‼
    • Ligne n°2 de la fonction : nbLigne !


    • Ligne n°3 : ColorOF & OF !

    Tu peux donc t'en sortir seul en posant un point d'arrêt et en vérifiant le contenu des variables,
    utiliser aussi le mode pas à pas (touche F8).

    Effectivement si la variable tableau commence à l'indice zéro, facilement vérifiable en mode pas à pas …

Discussions similaires

  1. [VBA-E] Fonction renvoyant un tableau
    Par glycerine dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 26/03/2013, 23h27
  2. Fonction renvoyant un tableau VB5
    Par jaymzwise dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 28/08/2007, 16h01
  3. Fonction renvoyant un tableau :
    Par spyk dans le forum Delphi
    Réponses: 3
    Dernier message: 01/09/2006, 16h32
  4. [VB6] [Syntaxe] Fonction renvoyant un tableau d'objets
    Par Troopers dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 18/10/2002, 16h33
  5. fonction renvoyant un tableau en argument
    Par Jones dans le forum Langage
    Réponses: 6
    Dernier message: 30/09/2002, 19h20

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