[Résolu] Variables et Autofill : Aide au développement

Fouiny

XLDnaute Nouveau
Bonjour à tous,

Afin d'automatiser certaines procédures, je souhaite qu'une macro détermine la dernière ligne non vide, la dernière colonne non vide et qu'en fonction de ces variables elle remplisse la ligne de 1 de la dernière colonne avec une entête, la ligne 2 avec une formule et qu'elle recopie la formule jusqu'à la dernière ligne.

Mon problème se situe au niveau de la dernière étape...

Code:
Sub exemple()
'
' Macro5 Macro
Dim dc1 As Long
Dim dl1 As Long
Dim f1 As String


ThisWorkbook.Sheets("Exemple").Select

dc1 = Range("iv1").End(xlToLeft).Column + 1
dl1 = Range("C65536").End(xlUp).Row
f1 = _
        "=Sum(R[0]C[-2],R[0]C[-1])"
        
ThisWorkbook.Sheets("Exemple").Cells(1, dc1).FormulaR1C1 = "Total"
ThisWorkbook.Sheets("Exemple").Cells(2, dc1).FormulaR1C1 = f1

Cells(2, dc1).AutoFill Destination:=Range(Cells(2, dc1), Cells(dc1, dl1)), Type:=xlFillDefault

End Sub

J'ai fait un petit fichier d'exemple, en espérant que ça vous aidera...

D'avance merci pour vos réponses.

Fouiny
 

Pièces jointes

  • exemple.xls
    35.5 KB · Affichages: 47
  • exemple.xls
    35.5 KB · Affichages: 41
  • exemple.xls
    35.5 KB · Affichages: 39
Dernière édition:

Pierrot93

XLDnaute Barbatruc
Re : Variables et Autofill : Aide au développement

Bonjour,

pas ouvert le fichier, mais à première vue, il semble que les argumets du dernier "cells" soient inversés...
Code:
Cells(dc1, dl1))

au lieu de :
Code:
Cells(dl1, dc1))

bon après midi
@+
 

Staple1600

XLDnaute Barbatruc
Re : Variables et Autofill : Aide au développement

Bonjour Fouiny, Pierrot93, le fil

Tu peux ne pas utiliser AutoFill
Code:
Sub exemple()
Dim dc1 As Long
Dim dl1 As Long
Dim f1 As String

With ThisWorkbook.Sheets("Exemple")
dc1 = .Range("iv1").End(xlToLeft).Column + 1
dl1 = .Range("B65536").End(xlUp).Row
f1 = _
        "=Sum(R[0]C[-2],R[0]C[-1])"
.Cells(1, dc1).FormulaR1C1 = "Total"
.Cells(2, dc1).Resize(dl1 - 1).FormulaR1C1 = f1
End With
End Sub
 

pierrejean

XLDnaute Barbatruc
Re : Variables et Autofill : Aide au développement

Bonjour Fouiny

Code:
Sub exemple()
Dim dc1 As Long
Dim dl1 As Long
Dim f1 As String
 With ThisWorkbook.Sheets("Exemple")
dc1 = .Range("iv1").End(xlToLeft).Column + 1
dl1 = .Cells(65536, dc1 - 1).End(xlUp).Row
f1 = "=Sum(R[0]C[-2],R[0]C[-1])"
.Cells(1, dc1).FormulaR1C1 = "Total"
.Cells(2, dc1).FormulaR1C1 = f1
.Cells(2, dc1).AutoFill Destination:=.Range(.Cells(2, dc1), .Cells(dl1, dc1)), Type:=xlFillDefault
End With
End Sub

Edit: Salut Pierrot :) Staple :)
 

Staple1600

XLDnaute Barbatruc
Re : Variables et Autofill : Aide au développement

Re , Bonjour Pierrejean

S'il faut adapter la formule selon les colonnes, voir les modifs ci-dessous
(j'ai donc remplacer la , par : dans la formule pour sommer toutes les colonnes)
Code:
Sub exempleBIS()
Dim dc1 As Long
Dim dl1 As Long
Dim f1 As String

With ThisWorkbook.Sheets("Exemple")
dc1 = .Range("iv1").End(xlToLeft).Column + 1
dl1 = .Cells(65536, dc1 - 1).End(xlUp).Row
f1 = _
        "=Sum(R[0]C[-" & dc1 - 1 & "]:R[0]C[-1])"
.Cells(1, dc1)= "Total" 'ici pas besoin du FormulaR1C1
.Cells(2, dc1).Resize(dl1 - 1).FormulaR1C1 = f1
End With
End Sub

PS: sauf erreur tu peux simplifier ta formule
Code:
f1 = _
        "=Sum(RC[-" & dc1 - 1 & "]:RC[-1])"
 
Dernière édition:

Fouiny

XLDnaute Nouveau
Re : Variables et Autofill : Aide au développement

Bonjour à tous!

Merci bcp pour l'ensemble de vos réponses rapides et pertinentes !

Effectivement ne pas utiliser autofill me donne bcp plus de contrôle sur ma macro :). Je n'avais pas du tout pensé à utiliser Resize mais c'est également un conseil très avisé !!

Merci encore à tous !

Fouiny

Ps : @Staple1600 : effectivement on peut simplifier la formule.. c'est une faute dans mon fichier exemple (la formule utilisée dans mon fichier est... plus complexe).
@Pierrot93 : effectivement j'avais inversé involontairement dl1 et dc1...
 

Discussions similaires

Réponses
7
Affichages
374
Réponses
1
Affichages
177

Statistiques des forums

Discussions
312 330
Messages
2 087 346
Membres
103 525
dernier inscrit
gbaipc