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
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
A voir également:
- Création de TCD + graphique
- Tcd excel - Guide
- Creation compte gmail - Guide
- Création organigramme - Guide
- Media creation tool - Télécharger - Systèmes d'exploitation
- Création compte google - Guide
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
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 :-)
ç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 :-)
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
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
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
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.
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.
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
2 sept. 2014 à 14:00
tu veux des graphes séparés ? ( pas sur la même feuille ?)
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
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
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
2 sept. 2014 à 14:39
montre moi comment tu as fais tes graphique et tes feuilles
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
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
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
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
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
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
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
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
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
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
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 !
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 !
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
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 :-)
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 :-)
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
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
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
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
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 :
et ça c'est pour détruire le contenu d'un listObject (à réadapter pour tes besoins)
et ça c'est pour faire un graphe :(à réadapter dans ton code)
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 !
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 !
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
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?
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
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)
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)
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
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
range(blabla).specialCells(xlVisibleCell) et ça devrait le fair
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
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 ?)
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 ?)
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
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
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 :
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
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
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
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)
et accede directement au données du tableau sans passer par la feuille pour eviter les problemes de numerotation :
au lieu de
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)
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)
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
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
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
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
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
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
elsepour fonctionner (dans le code que je t'ai passé j'utilise souvent des
if thensans
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
ordonneeet
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 ?
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
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
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
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
5 sept. 2014 à 14:31
pour reperer tes fournisseur il faut rafiner un peu
pour commencer on va initier 2 compteur :
ensuite tu parcours ta colonne avec cel et tu regarde ce qui se passe
pour modifier une range au lie de mettre databody range tu selectionne un plage normale :
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 ....
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 ....
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
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
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
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 )
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 )
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
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
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
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
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
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é
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é