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

https://www.excel-pratique.com/~files/doc/Macro.xls

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).xxxxxxxxxx

Avec 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

Rechercher des sujets similaires à "petit probleme macro"