Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 30/06/2009, 12h04   #1 (permalink)
Candidat au titre de Membre du Club
 
Date d'inscription: juin 2009
Messages: 24
Par défaut Plage de données conditionnée pour graphique

Bonjour à tous,
J'aurais besoin d'un coup de main s'il vous plait. En effet, je souhaite réaliser un graphique sachant que l'étendue de la plage de données que doit traiter le graphique n'est pas connue.
En fait en fonction des données dans le fichier nous allons avoir plus ou moins de lignes à traiter dans le graphique.
J'ai donc cherché à créer une variable (LignesTableau) qui compte combien il y a de lignes dans mon tableau pour trouver la fameuse étendue (le + 4 est du au fait qu'il y ai 4lignes de passées pour le titre qui viendra après)
Or VBA n'a pas l'air d'aimer ma syntaxe (celle que je vous ai mis en rouge).
Je pense que je vais avoir le même probleme pour la légende des abscisses en vert j'ai "=Calcul!R6C1:R125C1" et il me faudrait un truc du genre "=Calcul!R6C1:RLignesTableauC1".
J'espère que vous allez pouvoir m'aider, merci d'avance

PS : je vous file la partie de ma macro concernée.

Code :
LignesTableau = Application.CountA(Range("A1:A65536")) + 4
    ActiveSheet.ListObjects.Add(xlSrcRange, Range(Cells(5, 1), Cells(LignesTableau, 4)), , xlNo).Name = _
        "Liste1"

    Sheets("Calcul").Select
    Charts.Add
    ActiveChart.ChartType = xlColumnClustered
    ActiveChart.SetSourceData Source:=Sheets("Calcul").Range(Cells(6, 4), Cells(LignesTableau, 4)), PlotBy _
        :=xlColumns
' En fait quand je fais Range("D6:D125") ca marche nickel sauf qu'il n'y aura pas toujours de données jusque la case 125, il me faudrait un truc en fonction de LignesTableau 

    ActiveChart.SeriesCollection(1).XValues = "=Calcul!R6C1:R125C1"
    ActiveChart.Location Where:=xlLocationAsNewSheet
    With ActiveChart
        .HasTitle = True
        .ChartTitle.Characters.Text = "Analyse des Ecarts"
        .Axes(xlCategory, xlPrimary).HasTitle = True
        .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Sous Chapitres"
        .Axes(xlValue, xlPrimary).HasTitle = True
        .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Heures"
    End With

Dernière modification par Domi2 ; 30/06/2009 à 12h13. Motif: ajout des balises de code (sélection du code + # au dessus de la fenêtre de rédaction du message)
Tomuscz est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 30/06/2009, 12h11   #2 (permalink)
Expert Confirmé
 
Avatar de Krovax
 
Date d'inscription: juillet 2008
Localisation: Elsass
Âge: 24
Messages: 1 887
Par défaut

Premièrement utilise les balsie code pour ton code. Le premier poste du forum comporte un lien qui t'expliquera comment faire. Et édite ton message pour les rajouter ca évitera aux modérateur de perdre leur temps a le faire

Essaye de faire ca
Code :
 Sheets("Calcul").Range("D6:D" & LignesTableau)
au lieu de
Code :
Range("D6;D125")
car tu présice la feuills pour le range (c'est bien) mais pas pour les cells (c'est moins bien )
Krovax est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 30/06/2009, 12h13   #3 (permalink)
Membre actif
 
Date d'inscription: octobre 2007
Localisation: 29
Messages: 176
Par défaut

Bonjour,

dans quelle feuille se situe tes données? (la feuille sur laquelle tu calcules LignesTableau ?)

Est-ce qu'elles sont dans la feuille "Calculs"?
mapeh est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 30/06/2009, 12h29   #4 (permalink)
Candidat au titre de Membre du Club
 
Date d'inscription: juin 2009
Messages: 24
Par défaut

oui c'est bien dans la feuille "calcul"


Et pardon pour la balise code, j'ignorais ça....

Merci Krovax,

le

Code :
Sheets("Calcul").Range("D6:D" & LignesTableau)
marche très bien,

il ne me reste plus qu'à comprendre comment écrire autrement le
Code :
"=Calcul!R6C1:R125C1"
pour pouvoir remplacer le 125 par LignesTableau

Dernière modification par AlainTech ; 02/07/2009 à 06h20. Motif: Fusion de 2 messages
Tomuscz est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 30/06/2009, 12h51   #5 (permalink)
Expert Confirmé
 
Avatar de Krovax
 
Date d'inscription: juillet 2008
Localisation: Elsass
Âge: 24
Messages: 1 887
Par défaut

Le mot magique concaténation (demande a google)
en VBA &
Code :
"=Calcul!R6C1:R" & LignesTableau & "C1"
& permet de coller des chaine de carctère ensemble ou a des variable
Code :
 
i=5
j=3
msgbox "i vaut " & i & "!!"
msgbox "i x j = " & i*j
msgbox "maintenant " & "tu as compris"
Krovax est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 30/06/2009, 14h33   #6 (permalink)
Candidat au titre de Membre du Club
 
Date d'inscription: juin 2009
Messages: 24
Par défaut

Super, merci tout le monde, ca marche nickel !

Je peux poser une autre question derrière ou c'est pas préférable ?
C'est au sujet d'un Range, je voudrais faire un Range d'une seule cellule, c'est pas possible ca ?

du genre

Code :
Range(Cells(5,x))
avec mon x qui est itéré par un compteur
Tomuscz est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 30/06/2009, 14h45   #7 (permalink)
Expert Confirmé
 
Avatar de Krovax
 
Date d'inscription: juillet 2008
Localisation: Elsass
Âge: 24
Messages: 1 887
Par défaut

virez le range et garde le cell (ca ce comporte de la meme manière)
Code :
cells(5,x)
 
si tu veux absolumment mettre un range (mais c'est pas vraiment utile)
Code :
range(cells(5,x),cells(5,x))
et il vaux mieu se limiter a 1 poste = 1 question
Krovax est déconnecté   Envoyer un message privé Réponse avec citation
NEWS EXCELF.A.Q EXCELTUTORIELS EXCELSOURCES EXCELOUTILS EXCELLIVRES EXCELOFFICE 2010

Réponse Proposer ce sujet en actualité

Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel



Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non



Fuseau horaire GMT +1. Il est actuellement 19h06.


Vos questions techniques : forum d'entraide Excel - Publiez vos articles, tutoriels et cours
et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones
Nous contacter - Hébergement - Participez - Copyright © 2000-2010 www.developpez.com - Legal informations.