Dans VBA, Designer le dernier d'une fonction?

B

BEBE1310

Guest
Bonjour

Voila je voudrais faire une macro et j'aurai voulu indiquer dedans que je veux selectionner la derniere barre de mon histogramme pour la deplacer dans le graphique

Quel est le code pour designer le dernier de quelque chose sans lui donner de n° de position?

Merci de vos reponse


Si vous connaissez les reponses a mes questions posees quelques lignes plus bas dans le forum merci d'y repondre ca m'aiderait enormement


Encore merci
 
V

Vériland

Guest
Bonjour BEBE1310 et le Forum,

Ta question me fait penser que tu pourrais essayer de gérer cela depuis un Userform avec le principe du "Drag N Drop"...tiens je te donne le lien qui traite du sujet...(made in Thierry...)

Lien supprimé<<------------------------------------>>Lien supprimé

Bon je sais que cela ne répond pas précisément à ta question de la dernière sélection, mais le principe du "Drag N Drop" te permettrait de déplacer n'importe quelle donnée...

et comme tu en parles, le "Drag N Drop" pourrait même résoudre cette Lien supprimé...enfin c'est une proposition...

A+Veriland.gif
 
B

bebe1310

Guest
Merci pour ta reponse mais je debute et c'est trop compliqué

Je vais essayer d'eclaircir ma demande pour cibler les reponses:

Voila ce que je voudrais faire precisement

Je gere mes comptes sur excel avec des graphiques d'evolution par type de depenses et par mois et je voudrais automatiser le rajout de barre d'histogramme a achaque creation de mois
Donc il faut que je rajoute une serie de barre dans mon graphique que je lui donne un nom et que je selectionne la case qui correspond a la valeur

Voici la macro que j'ai creer a partir de macro excel :

ActiveChart.ChartArea.Select
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(6).Values = Application.InputBox
ActiveChart.SeriesCollection(6).Name = InputBox

Et voici mon probleme :


Il me selectionne la 6eme serie puisque dans ma macro je lui est selectionne la 6 eme, le probleme c'est que la fois d'apres il va me creer une nouvelle serie en 7eme position puis en 8eme puis en 9eme... puisque c'est une nouvelle serie mais il va toujours me demander une valeur et un nom pour la 6 eme serie et pas la derniere

Donc ma question est la suivante : Comment remplacer le 6 par "la derrniere" ou "celle que tu viens de creer" ?

Voila j'espere que j'ai ete assez clair


Merci par avance de vos reponses
 
B

bebe1310

Guest
J'ai un autre probleme qui ressemble au premier

Je voudrai aussi que la nouvelle feuille creer soit toujours en dernier
Or voici la macro qu'il me mets quand je la creer:


Sheets("MOIS TYPE").Select
Sheets("MOIS TYPE").Copy After:=Sheets(6)


Comment remplacer le 6 (6eme position) par "en dernier alors que je coche la case en dernier quand je copie la feuille
 
@

@+Thierry

Guest
Re Salut BEBE1310, Bonjour au Forum

Pour tes Feuilles, tu peux faire ceci tout simplement

Sub CopyFeuilleLastPos ()
Dim X as Byte
Dim X As Byte
X = Sheets.Count
Sheets("Feuil1").Copy After:=Sheets(X)
End Sub

Pour tes Graph, je n'ai pas l'habitude d'en faire, mais ce ne doit pas être bien différent... (BAh !)

Sub CompteChartSeries()
Dim X As Byte
X = Worksheets("sheet1").ChartObjects(1).Chart.SeriesCollection.Count
MsgBox X
End Sub


Bonne Après Midi
@+Thierry
 
B

bebe1310

Guest
Pour mes feuilles c'est ce que je me suis resigner a faire je copie ma feuille et je la mets a une certaine place c'est a dire en 3 / 5 par exemple car si j'ai 5 feuilles, j'en copie 1 et je la mets en 6 la prochaine fois que je veux copier une feuille il me la mettra en 6 et non dernier car celle creer avant passera en 7


C'est le meme probleme avec mes graphiques sauf que pour les series de graphiques quand on en cré un il ne la garde pas en selection et il faut la reselectionner avec une position et comme la position change du fait que l'on rajoute de series, il me selectionne toujours la meme serie et non celle que je viens de creer


