VBA - Création bouton pour ajouter automatiquement des données

Averroes

XLDnaute Nouveau
Bonjour à tous,

Je cherche à créer un bouton sur une feuille via VBA pour ajouter automatiquement des données sur un graphique excel lorsque celles-ci sont ajoutées sur un tableau associé.

Pour clarifier, chaque semaine, des données sont ajoutées à un tableau afin de rendre compte des performances hebdomadaires d’individus dans la réalisation d’une action précise (temps passé pour réaliser une action).

Cet indicateur permet d’obtenir un graphique représentant les variations des performances au cours du temps. Grâce à lui, on peut obtenir une tendance générale sur le long terme, et voir s'il y a diminution ou augmentation de la performance.

Chaque semaine, j’actualise donc manuellement le graphique pour qu'il prenne en compte les nouvelles données de la semaine. Je fais Outils de graphique>Création>Sélectionner des données et j’ajoute les données de la nouvelle semaine (à savoir la date de la nouvelle semaine (J+7 vis-à-vis de la dernière date) et la donnée correspondant à cette date).

Cette démarche que je fais manuellement, j’aimerais que le bouton le fasse automatiquement, et qu’il ajoute ainsi directement sur le graphe la nouvelle semaine et la nouvelle donnée obtenue dans le tableau.

Auriez-vous une idée de la marche à suivre ? Je n’ai jamais utilisé VBA par le passé, du coup pensez-vous qu’il soit possible pour un non-initié de faire cette commande ?

Le tableau contient déjà les dates de toutes les prochaines semaines des prochains mois, et ce même s’il n’y a pas encore de valeurs encore associées. Je dois conserver ces colonnes du tableau mais je ne veux pas qu'elles apparaissent sur le graphique (car comme il n'y a pas de données, elles fausseraient la tendance obtenue).

Merci pour votre aide !
 

Papou-net

XLDnaute Barbatruc
Re : VBA - Création bouton pour ajouter automatiquement des données

Bonsoir Averroes, et bienvenue,

Bien sûr qu'il est possible de faire une mise à jour de ton graphique par un bouton VBA. C'est même possible de le faire automatiquement après import de nouvelles données.

Tu nous demandes de t'expliquer la marche à suivre, et ça part d'un bon sentiment. Comme tu n'as jamais utilisé VBA auparavant et comme je ne suis pas particulièrement pédagogue, je pense que le plus simple serait que tu joignes une copie de ton fichier. Il serait plus aisé de t'expliquer le code, pièce à l'appui. N'oublie pas de remplacer les données confidentielles le cas échéant.

A +

Cordialement.
 

Averroes

XLDnaute Nouveau
Re : VBA - Création bouton pour ajouter automatiquement des données

Bonjour Papou-net et merci pour ta réponse !

Voici ci-joint le fichier en question, les neuf graphes ("KPI - ...") sont liés aux données des neuf indicateurs de performance détaillés dans le rapport hebdomadaire ("Weekly Report")

