Besoin d'aide pour un graphique

  • Initiateur de la discussion Initiateur de la discussion seghi0051
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

seghi0051

XLDnaute Occasionnel
bonsoir tout le monde j'ai besoin de votre aide pour un graphique,
donc voilà mon problème je voudrais créer deux graphiques ( Feuille Appelant (détail)) avec des courbes, ou les abscisse sont les dates et en ordonné:
- Nombre d'appel (Nombre de 201 par jour)
-Etat (Répondu ou pas de réponse)
P.S:il est juste à noter que les données (date et numéros,...) ne sont pas toujours les mêmes

Voici en pièce jointe mon fichier,
MERCI
 

Pièces jointes

Re : Besoin d'aide pour un graphique

Bonsoir à tous 🙂

seghi, il n'y a pas de problème particulier avec le TCD ou le graphique (il faut mettre la zone source en dynamique comme expliqué dans le lien plus haut mais c'est tout).

Toute l'originalité provient des macros qu'il faut revoir.
Tu peux utiliser le pas à pas pour voir où elles font des bêtises, et comme DranreB 🙂 t'y invite, reviens poser tes questions si tu bloques quelque part, en précisant bien ce que tu veux faire.
Si tes demandes sont claires tu trouveras toujours quelqu'un pour t'aider 🙂

Bonne soirée à tous 🙂

mth
 
Re : Besoin d'aide pour un graphique

Bonsoir 🙂

En cliquant sur les boutons, j'ai vu que le bouton "Vider le contenu" effaçait tout, or le TCD et le graphique ont besoin des en-têtes de colonne, donc soit il faut tout effacer sauf cette première ligne, soit tu effaces tout mais dans ce cas dans le second bouton "Nouveau numéro" tu ajoutes les en-têtes.

Ensuite, concernant ce bouton "Nouveau numéro", je n'ai pas regardé le code mais les premières lignes s'effacent, et les nouvelles lignes se trouvent plus loin vers le bas.
Conséquence pour le TCD et le graphique, il y a des cellules vides dans la colonne Date, du coup le groupement par jour ne peut pas fonctionner, et le graphique donne un résultat inexploitable.

Voilà ce que j'entendais par "fiabiliser les macros", je suppose que DranreB avait noté la même chose, donc vois de ton coté pour corriger ces points, et bien sûr n'hésite pas à revenir si tu n'y arrives pas comme tu le souhaites.

Bonne soirée et @ + 🙂

mth
 
Re : Besoin d'aide pour un graphique

Bonjour,
dans ma macros je lui dit (dans le dernier fichiers envoyer) de ne pas effacer la première ligne des entêtes (De plus je laisse tomber le bouton vider le contenu car il me sert à rien ici ) je sais qu'il y a des cellule date vide dans mon tablo mais je ne vois pas comment y remedier puisque que ce sont des données téléchargé d'une base de donnée téléphonique, De plus les cellule date ne sont pas toujours les mêmes donc là je suis perdu je ne sais plus quoi faire,donc si vous avez une idée supplémentaire.

Aidez moi, SVP
Merci d'avance
 
Re : Besoin d'aide pour un graphique

Bonjour,
Mais est ce qu'il aurait une solution pour faire mon graphique directement sur la feuille Appelant (détail), parce que moi je vois pas comment, et tous sa à cause des dates car elles ne sont pas toujours les mêmes car j'aurais pu faire un SOMMEPROD; mais bon voilà j'ai une idée mais j ne sais pas faire je ne vais pas vous mentir, donc mon idée est:
créer une autre colonne qui ne sera pas visible par l'utilisateur (de couleur blanche) et dans cette colonne je l’incrémente si la valeur n'est égale à la précédente.

Dite moi si mon idée vous parle

Merci
 
Re : Besoin d'aide pour un graphique

Alors, si vous m'avez trouvé dans une pochette surprise un diplôme de divinité qui m'était destiné...
Le pointeur de texte dans la fenêtre de code étant sur le mot "Dim", vous faites F1, vous obtenez un texte qui contient entre autre:
Vous pouvez également utiliser l'instruction Dim suivie de parenthèses vides pour déclarer un tableau dynamique. Une fois le tableau dynamique déclaré, utilisez l'instruction ReDim dans une procédure pour définir le nombre de dimensions et d'éléments du tableau
Et pour la propriété Value de l'objet Range on trouve:
Si l'objet Range contient plusieurs cellules, il renvoie un tableau de valeurs
L'affectation inverse marche aussi.
À+
 
Re : Besoin d'aide pour un graphique

Ça peut vous servir à construire un futur contenu de plage sans toucher à la dite plage destinatrice, de manière à connaître sa nouvelle taille avant toute modification (dernière ligne remplie du tableau)
Ainsi de savoir combien de lignes il faut y insérer ou supprimer pour aboutir à cette même taille, de manière à ce que les références de séries d'un graphique (ordinaire cette fois et non plus de TCD) soient rectifiées sans avoir besoin de retoucher quoi que ce soit de ce graphique.

Dans cet exemple, LMax contient le numéro de ligne maximum où je suis arrivé en remplissant mon tableau TRésu, et Destinat la plage, succeptible d'être référencée quelque part, dont je veux en remplacer le contenu :
VB:
If LMax > Destinat.Rows.Count Then
   Destinat.Rows(2).Resize(LMax - Destinat.Rows.Count).Insert xlShiftDown
