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 nécessaires 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.
'sélection d'une feuille Sheets("NomDeLaFeuille").Select 'sélection 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 première 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 première colonne vide
Maintenant que nous savons parcourir, voyons comment tirer des formules, adapter un graphique.
Range("A3:Z3").Select 'sélection de la ligne contenant la formule Selection.AutoFill Destination:=Range("A3:Z" & i - 1 & ""), Type:=xlFillDefault Range("A3:Z" & i - 1 & "").Select
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
'redimensionnement des cellules Rows("2:" & i & "").Select Selection.RowHeight = 25 Range("A1:H1").Select
' 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 intérieures et extérieures sur un tableau. Le 'i' permet de se placer sur la dernière ligne du tableau.
nb = Range("B" & i & "").Value Sheets("nb rebut").Select Range("C" & j & "").Value = nb
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