Saurais-tu comment rendre les graphes dynamiques en fonction des données du Weekly Report? (de telle sorte que les graphiques s'agrandissent lorsque les données sont différentes de #DIV/0)

Merci beaucoup!
 

Pièces jointes

  • Scorecard - Dynamic trend charts issues.xlsx
    167.6 KB · Affichages: 132

Papou-net

XLDnaute Barbatruc
Re : VBA - Création bouton pour ajouter automatiquement des données

Bonsoir Averroes,

J'ai commencé à plancher sur ton projet et j'aurais besoin de précisions concernant les feuilles de graphiques :

Tu parles de 9 graphiques "KPI - ...", or je n'en relève que 7 qui s'échelonnent de Feuil3 à Feuil7. Les feuilles que je ne trouve pas sont Escalation Processed et Expedite Requests Processed. Peux-tu confirmer ?

Par ailleurs, est-il possible de modifier l'ordre des onglets de feuilles, ou mieux encore l'ordre des lignes dans la feuille Weekly Report ?

Dans cette attente.

Cordialement.
 

Averroes

XLDnaute Nouveau
Re : VBA - Création bouton pour ajouter automatiquement des données

Bonsoir Papou-net,

Au temps pour moi, il y a bien 7 graphiques, les deux autres indicateurs n’ayant pas de données associées pour le moment.

Il n’y a aucun problème pour la modification de l’ordre des feuilles, mais par contre l’ordre des lignes du Weekly Report a un intérêt pour le suivi des données, et du coup ne peuvent être modifiées.

Je te remercie sincèrement pour ton aide précieuse !
 

Papou-net

XLDnaute Barbatruc
Re : VBA - Création bouton pour ajouter automatiquement des données

RE Averroes,

Voici donc une ébauche de solution sur la copie de ton fichier ci-jointe.

La mise à jour des graphiques se fait automatiquement lors de la sélection de leur onglet, en fonction des données modifiées sur la feuille Weekly Report. Il n'y a donc pas besoin de créer un bouton.

Reste à contrôler si les données des graphiques sont correctes, mais je pense que tu es mieux placé que moi pour le faire.

La macro commune est située dans Module1, L'appel à cette macro se fait dans la procédure Activate de chacun des modules de feuilles de graphiques. Bien que tu indiques n'avoir aucune connaissance en VBA, j'ai prévu des commentaires dans le code pour aider à la compréhension.

A +

Cordialement.
 

Pièces jointes

  • Copie de Scorecard - Dynamic trend charts issues.xlsm
    188 KB · Affichages: 136

Averroes

XLDnaute Nouveau
Re : VBA - Création bouton pour ajouter automatiquement des données

Bonjour Papou-net,

Merci encore pour ton aide. Malheureusement, il y a un problème avec le code, une fenêtre « Erreur d’exécution 1004 » apparaissant lorsque je clique sur les feuilles de graphiques (le message est : « La méthode Select de la classe Range a échoué »)

Après avoir cliqué sur débogage, la ligne surlignée est celle-ci : Plage.Select

Aurais-tu une idée d'où vient le problème ?

Voici le script entier :

Sub MaJGraphiques(sh As Object, lg As Long)
Dim Plage As Range ' Variable pour définir la série de données selon feuille de graphique
Dim Graph As Object

With Sheet3 ' Feuille Weekly Report
dcol = .Cells(5, 1).End(xlToRight).Column ' Calcul de la dernière colonne remplie
Set Plage = Nothing ' Initialisation de la série de données
For col = 7 To dcol ' Lecture des données dans les colonnes sur la ligne lg
If VarType(.Cells(lg, col)) <> 10 And VarType(.Cells(lg + 1, col)) <> 10 Then
' Si les cellules sont différentes de "#DIV/0!"
If Plage Is Nothing Then
' Si Plage est vide, groupe les cellules de la colonne "col" et les lignes de dates + lignes de données
Set Plage = Application.Union(.Cells(5, col), Range(.Cells(lg, col), .Cells(lg + 1, col)))
Else
' Ajoute à Plage les cellules de la colonne "col" et les lignes de dates + lignes de données
Set Plage = Application.Union(Plage, .Cells(5, col), .Range(.Cells(lg, col), .Cells(lg + 1, col)))
End If
Plage.Select
End If
Next
Set Graph = sh.ChartObjects(1) ' Définit le nom du graphique sur la feuille concernée
Graph.Chart.SetSourceData Source:=Plage ' Redéfinit la série des données sur le graphique concerné.
End With
End Sub

Merci !
 

Papou-net

XLDnaute Barbatruc
Re : VBA - Création bouton pour ajouter automatiquement des données

RE Averroes,

La ligne incriminée doit être supprimée car je l'avais mise uniquement pour effectuer des essais et j'ai oublié de la supprimer. Elle provoque une erreur car elle tente de sélectionner Plage sur la feuille Weekly Report qui n'est pas active lors du déroulement de la macro.

Ca devrait fonctionner après cela.

Cordialement.
 

Averroes

XLDnaute Nouveau
Re : VBA - Création bouton pour ajouter automatiquement des données

Ultime question si ça ne te gêne pas d'y répondre: Le code marche mais impossible de renommer les courbes sur les graphes suivant ce qu'elles représentent (les courbes sont nommées Série1 et Série2, et lorsque je change ce nom pour celui des indicateurs observés, rien à faire, le nom redevient Série1 et Série2 lorsque je change de feuille et que je reviens dessus). Faut-il ajouter quelque chose quelque part? (J'ai essayé d'ajouter les noms sur la barre de formule des courbes, mais le problème perdure).

Bien à toi,
 

Papou-net

XLDnaute Barbatruc
Re : VBA - Création bouton pour ajouter automatiquement des données

RE Averroes,

Voici une copie corrigée. Il me reste juste un doute quant à la légende de la série 2, que j'ai fixée à Target sur chacun des graphiques. La série 1 elle prend bien le nom de la feuille.

A +

Cordialement.
 

Pièces jointes

  • Copie 01 de Scorecard - Dynamic trend charts issues.xlsm
    194.2 KB · Affichages: 148

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16