Plage dynamique VBA

Bonjour,

Ca fait quelques jours que je cherche la solution à mon problème et j'espère la trouver sur ce forum grâce à votre aide.

On travaille avec un fichier de reporting ancien et j'essaie de l'améliorer. En effet, le fichier est alimenté chaque semaine par des nouvelles données venues d'un autre fichier. Ces données sont stockées dans les tableaux de l'onglet "Evolution" et alimentent à leur tour les graphes dynamiques pour n'afficher finalement que les données des 11 dernières semaines grâce aux boutons "Décaler S+1" et "Décaler S-1".

De ma part, j'ai rajouté un nouvel onglet que j'ai nommé "Zero Trafic" et je veux faire la même chose avec les données de cet onglet (graphe qui se met à jour chaque semaine), sachant que les données venues de l'autre fichier contient la matière brut pour alimenter cet onglet et c'est pas ça le problème. Mon problème c'est que j'ai essayé des créer un plage dynamique dans cet onglet avec Excel avec les fonctione Décaler et NBVAL sans passer par le VBA, mais la tache s'avère compliquée car à chaque fois que je nomme une plage sur cet onglet et je finis le travail, quand je clique sur le bouton "Décaler S+1", un message d'erreur s'affiche "La méthode Select de la classe Range a échoué". J'ai beau cherché mais jusqu'à l'heure je n'ai pas trouvé de solution. Finalement je me demande si c'est pas possible d'utiliser les macro DecalerPlageBAS et DecalerPlageHAUT (Boutons Décaler S+1 et S-1) et les adapter aux données de mon nouvel onglet mais je ne sais pas comment faire car j'ai pas compris le code de ces macros.

L'onglet "Zero trafic" est vide vu que les données sont confidentielles mais elles sont du format que les autres données à savoir les semaines sur les abscisses et les pourcentages sur les ordonnées.

Pourriez-vous SVP me filer un coup de main pour résoudre ce problème?

Cdt;

16fichier-backlog.xlsm (922.63 Ko)

bonjour

il est temps de passer à Power BI Desktop gratuit pour visualiser les données (et quelle visualisation ! )

ce logiciel récupère des données de sources variées, notamment à partir de fichiers contenus dans un répertoire. Ce qui est ton cas.

Imagine récupérer d'un clic des millions de données, contenues dans des milliers de fichiers dont certains vieux de 10 ans.

c'est grâce à Power Query (disponible dans Excel aussi)

et faire des états, graphiques etc. dans PBI

sans VBA, totalement dépassé

Bonjour

Autre solution pour simplifier et moderniser.

Mettre tes sources sous forme de tableaux structurés

Leur associer un segment pour filtrer et lier les graphiques à l'ensemble du tableau : il suffit de filtrer avec le segment pour que le graphique se limite aux données filtrées.

Reste un poil de VBA si synchronisation de plusieurs sources nécessaire...

un exemple pour illustrer ce type d'approche http://www.excel-formations.fr/Trucs_astuces/GRAPH02.php

Bonjour,

Merci pour vos retour.

@Jmd, c'est la première fois que j’entends parler de ce logiciel Power Query, je vais faire quelques recherches dessus ça a l'air intéressant. Mais pour l'instant je suis dans l'urgence de trouver une solution à mon problème de graphes que je n'arrive pas à faire.

@78chris, j'ai essayé ton idée de segments et je vois que c'est une fonctionnalité fort utile. Mais pour mon cas, à chaque fois que j'insère des segments et je clique sur le bouton "Décaler S+1" (juste pour le test car j'attends aucun résultat de cette action) y l'erreur "la Méthode Select ...a échoué", en plus je ne vois pas comment je pourrai décaler mes graphes avec les segments, car pour rappel je dois avoir les 11 semaines sur les abscisses et les pourcentages sur les ordonnées. Je vous ai joints le fichier avec un échantillon de données que contiendra l'onglet "Zero Trafic".

Merci bien pour votre assistance.

re

salut Chris

comme toi alors !

