Création de TCD + graphique

Fermé
Shana00 Messages postés 87 Date d'inscription lundi 21 juillet 2014 Statut Membre Dernière intervention 14 octobre 2015 - 1 sept. 2014 à 18:12
Shana00 Messages postés 87 Date d'inscription lundi 21 juillet 2014 Statut Membre Dernière intervention 14 octobre 2015 - 5 sept. 2014 à 15:45
Bonjour,
http://cjoint.com/data3/3IbslWM90W5.htm
Avec ce fichier j'aimerai faire un graphique a courbe avec taux horraire en abscisse et tonnage en ordonné
Un nuage de point avec prix/poid en abscisse et poid en ordonné et faire un tableau pour chaque graphique sachant que sur le fichier j'ai mis que 3ligne alors que les lignes sont variable est peuvent changé a tout moment car c'est une sorte de base de donnée avec un outil d'analyse

Voila cordialement,
Shana
A voir également:

19 réponses

borntobealive Messages postés 138 Date d'inscription jeudi 17 juillet 2014 Statut Membre Dernière intervention 25 février 2019 7
2 sept. 2014 à 10:41
En 2 clique sur google j'ai trouvé
ça pour faire tous les graphiques : https://excel.developpez.com/faq/?page=Graphique
ça pour faire des tableaux : http://www.excelabo.net/excel/tableaux_vba
ça pour copier coller les cellules que tu veux : https://www.excel-pratique.com/fr/vba/proprietes.php
ça pour faire un boucle sur les valeurs de ton tableau : https://www.excel-pratique.com/fr/vba/boucles.php

Je te laisse lire tout ça et quand tu auras commencé à rédiger un bout de code et que tu auras un problème ( du genre la gestion des lignes dans ton tableau (je ne sais pas comment tu supprimes les ligne dans ta "base de donnée")) je te répondrais :-)
0
Shana00 Messages postés 87 Date d'inscription lundi 21 juillet 2014 Statut Membre Dernière intervention 14 octobre 2015
2 sept. 2014 à 12:37
Le truc c'est que le tableau ne peux pas être fait avec du simple VBA comme tu me l'as montré , le problème c'est qu'il faut absolument tiré du 1er tableau plusieurs TCD
0
borntobealive Messages postés 138 Date d'inscription jeudi 17 juillet 2014 Statut Membre Dernière intervention 25 février 2019 7
2 sept. 2014 à 13:47
pourquoi ?
Tu mets le graphique sur une nouvelle feuille et tu rajoute un évènement qui le réactualise à chaque fois que tu l'active ?

je suis pas sûre que ça nécessite un TCD ton truc mais juste de la recopie de ligne.
crée 2 feuille supplémentaire (une pour chaque tableau qui serviras ensuite à faire tes graphiques)
met les titres des colonnes et fais en un tableau (petit bouton formater comme un tableau dans le ruban) à la main.

Voilà maintenant tu as les bases.

La première chose à faire est d'écrire une macro qui remplit ces 2 tableau.

un bouclage sur tes colonne dans le tableau de départ et une recopie dans la colonne concernée de la nouvelle feuille.

Ensuite un macro qui réalise le graphe et après on voit ensemble pour l'automatisation.
0
borntobealive Messages postés 138 Date d'inscription jeudi 17 juillet 2014 Statut Membre Dernière intervention 25 février 2019 7
2 sept. 2014 à 14:00
tu veux des graphes séparés ? ( pas sur la même feuille ?)
0
Shana00 Messages postés 87 Date d'inscription lundi 21 juillet 2014 Statut Membre Dernière intervention 14 octobre 2015
2 sept. 2014 à 14:36
Graphique + tableau sur la même feuille , le problème c'est que des séries de donnée se rajoute au fur et a mesure
0
borntobealive Messages postés 138 Date d'inscription jeudi 17 juillet 2014 Statut Membre Dernière intervention 25 février 2019 7
2 sept. 2014 à 14:39
montre moi comment tu as fais tes graphique et tes feuilles
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
borntobealive Messages postés 138 Date d'inscription jeudi 17 juillet 2014 Statut Membre Dernière intervention 25 février 2019 7
2 sept. 2014 à 15:12
bon pour info j'ai fini ton truc et ça marche très bien mais n'étant pas à ton service j'aimerais que tu y mette du tient et que tu essayes de faire quelque chose.

