Graphe 'dynamique' avec Excel

Tophe_garage Messages postés 7 Date d'inscription lundi 10 avril 2006 Statut Membre Dernière intervention 11 avril 2006 - 10 avril 2006 à 09:36
Tophe_garage Messages postés 7 Date d'inscription lundi 10 avril 2006 Statut Membre Dernière intervention 11 avril 2006 - 11 avril 2006 à 08:27
Bonjour, pour mon premier post, je vais vous faire part d'un gros problème : je vous explique.
Dans le cadre d'un stage, on m'a demandé de developper une petite macro Excel permettant de tracer des graphes de temps d'arrets de chaine de production.

Les données sources sont extraites depuis une base de données Access. Le nombre de colonnes est toujours le meme (19), cependant le nombre de lignes est variable.

Pour créer le graphe j'ai fait une macro. Cependant, avant de faire ce graphe, j'effectue d'abbord une selection, un filtre pour pouvoir séparer les differentes 'ailes' de production. Jusqu'a la pas de problèmes. Mais mon soucis est de dimmensionner mon graphe et ma selection de données en fonction du nombre de lignes présentes dans le tableau.
J'ai bien essayé les fonction LBound et UBound mais rien a faire, erreur de compilation etc..

J'ai trouvé une fonction me donnant le dernier indice de mon tableau ( Sheets("F_Liste_des_MTBF").Range("A65536").End(xlUp).Row ) qui fontionne mais je n'arrive pas a inserer ce résultat dans la selection des données (sur cette ligne ci :

ActiveChart.SeriesCollection(1).XValues = "=F_Liste_des_MTBF!R28C12:R43C12"

c'est a dire remplacerle 43 par la valeur renvoyée par la premiere fonction.

Donc mes questions sont :

-comment inserer ce résultat ?
-comment obtenir la valeur de la borne haute d'un tableau sans utiliser UBound ?

Merci

8 réponses

jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
10 avril 2006 à 09:43
Salut,

Je ne sais pas si ceci peux t'aider mais:

Est ce que Sheets("F_Liste_des_MTBF").Range("A65536").End(xlUp).Row te renvoie un nombre si oui essaie un truc du style:

Dim NumLigne as long
NumLigne = Sheets("F_Liste_des_MTBF").Range("A65536").End(xlUp).Row

ActiveChart.SeriesCollection(1).XValues = "=F_Liste_des_MTBF!R28C12:R" & NumLigne & "C12"

Je n' ai pas testé du tout et ne suis pas sur du résultat, mais ça s'essaye quand même.

@+, Julien
Pensez: Moteur de Recherche, Réponse Acceptée
0
Tophe_garage Messages postés 7 Date d'inscription lundi 10 avril 2006 Statut Membre Dernière intervention 11 avril 2006
10 avril 2006 à 10:27
En effet ca fonctionne très bien.

Par contre, je cherche toujours une fonction autre que UBound qui me donne l'index de la première ligne.

Merci julien.
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
10 avril 2006 à 10:31
Re,

En revanche pour ce point la, il faudrait un peu plus d'explication car je ne comprends pas ce qui ne te va pas avec Ubound
Si tu utilises Ubound sur une variable de type tableau ca fonctionne tres bien non?

Que veux tu faire exactement.

@+, Julien
Pensez: Moteur de Recherche, Réponse Acceptée
0
Tophe_garage Messages postés 7 Date d'inscription lundi 10 avril 2006 Statut Membre Dernière intervention 11 avril 2006
10 avril 2006 à 10:45
En fait, je ne vois pas bien la syntaxe a utiliser avec cette variable. Sachant que la feuille sur laquelle se trouve les valeurs s'appelle
" F_Liste_des_MTBF ", je ne vois pas comment faire. Pourtant c'est pas faute de ne pas avoir essayé.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Tophe_garage Messages postés 7 Date d'inscription lundi 10 avril 2006 Statut Membre Dernière intervention 11 avril 2006
10 avril 2006 à 10:47
Si je tape : premiereligne = UBound(F_Liste_des_MTBF, 1)

il me dit "incompatibilité de type".
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
10 avril 2006 à 10:54
Re,

C est normal (sauf erreur de ma part), Tu ne peux pas faire Ubound D un feuille.

Mais ceci:
Sheets("F_Liste_des_MTBF").Range("A65536").End(xlUp).Row

NE resoud pas le probleme alors? (excuse le Lundi matin j ai toujours un peu de mal a comprendre

@+, Julien
Pensez: Moteur de Recherche, Réponse Acceptée
0
Tophe_garage Messages postés 7 Date d'inscription lundi 10 avril 2006 Statut Membre Dernière intervention 11 avril 2006
10 avril 2006 à 11:00
Non, car Sheets("F_Liste_des_MTBF").Range("A65536").End(xlUp).Row me renvoie l'index de la dernière ligne et non celui de la première ligne.

Du coup, je dois laisser tomber UBound. pfff

Sinon, la parade serait de trouver une fonction qui me donne le nombre de lignes non vides dans une feuille (ou sur une colonne ca peut marcher aussi).

D'ores et déja merci.
0
Tophe_garage Messages postés 7 Date d'inscription lundi 10 avril 2006 Statut Membre Dernière intervention 11 avril 2006
11 avril 2006 à 08:27
Bon bah Up. La question reste posée. Il me faudrait donc un équivalent à UBound mais que l'onpuisse appliquer à tout une feuille.

Merci.
0
Rejoignez-nous