• Initiateur de la discussion Initiateur de la discussion Moa
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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.
 
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.
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
1
Affichages
606
Réponses
0
Affichages
597
Réponses
2
Affichages
1 K
Réponses
8
Affichages
1 K
Réponses
3
Affichages
1 K
Retour