USF - Copier graphique et changer sa plage

Int0x

XLDnaute Occasionnel
(re)bonjour le forum,

J'ai commencé un fichier qui permet de suivre plusieurs petits projets, chacun illustré par un diagramme de Gantt. Rien de bien exceptionnel, juste quelques taches avec une durée associée qui débouchent sur le diagramme.

Le fichier que je vous ai joint présente 2 projets A et B, qui occupent un espace de 24 lignes chacun (visuellement).

Je souhaiterais, via USF, pouvoir ajouter des projets les uns à la suite des autres. En gros, une fois l'usf remplit, il irait:
  • nommer le projet, sous le même format qu'au dessus
  • copier le tableau (formules) et modifier en fonction des saisies
  • copier le graphique et changer les plages de données par celles du nouveau tableau

En gros, recopier la même chose qu'au dessus, où seules quelques infos du tableau et la plage de ce dernier changent.

Je ne sais pas comment réaliser tout cela (doit-on préparer un onglet trame ? ou plutot prendre celui du dessus ? etc...). Je suis donc ouvert à toute idée, suggestion, critique, remarque, & cie !!

Par avance merci pour le temps que vous passerez sur mon problème,
Int0x :rolleyes:

Question bonus: je souhaiterais également ajouter une ligne verticale qui représenterait la date du jour. Comment puis-je insérer ce genre de courbe sur mon graph ?
 

Pièces jointes

  • Int0x-Gantt v2.xls
    38.5 KB · Affichages: 96
Dernière édition:

Int0x

XLDnaute Occasionnel
Re : USF - Copier graphique et changer sa plage

Bonjour tdenfert,

Effectivement, ce n'est pas tout à fait ce que je recherche mais c'est une idée qui serait à creuser si ma demande s'avère trop complexe. Néanmoins, ça serait intéressant si cette macro renvoyait vers la dernière ligne non vide de B +17.

Merci en tout cas :)
Ma demande reste d'actualité, en ajoutant une possibilité d'optimisation de la proposition de tdenfert :eek:
 

Int0x

XLDnaute Occasionnel
Re : USF - Copier graphique et changer sa plage

J'ai réussi à répondre à ma question bonus (ce fût très laborieux, mais ça fonctionne).
Cependant, le problème principal reste d'actualité ! Comment ajouter des projets rapidement et simplement (par usf, idéalement) ? :rolleyes:
 

Pièces jointes

  • Int0x-Gantt v3.xls
    51 KB · Affichages: 110

Int0x

XLDnaute Occasionnel
Re : USF - Copier graphique et changer sa plage

Bonjour,

Je crois que le code pour changer une plage d'un graphique est le suivant:

Code:
ActiveChart.SeriesCollection(1).Values = "=PLM!R109C3:R113C3"
    ActiveChart.SeriesCollection(2).Values = "=PLM!R109C6:R113C6"
    ActiveChart.SeriesCollection(3).Values = "=PLM!R109C7:R113C7"
    ActiveChart.SeriesCollection(4).XValues = "=PLM!R109C8:R113C8"
    ActiveChart.SeriesCollection(4).Values = "=PLM!R109C9:R113C9"

PLM étant le nom de l'onglet.
Du coup, je pourrais déjà faire une macro qui irait:
  • copier le tableau et le graphique depuis un onglet trame,
  • coller le tout à la 17ème cellule en dessous de la dernière non vide (colonne B)
  • modifier la plage du tableau

Du coup, mes nouvelles questions:
  • comment se positionner sur la 17ème cellule en dessous de la dernière non vide d'une colonne ?
  • comment rendre la partie fixe de mon code (entre guillement) variable ?
(quel code écrire pour que "=PLM!R109C3:R113C3" devienne =activebook raw(dernière-cellule-non-vide+20) colC3: raw(dernière-cellule-non-vide+24) colC3 ?)

Bien entendu, je suis ouvert à toute autre remarque / aide / conseils, je cherche juste de trouver un truc qui pourrait faire l'affaire.

Par avance merci,
Int0x
 

Int0x

XLDnaute Occasionnel
Re : USF - Copier graphique et changer sa plage

Je continue mon monologue :eek:

J'ai un peu avancé, avec une macro qui est à tous les coups optimisable (j'ai cru comprendre que les .select étaient normalement rares pour plus de fluidité):

Code:
Sub Macro3()
'
    Sheets("Trame").Select
    Range("B6:Q26").Select
    Selection.Copy
    Sheets("PLM").Select
    Range("B" & Range("B65536").End(xlUp).Row + 17).Select
    ActiveSheet.Paste
  
End Sub

Il faut maintenant que je réussisse à intégrer le changement de plage sur mon graphique.
Code:
ActiveChart.SeriesCollection(1).Values = "=PLM!R109C3:R113C3"
ActiveChart.SeriesCollection(2).Values = "=PLM!R109C6:R113C6"
ActiveChart.SeriesCollection(3).Values = "=PLM!R109C7:R113C7"
ActiveChart.SeriesCollection(4).XValues = "=PLM!R109C8:R113C8"
ActiveChart.SeriesCollection(4).Values = "=PLM!R109C9:R113C9"

Par la suite je pourrais intégrer l'USF.

Des idées ? :(
 

Int0x

XLDnaute Occasionnel
Re : USF - Copier graphique et changer sa plage

J'ai un peu avancé, avec une macro qui est à tous les coups optimisable (j'ai cru comprendre que les .select étaient normalement rares pour plus de fluidité):

Code:
Sub Macro3()
'
    Sheets("Trame").Select
    Range("B6:Q26").Select
    Selection.Copy
    Sheets("PLM").Select
    Range("B" & Range("B65536").End(xlUp).Row + 17).Select
    ActiveSheet.Paste
  
End Sub

Je suppose que c'est déjà plus "pro" comme ça :eek:
Code:
Sub Macro3()
    Sheets("Trame").Range("B6:R13").Copy
    Range("B" & Range("B65536").End(xlUp).Row + 4).Select
    ActiveSheet.Paste
    Range("B" & Range("B65536").End(xlUp).Row - 6).RowHeight = 12
    Range("B" & Range("B65536").End(xlUp).Row - 5).RowHeight = 15
End Sub

(j'ai rajouté 2 ajustements de taille de lignes, déformées par un caractère spécial)
 

Int0x

XLDnaute Occasionnel
Re : USF - Copier graphique et changer sa plage

Bonjour le forum,

Demande toujours d'actualité ! Comment modifier ma plage de graph automatiquement ? :(
(heureusement que je ne fais pas un one man show, ça serait un vrai bide là ! :eek: )
 

Int0x

XLDnaute Occasionnel
Re : USF - Copier graphique et changer sa plage

Bonjour le forum,

Problème toujours d'actualité.
Comment remplacer
Code:
ActiveChart.SeriesCollection(1).Values = "=PLM!R109C3:R113C3"
par cette plage
Code:
Range("C" & Range("C65536").End(xlUp).Row - 4 & ":C" & Range("C65536").End(xlUp).Row)
?

Par avance merci,
Int0x :eek:
 

Discussions similaires

Réponses
6
Affichages
306

Statistiques des forums

Discussions
312 206
Messages
2 086 220
Membres
103 158
dernier inscrit
laufin