les clefs sont:
- De faire à la main 2 nouvelles feuilles de mettre dedans tes 2 tableaux et tes 2 graphes et de faire des module qui modifie ces 2 entités pour chaque feuille.
- de les automatiser via l'outil activate de worksheet que je te montrerais avec plaisir

Les membres du forum ne sont pas là pour faire les macros des autres mais pour les aider

Si tu as des questions d'ordre technique dont la réponse n'est pas le premier résultat google et/ou des questions d'algorithmie je répondrais avec plaisir

Cordialement
0
Shana00 Messages postés 87 Date d'inscription lundi 21 juillet 2014 Statut Membre Dernière intervention 14 octobre 2015
Modifié par Shana00 le 3/09/2014 à 14:14
http://cjoint.com/data3/3IdocTIc6ve.htm

Coucou , voila un fichier que j'ai fais , j'ai des inquiétude par rapport au TCD , en faite il n'y a pas de truc "valeur" donc j'ai mis la somme et c'est ça qui m'embête après peut être que ça reste bon
Après le VBA je ne connais pas trop tout ce que je sais faire en macro c'est l'enregistreur

Apres j'ai essaye de faire un nuage de point avec courbe avec point , en enlevant la courbe je me suis dit avec les points que ça aller faire un nuage de point mais au final ça ne fonctionne pas comme ça , j'ai l'impression que l'abscisse prend juste les valeur dans l'ordre et ne fait pas d'intervalle en faite

En plus quand je supprime les valeurs du tableau et que j'en remet de nouvelle et que ensuite je fais actualisé , les ancien filtre reste et les nouveau ne se sélectionne pas du coup il devienne vide mais le but c'est de faire un outil automatisée
0
Shana00 Messages postés 87 Date d'inscription lundi 21 juillet 2014 Statut Membre Dernière intervention 14 octobre 2015
Modifié par Shana00 le 3/09/2014 à 15:03
Bon plus je réfléchis et plus je me dis que j'aurai besoin de code VBA mais le problème que c'est que je sais pas comment faire en VBA pour les séries de donnée , comme on peut pas savoir a l'avance si il y aura 1 ou 10 séries , faut que la macro sache faire la différence entre A1 A1 A1 A2 A3

Un autre problème comment on importe des tableaux ? parce que admettons que si on automatise , que avant on avait importé 50 lignes et que ensuite on importe 25 lignes , il restera 25 ligne du tableau precedents
0
borntobealive Messages postés 138 Date d'inscription jeudi 17 juillet 2014 Statut Membre Dernière intervention 25 février 2019 7
Modifié par borntobealive le 4/09/2014 à 09:05
https://www.cjoint.com/?3Iei2V1Vx2u

voilà une première idée pour avancer J'ai laisser ton tableau sur la première feuille (j'ai rajouter des valeur pour mieux voir les tracés) et j'ai crée 2 nouvelles feuilles dans lesquelle je met le tableau que tu as demandée ET le graphe

Ensuite j'ai parametré les graphe comme tu avais dit ( un en nuage de point et l'autre en courbe

Pour info j'ai utiliser l'outils mise forme pour transformer tes tableaux en tableau avec en-tête ce qui me permetra ensuite dans mes macros de compter les ligne

dit moi dans un premier temps si c'est ce que tu cherche visuellement

cordialement,
N'oubliez pas de marquez votre post comme résolu !
0
borntobealive Messages postés 138 Date d'inscription jeudi 17 juillet 2014 Statut Membre Dernière intervention 25 février 2019 7
4 sept. 2014 à 09:04
PS : pour ajouter des lignes dans un tableau comme celui que j'utilise (en vb c'est un listobject) il suffit d'écrire dans la ligne immediatement en dessous excel fait le reste.
Tu peux assi nommer le tableau pour le selectionner à la main plus rapidement et tu peux utiliser des filtres automtiques sur les colonnes bref c'est beaucoup mieux :-)
0
Shana00 Messages postés 87 Date d'inscription lundi 21 juillet 2014 Statut Membre Dernière intervention 14 octobre 2015
Modifié par Shana00 le 4/09/2014 à 09:45
Bonjour , j'aime beaucoup . Dans ma base de donnée , j'ai déjà une ligne qui compte le nombre de ligne parce que quand une personne rentre les valeurs a partir de la feuille fournisseur il y a 2 tableau immense et on ma programmé quelque chose pour qu'il sache que si le nom de pièces n'est pas remplis alors il s'arrête la en fonction de si il rajoute +1 ou si il reste a 0 après bon ça risque de pas te servir mais je préfère le dire .

