Suite à de nombreuses questions posées sur le forum et relatives à VBA Excel, j?ai décidé de créer ce petit tutorial qui aidera les débutants à de familiariser avec VBA.
Les quelques bases necessaires au travail sous Excel seront réunies dans ce tutorial, qui n?a pas plus d?ambition que de fournir un point de départ.
Les différentes méthodes décrites par la suite ne sont évidemment pas les seules possibles, ni même les meilleures, mais elles fonctionnent.
Commencons par les bases :
Selection d'une feuille
Sheets("NomDeLaFeuille").Select
Selection d'une cellule
Range("A1).Select
Ouverture d'un autre fichier Excel
ChDir "Chemin du repertoire du fichier"
Workbooks.Open Filename:= _
" Chemin du repertoire du fichier\fichier.xls "
Fermeture d'un fichier
ActiveWindow.Close pour fermer le fichier en cours
Ou
Workbooks.Close Filename:= _
" Chemin du repertoire du fichier\fichier.xls "
Maintenant que les bases sont posées, voyons comment parcourir le fichier :
Parcourir les lignes
i = 1
Sheets("Base").Select
While Not Range("A" & i & "").Value = ""
i = i + 1
Wend
=> Permet de se placer sur la premiere ligne vide
Parcourir les colonnes
While Cells(1, i) <> ""
i = i + 1
Wend
'permet de trouver la lettre associée au chiffre pour la colonne
NumCol = Cells(1, i).Column
lettre = IIf(NumCol > 26, Chr(64 + NumCol \ 26) & Chr(64 + NumCol Mod 26), Chr(64 + NumCol))
=> Se place sur la premiere colonne vide
Maintenant que nous savons parcourir, voyons comment tirer des formules, adapter un graphique?
Tirer les formules
Range("A3:Z3").Select ?selection de la ligne contenant la formule
Selection.AutoFill Destination:=Range("A3:Z" & i - 1 & ""), Type:=xlFillDefault
Range("A3:Z" & i - 1 & "").Select
Adapter un graphique
ActiveSheet.ChartObjects("Graphique 3").Activate
ActiveChart.SeriesCollection(3).Select
ActiveChart.SeriesCollection(3).XValues = "='% Nom classeur?!R4C1:R" & i & "C1"
ActiveChart.SeriesCollection(1).XValues = "='% Nom classeur?!R4C1:R" & i & "C1"
ActiveChart.SeriesCollection(2).XValues = "='% Nom classeur?!R4C1:R" & i & "C1"
ActiveChart.SeriesCollection(3).Values = "='% Nom classeur?!R4C5:R" & i & "C5"
ActiveChart.SeriesCollection(2).Select
ActiveChart.SeriesCollection(2).Values = "='% Nom classeur?!R4C7:R" & i & "C7"
ActiveChart.SeriesCollection(1).Select
ActiveChart.SeriesCollection(1).Values = "='% Nom classeur?!R4C3:R" & i & "C3"
Cela permet de prendre en compte toutes les données et de les associer au graphique
Adapter la taille des cellules
'redimensionnement des cellules
Rows("2:" & i & "").Select
Selection.RowHeight = 25
Range("A1:H1").Select
Changer les bordures
' on s'occupe des bordures du tableau
Range("B3:H" & i & "").Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
Ce code permet de mettre des bordures interieures et exterieures sur un tableau. Le 'i' permet de se placer sur la derniere ligne du tableau.
Recuperer une valeur sur une autre feuille
nb = Range("B" & i & "").Value
Sheets("nb rebut").Select
Range("C" & j & "").Value = nb
Insérer ou effacer une ligne
Rows("4:4").Select
Selection.Delete Shift:=xlUp ' pour supprimer
Rows("5:5").Select
Selection.Insert Shift:=xlDown ' pour insérer
Voila, je l'espère, quelques morceaux de codes qui pourront vous aider. Je ne suis pas un pro en VBa, mais j'ai du travailler un peu dessus, et j'ai vu pas mal de questions qui trouveront des réponses dans ces quelques lignes. Ce tutorial est loin d'être exhaustif, les méthodes utilisées ne sont peut être pas toujours les bonnes, mais je suis à l'écoute de toutes autres maniéres de procéder !
Bonne programmation
Tof008