Traduction programme VBA
Bonjour ,voila j'ai un programme vba j'aimerai etant debutante avoir la traduction en francais de chaque instruction svp pour mieux comprendre le programme merci
Private Sub worksheet_change(ByVal target As Range)
On Error Resume Next
For num = 1 To ActiveSheet.ChartObjects.Count
If (target.Column = 3 Or target.Column = 1) And target.Row > 1 And target.Count = 1 And target.Value <> "" Then
ActiveSheet.ChartObjects(num).Activate
ActiveChart.SeriesCollection(1).ApplyDataLabels Type:=xlDataLabelsShowLabel
On Error GoTo 0
For i = 1 To ActiveChart.SeriesCollection(1).Points.Count
ActiveChart.SeriesCollection(1).Points(i).DataLabel.Select
Selection.Interior.ColorIndex = 36
Selection.Font.Size = 9
Selection.Text = ActiveSheet.Cells(i + 1, 1)
ActiveChart.SeriesCollection(1).Points(i).MarkerBackgroundColorIndex = 4
Next i
ActiveSheet.ChartObjects(num).Activate
For i = 1 To ActiveChart.SeriesCollection(1).Points.Count
ActiveChart.SeriesCollection(1).Points(i).MarkerBackgroundColorIndex = _
ActiveSheet.[COULEUR].Offset(0, Cells(i + 1, 3).Value).Interior.ColorIndex
Next i
End If
Next
target.Select
End Sub
est ce qu'il ya quelqun pour m'aider svp jen ai vraiment besoin je n'aime pas utiliser des choses que je ne comprends pas meme si sa fonctionne
A un changement quelconque sur une cellule/plage de cellules
Si erreur, reprendre le programme à la boucle suivante
Pour num = 1 jusqu'au nombre d'objets sur la feuille active
Si la cellule qui a changée est (en colonne 3 OU en colonne 1) ET son numéro de ligne supérieur à 1 ET que ce n'est pas une sélection multiple ET que sa valeur n'est pas nulle alors
activation de l'objet n°num
afficher des étiquettes sur les abscisses/ordonnées? du graphique
pour i = 1 au nombre de points sur l'abscisse/l'ordonnée? du graphique
Sélection de l'étiquette du point i
étiquettes mise en couleur (colorindex = 36)
étiquette de taille de police 9
valeur de l'étiquette = contenue de cellule ligne i + 1 et colonne 1
changement de la couleur du marqueur de donnéeen colorindex = 4
Point suivant (boucle i)
Voilà un début !
merci c deja un bon debut je commence a comprendre ce qu'exeecute mon programme
Private Sub worksheet_change(ByVal target As Range)
'évènement VBA. On rentre dans cette procédure si une cellule ou une plage de cellules est modifiée
On Error Resume Next
'en cas d'erreur dans le programme, on passe à la boucle suivante et on ignore les erreurs survenues
For num = 1 To ActiveSheet.ChartObjects.Count
'pour num = 1 jusqu'au nombre d'éléments de type graphique dans la feuille active
If (target.Column = 3 Or target.Column = 1) And target.Row > 1 And target.Count = 1 And target.Value <> "" Then
'si, pour la cellule modifiée, on a :
'(sa colonne = 3 OU sa colonne = 1) ET sa ligne > 1 ET son nombre de cellules = 1 ET sa valeur non vide ALORS
ActiveSheet.ChartObjects(num).Activate
'on active le graphique n°num
ActiveChart.SeriesCollection(1).ApplyDataLabels Type:=xlDataLabelsShowLabel
'Pour se graphique et sa première série de données, on affiche les étiquettes de données
On Error GoTo 0
'euh pas sûr
For i = 1 To ActiveChart.SeriesCollection(1).Points.Count
'pour i = 1 jusqu'au nombre de points du graphique
ActiveChart.SeriesCollection(1).Points(i).DataLabel.Select
'on sélectionne l'étiquette de données
Selection.Interior.ColorIndex = 36
'on mettre cette étiquette de données en couleur -> couleur 36
Selection.Font.Size = 9
'on met la police de l'étiquette en taille 9
Selection.Text = ActiveSheet.Cells(i + 1, 1)
'on modifie le texte de l'étiquette, qui prend alors la valeur de la cellule ligne i +1 et colonne 1
ActiveChart.SeriesCollection(1).Points(i).MarkerBackgroundColorIndex = 4
'on modifie la couleur du marqueur de donnée (qui est généralement un point, une croix, un cercle etc...)
Next i
'fin de notre boucle sur les points du graphique
ActiveSheet.ChartObjects(num).Activate
'on réactive le même objet qu'avant ?!!!
For i = 1 To ActiveChart.SeriesCollection(1).Points.Count
'on refait la même chose, i = 1 au nombre de points
ActiveChart.SeriesCollection(1).Points(i).MarkerBackgroundColorIndex = _
'on reremodifie la couleur du marqueur de donnée, et cette fois, le marqueur de données vaut (suite de la commande à la ligne)
ActiveSheet.[COULEUR].Offset(0, Cells(i + 1, 3).Value).Interior.ColorIndex
'la couleur de la fond d'une cellule, mais je ne sais pas à quoi correspond le [COULEUR]
Next i
'on passe au point suivant
End If
'fin de notre if
Next
'graphe suivant (c'est mal construit !!!)
target.Select
'on finit par resélectionner notre cellule
End Sub
'fin
Ce programme est mal construit:
En effet dedans on a un test qui ne devrait être réalisé qu'une fois, mais au lieu il est réalisé autant de fois qu'il y a de graphiques!
La structure de ton programme devrait être:
If .......... Then
For num = 1 to ....
...
...
...
...
Next num
End If
merci beaucoup mais en fait ce programme cherche à créer une macro me permettant de mettre a jour
un graphique dynamique de type Nuage de Point (l’ordre et le nombre des
points sont variables).
J’ai quatre colonnes : Nom du point / Type du Point ou la classe du point / Valeur X / Valeur Y
avec ce programme dans mon nuage de point il ya :
•Une couleur de point différente selon le type du point ou la classe
•Une étiquette visible uniquement pour chaque point
et que lorsque je change le nombre de la colonne du type de point la couleur se modifie automatiquement dans mon nuage de point
et aussi jai 3graphiques partant du meme tableau qui sexecute automatiquement quand je modifie le tableau
voila pourquoi jai ecrit ce programme
comme je suis debutante je ne vois comment faire autrement
'Ce genre de Macro est prédéfini par Microsoft 'l'intitulé est non modifiable
Private Sub worksheet_change(ByVal target As Range)
'Les erreur de codage sont ignorées
On Error Resume Next
'Pour chacun des graphiques de la feuille
For num = 1 To ActiveSheet.ChartObjects.Count
'Conditions de fonctionnement :
'Si le système détecte un changement sur la colonne 3 ou sur la colonne 1
'et sur la ligne 1 et sur une seule cellule et que la cellule modifiée est non vide...
'Nota : A mon avis les conditions me semblent un peu "maladroite"
'Je suis sceptique sur le bon fonctionnement de cette macro
'C'est sans doute pourquoi la gestion des erreurs de codage a été désactivée
If (target.Column = 3 Or target.Column = 1) And target.Row > 1 And target.Count = 1 And target.Value <> "" Then
'On active le/les graphiques
ActiveSheet.ChartObjects(num).Activate
'On affiche les légendes
ActiveChart.SeriesCollection(1).ApplyDataLabels Type:=xlDataLabelsShowLabel
'On réactive la gestion d'erreur...
On Error GoTo 0
'Pour chaque série de poins
For i = 1 To ActiveChart.SeriesCollection(1).Points.Count
ActiveChart.SeriesCollection(1).Points(i).DataLabel.Select
'On détermine les couleurs, la légende, la couleur de fond
Selection.Interior.ColorIndex = 36 '36=jaune clair
Selection.Font.Size = 9 '9= marron
Selection.Text = ActiveSheet.Cells(i + 1, 1)
ActiveChart.SeriesCollection(1).Points(i).MarkerBackgroundColorIndex = 4 '4 = vert
Next i
ActiveSheet.ChartObjects(num).Activate
For i = 1 To ActiveChart.SeriesCollection(1).Points.Count
'On modifie la couleur verte définie précédemment pour une couleur définie dans la plage "COULEUR"
'La encore c'est un codage un peu "à la hache" (ça sert à quoi de le définbir d'abord en vert
'pour le redéfinir aussitot après ? ...
'Bon je peux me tromper hein... Car je n'ai pas testé : C'est une traduction "à l'aveugle" !
ActiveChart.SeriesCollection(1).Points(i).MarkerBackgroundColorIndex = _
ActiveSheet.[COULEUR].Offset(0, Cells(i + 1, 3).Value).Interior.ColorIndex
Next i
End If
Next
target.Select
End Sub
[EDIT] Désolé, fausse manip : j'ai répondu sur le fil à une question posé par mail...
A+
Peux-tu simplement joindre un fichier avec des données, et le résultat final que tu veux avoir pour ton graphe? (sans programmation)
Parce que là avec ce que tu dis, je sais pas si c'est:
- toi qui a récupéré des bouts de programmes et les a mis ensemble
- qql d'autre qui a fait ce programme et tu cherches à le comprendre
, je penche pour la seconde hypothèse ....besoin traduction programme vba
salut d3d9x en effet c vrai tien voila mon fichier
si tu peu maider c avec grand plaisir
je veux quen vba tous cela soit appliquer est possible
J’ai quatre colonnes : Nom du point / Type du Point ou la classe du point / Valeur X / Valeur Y
avec ce programme dans mon nuage de point il ya :
•Une couleur de point différente selon le type du point ou la classe
•Une étiquette visible uniquement pour chaque point
et que lorsque je change le nombre de la colonne du type de point la couleur se modifie automatiquement dans mon nuage de point
et aussi jai 3graphiques partant du meme tableau qui sexecute automatiquement quand je modifie le tableau cest le resultat attendu
quelqu'un pour miader
Quelqu'un ̀saurait m'aider svp
- Messages
- 1'794
- Excel
- 2010
- Inscrit
- 25/08/2014
- Emploi
- Consultant VB6 / SQL / VBA / Excel / Access
Bonjour,
Une proposition à tester en PJ.
Seule modif : ajout d'une boucle sur le nombre de graph.
Bonne soirée
Bouben
merci bouben sa fonctionne tres bien du coup je peu ajouter le nombre de ligne que je veux ?