AutoFill

M

Moa

Guest
Salut à tous !

Ca faisait longtemps..alors mille gros bisous aux filles et mille bonjours aux garçons.....!!!

J'ai fait une macro qui me recopie une formule de ma cellule active jusqu'en bas de mon tableau.

Sachant que mon tableau est variable et ma cellule active aussi.

Et ça fonctionne très bien

Voilà la bête... :

Sub AutoFill()

Dim NbreGrille As Long
Dim TestCol As Long
Dim TestLig As Long

TestCol = ActiveCell.Column
TestLig = ActiveCell.Row
NbreGrille = Range("B14") + 15

ActiveCell.Select

Selection.AutoFill Destination:=Range(Cells(TestLig, TestCol), Cells(NbreGrille, TestCol))
End Sub

En B14, c'est une formule qui me donne la dernière ligne de mon tableau.

Voilà le problème :

Il m'arrive d'avoir à recopier plusieurs formules dans plusieurs colonnes différentes, parfois contingües et même souvent, non-contingües.

Donc je dois relancer cette macro autant de fois que j'ai de formules à recopier.

La question :

Est-il possible de modifier cette macro afin de pouvoir sélectionner plusieurs cellules à recopier ?

Et si possible avec des cellules non contingües, mais par contre partant toujours sur la même ligne.

Sachant que pour ce cas, je ne peux pas utiliser le double-clic sur la poignée de recopie.

Merci beaucoup d'avance de vos lumières !

@ +

Moa
 
L

LaurentTBT

Guest
Bonjour Moa,

effectivement, cela faisait longtemps qu'on ne t'avait vu par ici!

Bon, voici un code qui devrait t'aller:

Sub AutoFill()

Dim NbreGrille As Long
Dim TestCol As Long
Dim TestLig As Long
Dim Cellule as range

For each Cellule in Selection
TestCol = Cellule.Column
TestLig = Cellule.Row
NbreGrille = Range("B14") + 15

Cellule.AutoFill Destination:=Range(Cells(TestLig, TestCol), Cells(NbreGrille, TestCol))
Next cellule
End Sub


Il suffit de lancer la macro après avoir sélectionné les cellules que tu veux copier (cellules non contingües possibles)

Bonne journée.
Laurent.
 
L

LaurentTBT

Guest
Bonsoir à tous.

Celeda m'a demandé des explications sur cette macro, notamment sur les variables de Moa.
J'avoue ne pas avoir creusé et avoir répondu très rapidement à la question.
Voilà maintenant le code équivalent, mais un peu simplifié:

Sub AutoFill()
Dim Cellule As Range
For Each Cellule In Selection
Cellule.AutoFill Destination:=Cellule.Resize(Range("B14") + 1, 1)
Next Cellule
End Sub

Resize est très interressant, on ne l'utilise pas assez souvent.
Ici, il permet de créer un range de dimension voulue (nombre de lignes = Range("B14")+1, nombre de colonne=1), à partir du range Cellule.

Bonne soirée à tous, et bon courage pour ce début de semaine.
Laurent.
 
C

Celeda

Guest
Bonsoir,

Et ben mon grand, je te remercie pour tout et le fichier et les explications, tu pourras te reconvertir quand tu seras plus vieux !! formateur pour des celeda en mal de vba.....hi hi hi hi

merci Laurent



Celeda
 

Statistiques des forums

Discussions
312 971
Messages
2 094 046
Membres
105 927
dernier inscrit
rayade baali