Apres le problème c'est que j'aurai voulu faire des séries de donnée avec le nom fournisseur puis leur valeur respectif en X et Y mais la faut du code que avec mon niveau je suis incapable d'écrire car il faut qu'il sache que pour le fournisseur A il doit prendre 4 valeur pour le B 2 valeur etc alors que c'est aléatoire et non prévu a l'avance

Ps: Si tu me donne une email je peux te donner la vrai version de mon fichier
0
borntobealive Messages postés 138 Date d'inscription jeudi 17 juillet 2014 Statut Membre Dernière intervention 25 février 2019 7
Modifié par borntobealive le 4/09/2014 à 23:30
Je te passerais pas d'email parce que si on communique par mail cette conversation ne sera plus utilisabe par d'autre plus tard.

Est-ce que tu as lu ce qu j'ai mis au début en fait ? si la réponse est non je te conseil de lire les cours de mon premier message histoire que je parle pas dans le vent

(j'attend toujours ton code)

PS : ça c'est la gestion de l'évènement activation d'une feuille :

Private Sub Worksheet_Activate()

'tu décris ce que tu veux faire

End Sub


et ça c'est pour détruire le contenu d'un listObject (à réadapter pour tes besoins)

dim TabDestination as listObject 

'destruction du tableau s'il existe
If TabDestination.ListRows.Count <> 0 Then
    TabDestination.DataBodyRange.Delete
End If


et ça c'est pour faire un graphe :(à réadapter dans ton code)

Sub graphe()
 
'declaration des variables
Dim wks As Worksheet
Dim mg As ChartObject
Dim titre As String
Dim ordonnee As Range
Dim absisse As Range
Dim tabl As ListObject

'supprimer les series
Do Until mg.Chart.SeriesCollection.Count = 0
    mg.Chart.SeriesCollection(1).Delete
Loop

'refaire une serie
titre = wks.Name
Set absisse = tabl.ListColumns(1).DataBodyRange
Set ordonnee = tabl.ListColumns(2).DataBodyRange

With mg.Chart.SeriesCollection.NewSeries
    .Name = titre
    .Values = "=" & ordonnee.Address(True, True, xlA1, True)
    .XValues = absisse.Address(True, True, xlA1, True)
End With

End Sub


si jamais tu as la flemme d'essayer de comprendre (et d'essayer par toi-même) : le fichier qui fait tout (mais j'ai l'impression qu'il va te manquer certaines fonctionnalité on en reparle un fois que tu l'auras essayer et identifier les problèmes)
https://www.cjoint.com/?DIexEvgU4x0
cordialement,
N'oubliez pas de marquez votre post comme résolu !
0
Shana00 Messages postés 87 Date d'inscription lundi 21 juillet 2014 Statut Membre Dernière intervention 14 octobre 2015
5 sept. 2014 à 07:14
Coucou j'ai essayé , c'est vraiment cool mais j'ai une question , si on veut rajouter une 3eme colonne pour faire des séries en fonction du nom fournisseur est ce que c'est possible?
0
borntobealive Messages postés 138 Date d'inscription jeudi 17 juillet 2014 Statut Membre Dernière intervention 25 février 2019 7
5 sept. 2014 à 09:23
comme les lignes tu ecris à côté excel fais le reste.

