Comment étendre automatiquement la gamme d'un graphique à l'aide de VBA?

La structure de mon document peut être vue à partir de l'image ci-dessous. Je souhaite build un diagramme de chronologie des colonnes A (à l'exclusion de la cellule A1, il est crucial pour le graphique que cette cellule particulière n'est pas incluse), B et D. Je search des moyens de rendre le graphique dynamic en utilisant VBA afin que le nouveau les events ajoutés par l'user seront automatiquement affichés dans le tableau sans avoir à changer manuellement la gamme du graphique.

La gamme ne doit pas changer instantanément / en continu – tant qu'elle change lorsque la macro derrière le button "Créer une nouvelle vue d'événement" est cliquée. Lorsque l'user a plus d'events à append à la table, elle peut simplement append les events dans la table et en créant une nouvelle table et en supprimant l'ancienne, elle aura également un graphique mis à jour.

La question est de savoir comment tirer cela?

entrez la description de l'image ici

Vous n'avez pas besoin de VBA pour rendre le graphique dynamic. Créez simplement des gammes nommées dynamics qui augmentent et réduisent datatables. Votre VBA pour le graphique peut se référer à cette gamme nommée, sans append de fardeau au code. Mais vous ne pouvez même pas avoir besoin de la VBA du tout. Le graphique défini avec les plages dynamics sera mis à jour instantanément. Aucun code requirejs.

Nom de la gamme et formule pour les labels des diagrammes:

chtLabels =Events!A2:Index(Events!$A:$A,counta(Events!$A:$A)) 

Nom et formule de la gamme pour la colonne B

 chtBegin =offset(chtlabels,0,1) 

Gamme et formule pour la colonne D

 chtDuration =offest(chtlabels,0,3) 

Modifiez la source de données et, au lieu des plages de cellules fixes, entrez les plages nommées au format

 =Events!*RangeName* 

Vous devez fournir le nom de plage respectif aux valeurs de série et à l'axe de catégorie du graphique.

Remarque: lorsque vous fournissez des noms de plage dynamic comme source pour un graphique, vous DEVEZ inclure le nom du file ou le nom de la feuille avec la reference du nom de la gamme. Lorsque vous fermez et ré-ouvrez la boîte de dialog, vous verrez que Excel convertit automatiquement votre input au format [Filename]RangeName

Note 2: il existe plusieurs options de formule différentes pour créer des noms de plage dynamic. Dans ce cas, nous utilisons et indexons la colonne A et déterminons la dernière cellule remplie en comptant les cellules. Cela ne fonctionne que si toutes les cellules de la colonne A ont du text. Si vos données ont des lacunes dans la colonne A (que je ne pense pas que vous faites), différentes formules peuvent être appliquées pour déterminer la scope.

  1. Convertissez la scope en une table.
  2. Sélectionnez une cellule dans la gamme.
  3. Ensuite, appuyez sur Ctrl+L Cela transformera votre gamme en une table

Vous pouvez ensuite le formater et faire un clic droit dessus et insert un graphique. Cela vous permettra d'append des lignes ou des colonnes. Ajoutez même des colonnes de formule qui vous complètent automatiquement. Vous pouvez également configurer des formules qui utilisent des plages dynamics qui se réfèrent à cette ligne, appeler une colonne par son nom. Utilisez les en-têtes / Données. Obtenez des sous-totaux. Cela permettra une grande flexibilité.