Détacher les données source des graphiques dans Excel VBA

Lorsque vous devez copier un graphique à partir d’un classeur et le coller ailleurs (dans un autre classeur, un fichier PowerPoint, Outlook, etc.), la meilleure solution consiste à en détacher les données source. De cette façon, vous n’obtiendrez aucun de ces messages ennuyeux produits par Excel. La macro ci-dessous copie tous les graphiques de la feuille de calcul active et les colle dans un nouveau classeur, puis supprime le lien vers les données source d’origine.
La macro utilise la méthode ShapeRange.Group pour regrouper tous les graphiques de la feuille active en une seule forme. Il s’agit d’une règle similaire à celle dans laquelle vous regroupez manuellement un ensemble de formes en une seule forme. Lorsque les graphiques sont regroupés, l’ensemble du groupe est copié et collé dans un nouveau classeur. Toutes les références aux données source sont ensuite supprimées à l’aide de la méthode BreakLink. Cela obligera Excel à enregistrer les données des graphiques dans les formules matricielles.

Sub DetacherGraph ()

'Étape 1: Déclarez la variable

Dim wbLiens As Variant

'Étape 2: regroupement des graphiques; copie de groupe; dissociation de graphiques

With ActiveSheet.ChartObjects.ShapeRange.Group

.Copy

.Ungroup

End With

'Étape 3: coller dans un nouveau classeur et dissocier

Workbooks.Add.Sheets(1).Paste

Selection.ShapeRange.Ungroup

'Étape 4: supprimer les liens

wbLiens = ActiveWorkbook.LinkSources(Type:=xlLinkTypeExcelLinks)

ActiveWorkbook.BreakLink Name:=wbLiens (1), _

Type:=xlLinkTypeExcelLinks

End Sub

 

Commentaires :
1. À la première étape, la variable wbLiens est déclarée. Il sera utilisé à l’étape quatre pour fournir un lien vers les données source à supprimer.
2. Dans la deuxième étape, tous les graphiques sont regroupés en une seule forme (ChartObjects.ShapeRange.Group). Le groupe est ensuite copié dans le presse-papiers. Après avoir copié le groupe, la macro dissocie ses éléments (dans la feuille source).
3. Dans la troisième étape, un nouveau classeur (feuille) est créé, dans lequel le groupe copié est ensuite inséré. Après l’avoir collé, vous pouvez le dissocier, de sorte que chaque graphique soit à nouveau un élément distinct. Le classeur nouvellement créé devient le classeur actif, de sorte que toutes les références à un objet ActiveWorkbook s’appliquent exactement à lui.
4. Dans la quatrième étape, l’adresse des données source est obtenue à partir de la variable wbLinks. Le lien est ensuite supprimé.
ATTENTION
Il convient de se rappeler que la technique décrite étant basée sur la transformation des données source du graphique en un format de tableau, elle peut échouer s’il y a trop de données. «Trop», c’est combien exactement? Parce que la valeur est limitée par la mémoire disponible, cela peut être différent pour différents ordinateurs.
Comment appliquer une macro?
Pour implémenter cette macro, vous pouvez copier et transmettre son code dans un module standard. Comprenant:
1. Activez l’éditeur de base Visual avec la combinaison Alt + F11.
2. Dans la fenêtre Projet, cliquez avec le bouton droit sur le nom du projet ou de la feuille.
3. Sélectionnez Insertion / Module.
4. Entrez n’importe quel code pour le module nouvellement créé.

S’abonner
Notifier de
0 Commentaires
Inline Feedbacks
Voir tous les commentaires

Initiation à Excel

Fonctions Excel

Excel VBA

Macros VBA Utiles

Plus d'outils

Sur Facebook

Sur YouTube

0
Nous aimerions avoir votre avis, veuillez laisser un commentaire.x