en macro il faut rajouter une case quand tu fais la copie (je te laisse comprendre et adapter le code qu'il y a dans module)
0
borntobealive Messages postés 138 Date d'inscription jeudi 17 juillet 2014 Statut Membre Dernière intervention 25 février 2019 7
5 sept. 2014 à 09:25
Et si tu veux que seul eux apparaisse dans les graphes, il faut changer le déclenchement du graphique et lui dir de n'utiliser que les cellules visibles après un tri :

range(blabla).specialCells(xlVisibleCell) et ça devrait le fair
0
borntobealive Messages postés 138 Date d'inscription jeudi 17 juillet 2014 Statut Membre Dernière intervention 25 février 2019 7
5 sept. 2014 à 09:34
Je répondrait plus tant que t'aura pas essayer de faire un truc par toi-même. Je t'ai quand même rédigé tout ton code, j'ai l'impression que tu ne sais pas te servir de VBA et que tu attends juste que les forumers fasse ton travail à ta place.

Comme je me trompe surement tu va pouvoir m'envoyer ce que tu as fait comme modif pour rajouter ta colonne et je m'excuserais dans le cas contraire je vais arreter de perdre mon temps de bénévole et je vais aller aider des gens qui essaye (en même temps sur un forum de programation ça se tient non ?)
0
Shana00 Messages postés 87 Date d'inscription lundi 21 juillet 2014 Statut Membre Dernière intervention 14 octobre 2015
Modifié par Shana00 le 5/09/2014 à 11:07
J'ai modifier le debut pour convenir a mes besoin mais j'ai un probleme des le debut
Avec mes <>0 il comprend sauf que enfaite il arrete la porter du tableau du coup , il garde la 1ere ligne vu qu'elle est non vide et celle d'apres vu qu'elles sont vide le tableau ne s'etend pu mais les valeur sont ajouter du coup le filtre fonctionne pu

For Each cel In TabOrigine.ListColumns(1).DataBodyRange
If WksDestination.Name = "Feuil1" Then
If cel.Offset(0, 11).Value <> 0 And cel.Offset(0, 12).Value <> 0 Then
cellule.Offset(loopCompt, 0).Value = cel.Offset(0, 2)
cellule.Offset(loopCompt, 1).Value = cel.Offset(0, 11).Value
cellule.Offset(loopCompt, 2).Value = cel.Offset(0, 12).Value
End If
ElseIf WksDestination.Name = "Feuil2" Then
cellule.Offset(loopCompt, 0).Value = cel.Offset(0, 2).Value
cellule.Offset(loopCompt, 1).Value = cel.Offset(0, 0).Value
cellule.Offset(loopCompt, 2).Value = cel.Offset(0, 16).Value
If cel.Offset(0, 19).Value = Kg Then
cellule.Offset(loopCompt, 3).Value = cel.Offset(0, 18).Value
cellule.Offset(loopCompt, 4).Value = cellule.Offset(loopCompt, 2).Value / cellule.Offset(loopCompt, 3).Value
Else
cellule.Offset(loopCompt, 3).Value = 0
cellule.Offset(loopCompt, 4).Value = 0
End If
End If

Apres j'ai un probleme avec If cel.Offset(0, 19).Value = Kg Then , j'ai l'impression il comprend pas Kg que je met des "" ou pas
En faite je voulais importer plusieur valeur de mon tableau de base , j'ai importer nom piece , fournisseur , poid , prix et ensuite je voulais calculé le Poid/prix mais seulement quand il a importer le poid quand l'unité dans la base de donnée c'est Kg
Mais je me suis rendu compte que j'ai oublié un detail , enfaite dans la base de donnée ca importe tout ( tu vas me dire logique c'est ca fonction ) cependant pour chaque fournisseur et piece je voulais faire la somme des poids pour avoir un ratio vrai par fournisseur , du coup je voulais importer les donnée et ensuite qu'il me calcul la somme des poids par fournisseur/piece et qu'apres il laisse juste les lignes avec somme donc en gros 1 fournisseur par piece

J'ai vais continué sur le reste en enlevant les truc qui fonctionne pas , je te tien au courant

edit :
For i = 1 To 39
If wks.Cells(i, 1) = wks.Cells(i - 1, 1) Then
With mg.Chart.SeriesCollection.NewSeries
.Name = wks.Cells(i, 1)
.Values = "=" & ordonnee.Address(True, True, xlA1, True)
.XValues = absisse.Address(True, True, xlA1, True)
End With
End If
i = i + 1
Next
End Sub

J'ai essayer de créer une series en fonction du nom fournisseur mais apparement je sais pas comment on dit fin du tableau for i=1 to ?
ensuite pour que la reconnaisse que fournisseur 1 c'est la 1ere series et des qu'il passe a fournisseur 2 dire que c'est une nouvelle series



