Explication de Code

C

Creepy

Guest
Bonjour All,

Voila j'ai pompé un code VBA, car je ne savais absolument pas faire. Le code marche très bien, mais j'avoue ne pas comprendre tout !!

Comme je veux pas copier bêtement, je veux comprendre, kk1 pourrait t'il m'expliquer ce que fait ce code en detail (j'ai deja des morceaux mais pas toute l'histoire).

Merci d'avance

Creepy

Private Sub CommandButton1_Click()
Dim Counter, countseries, xseries As Integer, ChartName As Variant
Dim xVals As Variant, xCell As Variant
Dim xwcell As Range

'Application.ScreenUpdating = False
Graph2.Select
countseries = ActiveChart.SeriesCollection.Count
For xseries = 1 To countseries
Counter = 1
xVals = ActiveChart.SeriesCollection(xseries).Formula
xVals = Right(xVals, Len(xVals) - InStr(1, xVals, ","))
xVals = Left(xVals, InStr(1, xVals, ",") - 1)
For Each xCell In Range(xVals)
Set xwcell = Range(xCell.Offset(-11, 0).Address)
ActiveChart.SeriesCollection(xseries).Points(Counter).HasDataLabel = True
ActiveChart.SeriesCollection(xseries).Points(Counter).DataLabel.Text = xwcell.Value
Counter = Counter + 1
Next xCell
Next xseries
' Application.ExecuteExcel4Macro "SELECT("""")"
End Sub
 
Y

Yolène

Guest
Creepy

je ne suis pas très experte mais je peux te donner quelques explications


'quand tu clique sur le bouton 1

Private Sub CommandButton1_Click()

les lignes suivante ce sont les déclarations des variables qui vont être utilisées et leur type
Dim Counter, countseries, xseries As Integer, ChartName As Variant
Dim xVals As Variant, xCell As Variant
Dim xwcell As Range

la ligne suivant désactive l'écran, c'est à dire que tu ne voit pas défiler durant la macro, il reste figé ce qui fait gagner du temps, pour voir défiler la macro tu le met sur true et tu t'arrange pour voir tes feuilles excel en même temps par exemple pour voir comment ça fonctionne. l'apostrophe ' devant et le texte en vert veux dire que la personne la mis en texte pour que cette ligne soit désactivée pendant les essais.
'Application.ScreenUpdating = False

Cette ligne sélectionne le graphe2
Graph2.Select

Cette ligne, si je ne me trompe compte le nombre de série du graphique sélectionné
countseries = ActiveChart.SeriesCollection.Count

Ces lignes exécutent les opérations qui vont suivre pour chaque série du graphe.
For xseries = 1 To countseries

Je ne sais pas exactement mais ces lignes définissent les valeurs du graphe, je ne m'y connais pas beaucoup en Vba graphes.
Counter = 1
xVals = ActiveChart.SeriesCollection(xseries).Formula
xVals = Right(xVals, Len(xVals) - InStr(1, xVals, ","))
xVals = Left(xVals, InStr(1, xVals, ",") - 1)

Cette ligne que pour chaque cellule de la zone
For Each xCell In Range(xVals)

Je pense qu'avec les lignes ci-dessous des étiquettes sont rajoutées. Il faudrait essayer pour voir.

Set xwcell = Range(xCell.Offset(-11, 0).Address)
ActiveChart.SeriesCollection(xseries).Points(Counter).HasDataLabel = True
ActiveChart.SeriesCollection(xseries).Points(Counter).DataLabel.Text = xwcell.Value

le compteur est augmenté de 1
Counter = Counter + 1

la cellule suivante est sélectionnée
Next xCell

une nouvelle série est sélectionnée
Next xseries

la ligne suivante est désactivée elle appelait une macro élaborée sous Excel4
' Application.ExecuteExcel4Macro "SELECT("""")"
End Sub


Pour comprendre bien le processus, il faut désactiver l'écran comme précisé au début, ce qui est le cas dans cette macro. Faire que la fenêtre VBA et les feuilles Excel soient toutes deux visible et exécuter pas à pas la macro pour voir défiler le processus.

J'ai fais ce que j'ai pu.
Bonne soirée.
 

Discussions similaires

Réponses
0
Affichages
290

Statistiques des forums

Discussions
313 020
Messages
2 094 435
Membres
106 027
dernier inscrit
DonSparks