Je ne sais pas comment faire


A l'aide
 
@

@+Thierry

Guest
Re Bonjour Bebe1310, le Forum

Bon écoute, il me semble vraiment urgent que tu ailles lire notre Charte du Forum car en quelques posts ici, tu as déjà pris de mauvaises habitudes qu'il te faut corriger rapidement.

Non seulement tu ne dis jamais merci, mais en plus on dirait que tu ne lis même pas les réponses !

En effet il me semble que si tu appliques correctement ce que je t'ai donné comme solution à 15:35 ton post ci-dessus de 15:55 n'a pas lieu d'exister ?

Je te conseille donc :
1) de lire la Charte
2) de copier ma macro "CopyFeuilleLastPos"dans un classeur vierge et de la faire tourner...

Ensuite on verra
Bon Après Midi
@+Thierry
 
B

bebe1310

Guest
Je te prie de m'excuser pour les erreurs de politesse mais si turegarde la majorite de mes message, en general, soit je remercie soit je remercie par avance mais c'est vrai ,autant pour moi, qu'il arrive que j'oublie.

Toutes mes excuses

Maintenant venons en a la macro

Je l'avais essayer mais je me suis tromper et ca ne marchait pas

Mais a force de perseverer car je debut sous VBa, j'y suis arriver.

Mille merci
Maintenant je vais essayer de l'appliquer a mes graphiques mais je pense que la situation sur les graphique est plus compliquee
 
@

@+Thierry

Guest
Re !

Bon alors pas de Souci bebe1310, tout s'arrange.....et bienvenu sur XLD

Alors pour tes feuilles, je pense que c'est réglé....

Pour tes graphs, comme je t'ai déjà écrit, ce n'est pas ma spécialité. Ceci dit j'ai un peu regardé pour toi tout à l'heure et donc la méthode que je t'ai donnée :

X = Worksheets("sheet1").ChartObjects(1).Chart.SeriesCollection.Count

Une fois adaptée à ton classeur (nom de feuille, index de Chart) te permettra de savoir combien de Séries sont actuellement dans ta Chart.

Maintenant pour rajouter une série et la nommer j'ai écrit ceci :

Sub GraphAjoutSerie()
Dim X As Byte
Dim Plage As Range
Dim Nom As String

X = Worksheets("Feuil1").ChartObjects(1).Chart.SeriesCollection.Count

Set Plage = Application.InputBox(prompt:="Sélection de la plage", Type:=8)
Nom = InputBox("Nom de la nouvelle Série")

With Worksheets("Feuil1").ChartObjects(1).Chart
.SeriesCollection.Add Source:=Plage
.SeriesCollection(X + 1).Name = Nom
End With
End Sub


Voilà, je pense que tu pourras avancer maintenant...

Bonne Fin de Week End à tous et toutes
@+Thierry


PS déjà la Méthode InputBox de Ti mise en application ! (thanks again)
 
@

@+Thierry

Guest
Re !

Ah ben je n'avais pas encore vu ton post de 16:54, j'étais en train de pester à me faire des graphiques pour toi et te trouver une solution... La méthode "NewSeries" m'a fait tourner en bourique et je l'ai pas utilisée finalement !

Au dessus c'est avec un "Add" tout bête que j'ai pu intégrer la fameuse Application.InputBox.

Mais par curiosité et pour le partage de connaissance dans le forum, je te suggère de poster aussi la solution que tu as trouvée...

Bonne Fin de Journée
@+Thierry
 
C

Celeda

Guest
Bonjour,


Hi hi hi hi hi = si tu dis que @+Thierry est un Dieu maman il ne va plus passer par la porte du Forum et Dieu sait comment elle est large ...

aye aye aye attention @+Thierry quand tu vas entrer dans l'aréne de ne pas trébucher sur ta toge!!

Mais c'est vrai qu'il y en plein des Dieux dans ce forum : entre les Dieux des Macros et les Anges des formules on est dans un véritable paradis sur terre !!!! entouré de pleins de mini-dieux. Ca va être dur l'Enfer !!!

Soeur Celeda (c'est dimanche - que la sérénité entre dans vos coeurs!!!)
 

Discussions similaires

Statistiques des forums

Discussions
314 017
Messages
2 104 581
Membres
109 082
dernier inscrit
Narlock