Petit problème de macro
Bonjour,
dans le classeur en attachement j'ai créé une petite macro à partir de la feuille 1 qui fait le total des 2 colonnes A et B et s'applique à toutes les lignes de la matrice par double clic sur le bord inférieur de la cellule C2.
Je pensais naïvement qu'en appliquant cette macro à la feuille 2 ma colonne total allait être crée pour toutes les lignes (il y en a plus que sur la feuille 1) mais cela s'arrête à la ligne 4 car en fait le "double clic sur le bord inférieur de la cellule C2" n'équivaut qu'à appliquer la formule sur 2 lignes en dessous.
Y a t'il une méthode pour palier ce comportement?
Merci
Bonjour
Regarde ce code
Sub Total()
Sheets("Feuil1").Select
Range("C1") = "Total"
Range("C2").FormulaR1C1 = "=AVERAGE(RC[-2]:RC[-1])"
Range("C2").AutoFill Destination:=Range("C2:C" & Range("B65536").End(xlUp).Row)
Sheets("Feuil2").Select
Range("C1") = "Total"
Range("C2").FormulaR1C1 = "=AVERAGE(RC[-2]:RC[-1])"
Range("C2").AutoFill Destination:=Range("C2:C" & Range("B65536").End(xlUp).Row)
Range("H8").Select
Sheets("Feuil1").Select
ChDir _
"C:\Documents and Settings\MattJol.COMPAQ\Mes documents\Mes .xls\Excel Pratique"
End Sub@+Jean-Marie
Bonjour Jean-Marie,
peux tu me dire en français ce que fais cette macro.
J'ai essayer de suivre pas à pas mais quelquechose m'échappe ...
Merci d'avance.
RE...
Sub Total()
'Sélectionne la feuille Feuil1
Sheets("Feuil1").Select
'Ecrit Total dans la cellule C1 de la feuille
Range("C1") = "Total"
'Ecrit dans la cellule C2 la fonction moyenne
Range("C2").FormulaR1C1 = "=AVERAGE(RC[-2]:RC[-1])"
'Fait un glisser déposer de la formule sur le reste du tableau
'range("B65536).end(xlup).row retourne le numéro de la dernière qui contient une donnée
Range("C2").AutoFill Destination:=Range("C2:C" & Range("B65536").End(xlUp).Row)
etc
End Sub
@+Jean-Marie
Effectivement, je comprends mieux le "autofill destination".
Merci
Par contre je n'arrive pas à développer cette formule ou à la réutiliser pour par exemple encadrer des plages de cellules dont la hauteur varie en fonction de la postion de la dernière ligne.
Quelle est la méthode la plus simple pour progresser gentillement en VB. Aide Excel, bouquin, sommaire dans VB?
Merci
Bonsoir
Range("C2:C" & Range("B65536").End(xlUp).Row).xxxxxxxxxxAvec cette ligne, on affecte les propriétés de l'objet Range (cellule, plage de cellule)
Ci-dessous toutes les propriétés qui concernent l'objet Range
AddIndent, propriété
Address, propriété
AddressLocal, propriété
Application, propriété
Areas, propriété
Borders, propriété
Cells, propriété
Characters, propriété
Column, propriété
Columns, propriété
ColumnWidth, propriété
Comment, propriété
Count, propriété
Creator, propriété
CurrentArray, propriété
CurrentRegion, propriété
Dependents, propriété
DirectDependents, propriété
DirectPrecedents, propriété
End, propriété
EntireColumn, propriété
EntireRow, propriété
Font, propriété
FormatConditions, propriété
Formula, propriété
FormulaArray, propriété
FormulaHidden, propriété
FormulaLabel, propriété
FormulaLocal, propriété
FormulaR1C1, propriété
FormulaR1C1Local, propriété
HasArray, propriété
HasFormula, propriété
Height, propriété
Hidden, propriété
HorizontalAlignment, propriété
Hyperlinks, propriété
IndentLevel, propriété
Interior, propriété
Item, propriété (objet Range)
Left, propriété
ListHeaderRows, propriété
ListObject, propriété
LocationInTable, propriété
Locked, propriété
MergeArea, propriété
MergeCells, propriété
Name, propriété
Next, propriété
NumberFormat, propriété
NumberFormatLocal, propriété
Offset, propriété
Orientation, propriété
OutlineLevel, propriété
PageBreak, propriété
Parent, propriété
PivotField, propriété
PivotItem, propriété
PivotTable, propriété
Precedents, propriété
PrefixCharacter, propriété
Previous, propriété
QueryTable, propriété
Range, propriété (objets Application, Range ou Worksheet)
ReadingOrder, propriété
Resize, méthode
Row, propriété
RowHeight, propriété
Rows, propriété
ShowDetail, propriété
ShrinkToFit, propriété
Style, propriété
Summary, propriété
Text, propriété
Top, propriété
UseStandardHeight, propriété
UseStandardWidth, propriété
Validation, propriété
Value, propriété
Value2, propriété
VerticalAlignment, propriété
Width, propriété
Worksheet, propriété
WrapText, propriété
Je ne peux t'indiquer de livre pour commencer en VBA.
Sache qu'il y a un enregistreur (menu Outils/Macro/Nouvelle macro...) qui code en langage VBA toutes les actions que tu effectues dans Excel. C'est un bon moyen pour connaître les propriétés que tu peux utiliser pour les différents objet VBA.
Regarde le code ci-dessous, c'est un exemple tiré de l'enregistreur
Sub Macro1()
'
' Macro1 Macro
' Macro enregistrée le 22/03/2007 par JeanMarie
'
'
Range("A1:A" + Range("A65536").End(xlUp).Row).Select
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThick
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlThick
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlThick
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlThick
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
End Sub@+Jean-Marie
Oui, merci jean-marie pour cet exemple.
Je vais essayer de faire toute la mise en page de mes bordures à partir de ce code et de l'enregistreur, je pense que ce sera un excellent exercice pour commencer le VBA.
A bientôt