ElseIf LMax < Destinat.Rows.Count Then
   Destinat.Rows(2).Resize(Destinat.Rows.Count - LMax).Delete xlShiftUp
   End If
Destinat.Value = TRésu
À+
 
Dernière édition:
Re : Besoin d'aide pour un graphique

re seghi, DranreB,

J'ai tenté une autre démarche de mon coté en espérant qu'elle soit à peu près claire (évidemment la partie VBA est bien moins maîtrisée que toi DranreB 🙂 )

Dans le fichier joint je n'ai laissé que l'onglet principal "Appelant" ainsi qu'un onglet "Tmp" masqué.
Cet onglet "tmp" est destiné à recevoir les informations d'un filtre élaboré, il est inutile de l'avoir sous les yeux ce n'est qu'un onglet intermédiaire.

Dans l'onglet "Appelant" cellule H90, j'ai mis une liste déroulante permettant de choisir le numéro à analyser.
La modification de cette cellule lance le code suivant:

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
'code lancé si la cellule modifiée est la H9O
If Target.Address = "$H$90" And Target.Count = 1 Then
'Bloque le rafraichissement de l'écran
Application.ScreenUpdating = False
'Définition des variables
Dim lig As Long
 
'Efface les données temporaires colonnes B à F onglet TMP
Sheets("Tmp").Columns("B:G").ClearContents
 
 
'Travail sur l'onglet "Appelant" entre With et End With
With Sheets("Appelant")
'Calcul de la dernière ligne, Rows.count donne le nombre de lignes de la feuille
'cells(Rows.count,1) donne le nombre de lignes de la colonne 1
'End(xluop) remonte jusqu'à la dernière ligne remplie
'.row indique le numéro de cette ligne
lig = .Cells(Rows.Count, 1).End(xlUp).Row
End With
With Sheets("Tmp")
'Prépare un filtre élaboré, résultat renvoyé dans une feuille "TMP" qui a vocation à être masquée
Sheets("Appelant").Range("A1:E" & lig).AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=.Range("A1:A2"), CopyToRange:=.Range("B1:F1"), Unique:=False
lig = .Cells(Rows.Count, 2).End(xlUp).Row
'Place le chiffre 1 dans le presse papier
.Cells(1, 7) = 1
.Cells(1, 7).Copy
 
'transforme les données en numérique
.Range("B2:B" & lig).PasteSpecial Paste:=xlPasteAll, Operation:=xlMultiply, _
SkipBlanks:=False
'Popur chaque cellule de la plage
For Each c In .Range("B2:B" & lig)
'Si vide, remplacer par la valeur entière de la cellule du dessus
If c.Value = "" Then
c.Value = Int(c.Offset(-1, 0).Value * 1)
Else
'si non remplacer par la valeur entière
c.Value = Int(c.Value * 1)
End If
Next c
End With
 
With Sheets("Appelant")
'Met à jour le TCD
.PivotTables("TCD1").PivotCache.Refresh
End With
Application.ScreenUpdating = True
End If
End Sub

Les commentaires en vert devraient t'aider (tout du moins je l'espère), en gros le code va chercher au moyen du filtre élaboré les données de la base concernant le numéro choisi, transforment les dates en données exploitables pour le TCD (numérique et nombre entier) et actualise le TCD et donc le graphique.

Par ailleurs, dans l'onglet TMP les critères du filtre élaboré sont en cellule A1:A2, la zone du TCD est nommée "ZoneTCD" (Pour la voir vas dans le gestionnaire de noms)

Voilà, c'est loin d'être parfait, mais en attendant mieux j'espère que cela pourra t'aider, je te laisse tester de ton coté.

Bien à toi,

mth
 

Pièces jointes

Re : Besoin d'aide pour un graphique

Bonsoir
mth, je ne suis pour l'instant d'accord que sur un point avec ta solution: La sélection de l'appelant dans une cellule et son traitement dans une Worksheet_Change. J'y pensais depuis longtemps. Pas besoin d'un USF pour ça !
Le filtre élaboré, j'y ai pensé un moment comme un moyen d'arriver plus efficacement que la procédure de seghi au même résultat ...éloigné du but recherché du graphiqueque souhaité, qui oblige à une seconde synthèse par un TCD.
Ce que je vois pour le moment: je n'arrive pas à mettre une échelle chronologique sur ton graphique, et les jours où il n'y a eu aucun appel n'y sont pas reportés. J'en reste convaincu, pour le moment, qu'il vaut mieux élaborer directement par une procédure bien écrite les séries pour un graphique classique, à raison d'une ligne par jour. Ça ne devrait prendre que quelques lignes de programmation à la place du filtre élaboré, et être très rapide si ça travaille tout en mémoire sans aucune requête Excel.

Pour la conversion de la chaîne en date je ferais:
VB:
Function DateConv(Z As String) As Date
DateConv = DateSerial(Left$(Z, 4), Mid$(Z, 6, 2), Mid$(Z, 9, 2))
End Function

À+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
1
Affichages
540
Réponses
18
Affichages
1 K
Retour