SERIEUXETCOOL
Messages postés336Date d'inscriptiondimanche 3 avril 2011StatutMembreDernière intervention12 juin 2012
-
11 nov. 2011 à 21:21
Utilisateur anonyme -
12 nov. 2011 à 14:25
Bonsoir le forum,
Je me retourne vers vous pour une petite question...
Je cherche à définir de manière correcte une plage de données discontinue sous la forme suivante : Une cellule sur deux.
En fait je désire tracer un graphique à partir d'une macro. Ce graph sera définit sur deux colonnes (abscisse, ordonnée) mais seulement une cellule sur deux.
Voici les deux lignes de mon code que je cherche à modifier :
ActiveChart.SeriesCollection(1).XValues = Range("A1:A20") 'Valeurs en abscisse
ActiveChart.SeriesCollection(1).Values = Range("B1:B20") 'Valeurs en ordonnée
Mais je désire remplacer "Range("A1:A20")" et "Range("B1:B20")" par une autre plage qui serait définie par une cellule sur deux (plage discontinue).
Voici le code que je propose mais qui ne fonctionne pas du tout car mal définit !
Dim Abscisse As Range, Ordonnée As Range
Dim i As Long
For i = 1 To 20 Step 2
Abscisse = Union(Range("A" & i))
Ordonnée = Union(Range("B" & i))
Next
ActiveChart.SeriesCollection(1).XValues = Abscisse 'Valeurs en abscisse
ActiveChart.SeriesCollection(1).Values = Ordonnée 'Valeurs en ordonnée
Qui aurait la gentillesse de proposer une solution à mes soucis ?
Merci d'avance,
André
A voir également:
Définir une plage de cellules discontinues de manière correcte
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018209 11 nov. 2011 à 21:35
Bonsoir, André,
Alors ? (j'ai pourtant déjà eu l'occasion de te montrer certaines choses avec Union ...)
=>>
Dim abscisse As Range, ordonnee As Range
Set abscisse = Range("A1")
Set ordonnee = Range("B1")
For i = 3 To 20 Step 2
Set abscisse = Union(abscisse, Range("A" & i))
Set ordonnee = Union(ordonnee, Range("B" & i))
Next
MsgBox abscisse.Address & vbCrLf & ordonnee.Address
essaye de comprendre pourquoi, ici, je démarre la boucle au 3ème rang
on pourrait démarrer au 1er, mais cela conduirait à 2 expressions conditionnelles de plus !
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
SERIEUXETCOOL
Messages postés336Date d'inscriptiondimanche 3 avril 2011StatutMembreDernière intervention12 juin 20121 11 nov. 2011 à 23:07
Merci à toi Ucfoutu, comme d'habitude tu as réponse à tout.
J'ai bien remarqué l'utilisation du "union" que tu as pu faire par le passé dans les codes que tu m'as proposé. J'ai essayé de décortiquer un peu tout ça et de m'en inspirer...mais je n'y suis pas arrivé. Je n'avais encore jamais utilisé cette propriété.
J'ai également essayé une recherche par le net, mais je n'ai rien trouvé de convainquant sur les plages de données discontinues ou le "union".
Du coup ne me restait plus que le forum. Je suis quand même content, car finalement mon code n'était pas si faux que sa. Enfin il y avait de l'idée quoi^^
Maintenant que j'ai du utiliser par moi même ce "union" et bien j'avoue que c'est nettement plus simple à comprendre. Le fait que tu commence à 3 me semble pertinent. On initiale la première cellule à A1, ensuite on doit zapper A2 et prendre en compte A3 donc le prochain coup (le premier du compteur finalement) devra être 3. Et ensuite par sauts de 2 de manière assez logique.
Maintenant c'est parfaitement clair et j'ai même pu corriger certaines petites erreurs du coup^^.
Merci à toi Ucfoutu
Message résolu !
Ps : Ce coup-ci ma demande était plutôt simple je l'avoue. J'ai néanmoins en réserve un autre problème bien plus compliqué en tête et j'hésite encore à le traiter. Si tu es intéressé à te casser un peu la tête dessus avec moi je suis partant pour essayer de créer la discussion. Mais j'avoue ne pas avoir beaucoup de temps à consacrer à cette fonction mais que je suis quand même bien curieux de voir le résultat éventuel que sa peut faire^^ Seul, je ne m'y investirais pas. Et j'ai peur que pour arriver à un résultat 100% satisfaisant il faille y passer trop de temps. Temps que je ne dispose malheureusement pas. A toi de me dire si sa pourrait t’intéresser Ucfoutu.
Bonne soirée et encore merci pour ta réponse à ce post ;)
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018209 12 nov. 2011 à 07:05
Pour ton post-scriptum :
"Envoie" toujours, mais dans une autre discussion.
Prends alors le plus grand soin à bien détailler avec la plus grande précision les tenants et aboutissants techniques (sans nécessairement exposer le reste).
En développement informatique, il est rare que l'on ne puisse trouver une solution lorsque tenants et aboutissants peuvent être reliés par la logique seule, d'une part, et que, d'autre part, l'effort demandé à la machine ne dépasse pas l'endurance de ses muscles.
Elle n'existe pas lorsque doivent intervenir des facteurs autres (perception, instinct, sensibilité, appréciations personnelles, etc ...).
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
SERIEUXETCOOL
Messages postés336Date d'inscriptiondimanche 3 avril 2011StatutMembreDernière intervention12 juin 20121 12 nov. 2011 à 14:20
Bien je vais créer cette nouvelle discussion cette après midi alors. J'essaierais d'être le plus précis possible mais je sais d'avance que les objectifs vont évoluer au fur et à mesure du développement du code. Sa reste du développement après tout^^
Bref on se retrouvera sur l'autre discussion pour se pencher sur sa. Ce que j'aimerais faire est largement possible Ucfoutu. Il n'y a rien de compliqué que tu ne saurais faire. J'en suis convaincu. Mais moi tout seul je ne me sens pas prêt pour m'attaquer à ce code. Donc n'ai crainte, sa restera simple.
Je vais manger. A toute.
PS : Acive, il n'y a aucun problème. Ton post m'a même fait rire^^