le tableau des données pour le graphe doit être mis "sous forme de tableau" (un clic dans le 1er menu d'Excel, il FAUT le faire)

ensuite un segment. Mais il faut que le tableau ci-dessus possède une colonne de dates ou périodes.

d'un clic et glissé, tu mets à jour tes semaines

la concaténation des fichiers de départ peut se faire par copier/coller au clavier/souris (1 fois par semaine, c'est raisonnable, même s'il y a 5 fichiers)

encore durant 1 ou 2 mois, le temps pour toi de passer à Power BI

pour l'avenir, apprends POWER BI DESKTOP gratuit

ça va te changer la vie

et celle de tes collègues. Tu seras un dieu pour eux

RE

@78chris, j'ai essayé ton idée de segments et je vois que c'est une fonctionnalité fort utile. Mais pour mon cas, à chaque fois que j'insère des segments et je clique sur le bouton "Décaler S+1" (juste pour le test car j'attends aucun résultat de cette action)...

Je n'ai jamais écrit que cela marcherait avec ton code mais que c'était une AUTRE solution

J'ai viré les segments inutiles, adapté le segment des semaines mais ne vois pas de graphique lié à cet onglet.

J'en ai ajouté un pour que tu comprennes le principe car manifestement tu n'as pas saisi...

@78chris, oui je vois de quoi tu parles et cela je vais l'utiliser prochainement pour d'autres améliorations prévue dans l'avenir. Mais pour l'instant je suis encore coincé sur comment adapter le code existant pour mon nouvel onglet. As-tu d'autres idées pour ça ?

Personne pour l'aide ?

En gros je veux créer un graphe qui se met à jour chaque semaine après avoir cliquer sur le bouton "Décaler S+1" affecté à la macro ci-dessous:

Sub DecalerPlageBAS()

'Dim Plage As Range

Dim Nm As Name

Application.ScreenUpdating = False

'On Error Resume Next

'Sheets.Add After:=ActiveSheet

'Range("A1").Select

'Boucle sur les noms du classeur

For Each Nm In ThisWorkbook.Names

If Nm <> "=#NAME?" Then

NOMPLAGE = Nm.Name

Range(Nm).Select

premierecellule = ActiveCell.Offset(Selection.Columns.Count - 1).Address

dernierecellule = ActiveCell.Offset(Selection.Rows.Count - 1).Address

premierecelluleV2 = Range(premierecellule).Offset(1, 0).Address

dernierecelluleV2 = Range(dernierecellule).Offset(1, 0).Address

'définition de ma plage

MaPlage = premierecelluleV2 & ":" & dernierecelluleV2

'Modification de la plage

With ActiveWorkbook.Names(NOMPLAGE)

.Name = NOMPLAGE

.RefersTo = "=Evolution!" & MaPlage

End With

' ActiveCell = Nm

'ActiveCell.Offset(1, 0).Select

End If

Next Nm

Range("A1").Select

ActiveSheet.Calculate

End Sub

Le graphe doit afficher uniquement les données des onze dernières semaines d'où l'utilité de la plage dynamique.

Y a aussi un bouton "Décaler S-1" qui fait un retour en arrière et voici la macro:

Sub DecalerPlageHAUT()

'Dim Plage As Range

Dim Nm As Name

Application.ScreenUpdating = False

'On Error Resume Next

'Sheets.Add After:=ActiveSheet

'Range("A1").Select

'Boucle sur les noms du classeur

For Each Nm In ThisWorkbook.Names

If Nm <> "=#NAME?" Then

NOMPLAGE = Nm.Name

Range(Nm).Select

premierecellule = ActiveCell.Offset(Selection.Columns.Count - 1).Address

dernierecellule = ActiveCell.Offset(Selection.Rows.Count - 1).Address

premierecelluleV2 = Range(premierecellule).Offset(-1, 0).Address

dernierecelluleV2 = Range(dernierecellule).Offset(-1, 0).Address

'définition de ma plage

MaPlage = premierecelluleV2 & ":" & dernierecelluleV2

'Modification de la plage

With ActiveWorkbook.Names(NOMPLAGE)

.Name = NOMPLAGE

.RefersTo = "=Evolution!" & MaPlage

End With

' ActiveCell = Nm

'ActiveCell.Offset(1, 0).Select

End If

Next Nm

Range("A1").Select

ActiveSheet.Calculate

End Sub

Et dans la pièce jointe vous trouverez un échantillon de données qui je veux transformer en graphe.

Merci

data
Rechercher des sujets similaires à "plage dynamique vba"