1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
| Option Explicit 'Force la déclaration des variables
Sub ari(iLigne As Integer)
Dim plage As Range
Dim ch As Chart 'Graphique créé
Const LIG_ENTETE = 6 'Numero de ligne entête
Const LIG_MOYENNE = 31 'Numéro de ligne moyenne
Dim iNbCol As Integer 'Nombre de colonne à traiter
' Définition de la feuille à traiter .. si plusieurs feuilles concernées ==> Passer la variable sh en paramétre de la procédure et supprimer les deux lignes suivante.
Dim sh As Worksheet 'Feuille de donnée
Set sh = ThisWorkbook.Sheets("T") 'Définie la feuille source de donné
iNbCol = DetermineDernierColonne(sh.Rows(iLigne)) 'Fonction renvoi numero derniére colonne non vide avec colonne 1 = C
If iNbCol = 0 Then
MsgBox ("veuillez remplir le tableau")
Exit Sub 'On abandonne
End If
With sh 'Pour être sur d'être sur la bonne feuille
Set plage = Application.Union(.Range(.Cells(LIG_ENTETE, 2), .Cells(LIG_ENTETE, 2 + iNbCol)), _
.Range(.Cells(iLigne, 2), .Cells(iLigne, 2 + iNbCol)), _
.Range(Cells(LIG_MOYENNE, 2), .Cells(LIG_MOYENNE, 2 + iNbCol)))
End With
Set ch = Charts.Add
ch.SetSourceData plage
ch.ChartType = xlLineMarkers
ch.Location Where:=xlLocationAsObject, Name:=sh.Name ' Créer le classer dans la feuille courante..
End Sub
'
' Détermine derniére colonne
'
Function DetermineDernierColonne(rLigne As Range)
Dim n As Integer
Dim i As Integer
For i = 3 To 15
If VarType(rLigne.Cells(1, i)) <> 0 Then
n = n + 1
End If
Next
DetermineDernierColonne = n
End Function |
Partager