Je fais tout ça pour apprendre la programmation par moi même , les exemples concret c'est le mieu mais bon voila je galère , j'ai juste fais de l'algorithme en faite
0
borntobealive Messages postés 138 Date d'inscription jeudi 17 juillet 2014 Statut Membre Dernière intervention 25 février 2019 7
5 sept. 2014 à 11:20
cool plein d'info (excuse moi pour le coup de gueule)

alors :
1/ pour le tableau qui ne s'étend plus
soit tu l'empeche de faire des cases vides
Soit tu redimenssionne le tableau pour inclure les ligne vide (je trouve pas ça terrible)
dis moi ce que tu preferes

2/ pour le Kg qui marche pas :
vérifie que dans ton titre il n'y a pas un "espace invisible" genre "Kg ". le cas échéant tu l'enlèves. et tu mets des " autour de Kg

3/ pour compter les ligne d'un tableau, c'est tout simple (cf : la lecture que je t'ai envoyé http://www.excelabo.net/excel/tableaux_vba au moins maintenant je suis sur que tu ne les a pas lu)

dim tabl as listObject 

'l'indice de la derinere ligne c'est 
tabl.listrows.count


et accede directement au données du tableau sans passer par la feuille pour eviter les problemes de numerotation :
au lieu de
wks.Cells(i,1)
met
 tabl.listcolumn(1).range(i)
avec i l'indice de la boucle for


PS : pour apprendre à faire de l'info 2 solution soit tu as des question très précsise genre(je veux copier la valeur blbla dans ma variable blibli) soit tu accepte de lire des pages de forum qui traite de probleme similaire (genre des cours) C'est chiant mas tu progresseras plus vite (J'ai découvert Vb en m'inscrivant sur le forum il y a 2 mois et je ne suis pas programmeur)
0
Shana00 Messages postés 87 Date d'inscription lundi 21 juillet 2014 Statut Membre Dernière intervention 14 octobre 2015
Modifié par Shana00 le 5/09/2014 à 12:29
Je pense on va faire info par info au lieu de te donner un bloc parce que c'est moins comprehensible
For i = 2 To tabl.ListRows.Count
If tabl.ListColumn(1).Range(i) = tabl.ListColumn(1).Range(i - 1) Then
With mg.Chart.SeriesCollection.NewSeries
.Name = tabl.ListColumn(1).Range(i)
.Values = "=" & ordonnee.Address(True, True, xlA1, True)
.XValues = absisse.Address(True, True, xlA1, True)
End With
End If
i = i + 1
Next

En gros ce que je voulais qu'il fasse c'est si il vois Fournisseur 2 et qu'il l'avait pas vu juste avant , il recreer une series sauf que j'ai pas mis de sinon et il comprend pas du coup ce que je veux dire mais je sais pas quoi mettre dans le sinon parce que je comprend pas trop ce que la ligne fait ordonnee.Address(True, True, xlA1, True)

edit : j'ai commencé a lire une page sur le .address a ce que j'ai vu faudrai mettre false false xlR1C1 et le range pour la serie , je vais essayé de le faire mais je promet rien mais bon si mon if est déjà pas bon je sais pas comment je vais faire

edit2 :

For i = 2 To tabl.ListRows.Count
If tabl.ListColumns(1).Range(i) <> tabl.ListColumns(1).Range(i - 1) Then
With mg.Chart.SeriesCollection.NewSeries

.Name = tabl.ListColumns(1).Range(i)
.Values = "=" & ordonnee.Address(True, True, xlA1, True)
.XValues = absisse.Address(True, True, xlA1, True)
End With
End If


Next
End Sub

Voila j'ai trouvé ca en solution , le if fonctionné pas a cause du s , dit moi ce que tu en pense
Bon reste un petit probleme , il sait faire la difference et met 3 series sauf que les series sont faite du tableau entier et non des valeurs appartenant au nom de la serie
0
borntobealive Messages postés 138 Date d'inscription jeudi 17 juillet 2014 Statut Membre Dernière intervention 25 février 2019 7
5 sept. 2014 à 13:31
ordonnee.adress(true,true,xla1,true) 
c'est une méthode que j'ai garder pour gérer mes cases comme je veux dans un graphique :

edit1 :

Il faut remplir ordonnee qui est une range avec les range que tu veux mettre dans ton graphique ensuite je met :
"=" & ordonnee.adress(false,false,xla1,false)
pour plusieurs raison
1/ comme c'est une formule si tu clique dessus manuellement dans "selectionner des donnée" dans ton graphique, tes cellules apparaitront en surbriance comme si tu l'avais fait à la main.
2/ je met fals,false pour enlever les dollars (si la cellule bouge, la formule aussi)
3/ je mets xlA1 parce que je suppose que tes colonnes sont numérotés en lettre (xlR1C1 c'est si tes colonnes sont en chiffre)
4/je mets false à la fin parce que c'est dans la même feuille donc pas besoin de reference externe

Pour ce qui est de "l'ordi comprend pas" : Il a pas besoin de
else
pour fonctionner (dans le code que je t'ai passé j'utilise souvent des
if    then
sans
else
)
le problème c'est qu'il n'y aucune raison que les fournisseurs se suive bien gentiment dans l'ordre donc avant de les chercher il faut trier le tableau par nom de fournisseur (je te conseil de le faire à la main avec l'enregistreur)

edit2 :

Si tu ne modifie pas
ordonnee
et
absisse
, il va te faire 3 séries mais va toujour tracer la même chose, il faut que tu modifie leur valeur quand tu change de série.

"le if fonctionné pas a cause du s", quel S ?
0
Shana00 Messages postés 87 Date d'inscription lundi 21 juillet 2014 Statut Membre Dernière intervention 14 octobre 2015
Modifié par Shana00 le 5/09/2014 à 14:33
et accede directement au données du tableau sans passer par la feuille pour éviter les problemes de numerotation :
au lieu de wks.Cells(i,1) mettabl.listcolumn(1).range(i) avec i l'indice de la boucle for

Tu avais oublié le s a column et vu que j'avais copier coller sans réfléchir ça fonctionné pas et je voyais pas pourquoi

une fois que les fournisseurs sont trié dans l'ordre , sa suffit pour qu'ils comprennent que fournisseur 1 c'est A1 a A3 et fournisseur2 c'est A4 a A6 ? ou alors faut rajouter quelque chose

edit : j'avais pas vu l'edit 2 , les valeur de abscisse et ordonnee comment on la modifie dans le code ?

edit 2:
Set absisse = tabl.ListColumns(5).DataBodyRange
Set ordonnee = tabl.ListColumns(4).DataBodyRange

c'est a cette endroit la qu'il faut modifier ?

edit2.1 :
enfaite non je dis n'importe quoi c'est le .address qui fait la plage de donnée
mais je vois pas comment faire pour lui dire range(cells(,);cells(,)) ( fin si il faut faire comme ça )


edit 3 :
1/ pour le tableau qui ne s'étend plus
soit tu l'empêche de faire des cases vides
Soit tu redimensionne le tableau pour inclure les ligne vide (je trouve pas ça terrible)
dis moi ce que tu préfères

Je reviens sur ce que tu as dit toute a l'heure vu que j'ai toujours pas réussi a le faire , pour empêcher les cases vide comment on fait sachant que les valeurs que j'importe y a beaucoup de valeur vide a cause d'une condition que j'ai mis le tableau ne s'étend pu ?
des que je lance la macro tableau le tableau se redimensionne automatiquement donc j'ai supposé que c'était dans le code mais j'ai pas sur identifié l'option même si je pense que c'est du a ca tabDestination.DataBodyRange.Delete
0
borntobealive Messages postés 138 Date d'inscription jeudi 17 juillet 2014 Statut Membre Dernière intervention 25 février 2019 7
5 sept. 2014 à 14:31
pour reperer tes fournisseur il faut rafiner un peu

pour commencer on va initier 2 compteur :
dim debut as integer
dim fin as integer
dim cel as range 
dim fournisseur as string 


ensuite tu parcours ta colonne avec cel et tu regarde ce qui se passe

for each cel in tabl.listColumns(tuMetlIndiceQuiVaBien).dataBodyrange
   if cle.value <> fournisseur then 
      fin = cel.offset(-1,0).row
      'tu fais ce qu'il faut pour tracer le graphe 
      debut = cel.offs(-1,0).row
   end if
next cel


pour modifier une range au lie de mettre databody range tu selectionne un plage normale :

dim blabla as range 

set blabla = wks.range(wks.cells(LaColonneQuiVaBien, debut), wks.cells(LaColonneQuiVaBien,fin)



plutôt que de copier coller bêtement, réecris mes codes comme ça tu corrige les faute de frappe (majuscule, S etc...) grâce à l'écriture intuitive ET en plus ça te permettra de comprende un peu ce que tu fais ....
0
Shana00 Messages postés 87 Date d'inscription lundi 21 juillet 2014 Statut Membre Dernière intervention 14 octobre 2015
Modifié par Shana00 le 5/09/2014 à 15:19
Cle.value (ou alors c'est pas cle.value mais cel.value ? ) et fournisseur on doit les initialisé a quel moment et comment?
pareil pour le
 dim blabla as range 

set blabla = wks.range(wks.cells(2, debut), wks.cells(3,fin)

Si on set le blabla on l'utilise ou ? parce que debut et fin sont mis avant et apres le creation du graphique ou alors j'ai mal compris

For i = 2 To tabl.ListRows.Count
For Each cel In tabl.ListColumns(i).DataBodyRange
founisseur = tabl.ListColumns(1).Range(i)
If cel.Value <> fournisseur Then

With mg.Chart.SeriesCollection.NewSeries
fin = cel.Offset(-1, 0).Row

.Name = tabl.ListColumns(1).Range(i)
.Values = "=" & ordonnee.Address(True, True, xlA1, True)
.XValues = absisse.Address(True, True, xlA1, True)

debut = cel.Offset(-1, 0).Row

End With
End If
Next cel
Next i

On l'utilise comme ca ou alors le for se trouve au tout debut du programme ? ( j'ai l'impression que j'ai rajouté des truc pas trop utile )
0
borntobealive Messages postés 138 Date d'inscription jeudi 17 juillet 2014 Statut Membre Dernière intervention 25 février 2019 7
5 sept. 2014 à 15:36
cle c'est une faute de frappe évidement c'est cel

tu as oublié le with... donc ça sert à rien vba va râler (erreur 1004)

tu n'as toujours pas initialisé les ranges qui permettent de remplir les données du graphes

tu initialise évidement fournisseur comme n'importe quel string avec la premiere valeur avant le for : fournisseur = tabl.listcolumns(blabla).range(2)


Ecoute on va arreter le massacre :
tu ne maitrise pas assez bien VBA et tu chercher à faire des choses trop compliqué pour toi. Soit tu trouve quelqu'un pour faire ta macro à ta place soit tu fais de l'autoformation sur internet (avec VBA ça va très bien marché y'a des millions de pages sur le WEB) parce que ce que tu me demande est déjà traité dans plein de page sur ccm ou d'autre forum/cours/tuto en petit bout et j'ai la flemme de te faire un cours de bout en bout sur VBA
(tu sais pas faire un graphique,
tu sais pas utiliser with,
tu sais pas gerer les types de variables (page1 des cours de mon premier message))

Quid de l'autoformation :

Tu essaye de mettre sur papier ce que tu veux faire de la manière la plus précise possible dans un algorithme. ensuite tu tape tes actions sur google et tu trouve un post qui traite de ce que tu cherches et tu réadapte pour comprendre. parce que la notre conversation dégénère completement et tu ne comprends pas mes explication donc on va dans le mur.

désolé d'être aussi dur mais j'ai l'impression de perdre mon temps et je n'ai pas la patience d'un prof.
Normalement avec le premier fichier tu as une bonne base et avec ce que j'ai mis dans notre conversation tu as tous les outils pour t'en sortir

Bonne chance pour tes recherches
0
Shana00 Messages postés 87 Date d'inscription lundi 21 juillet 2014 Statut Membre Dernière intervention 14 octobre 2015
5 sept. 2014 à 15:45
Le problème c'est que je maîtrise VBA dans l'ensemble mais j'avais jamais fais de graphique a partir de VBA et comme c'est du VBA je voulais quelque chose d'automatisé et donc de concret pour le comprendre , la on utilise des objet excel que j'ai encore jamais utilisé donc forcement je sais pas ou je dois mettre quoi et je me perd tout seul dans tout les lignes de code

D'ailleur j'ai pas oublié le with sauf si on parle pas de se with la
With mg.Chart.SeriesCollection.NewSeries

C'est sur que sa aurai été plus simple que une personne face la macro pour moi mais bon personne ferai ça de bonté d'âme même si la on a bien avancé manque quelque détail que j'arrive pas a reglé
0