Bonjour
Est-il possible avec une macro, de faire la même chose que dans Excel, à savoir :
lorsque l'on double clique sur le petit carré en bas à droite d'une cellule sélectionnée,
le remplissage des cellules suivantes de la colonne se fait automatiquement jusqu'à la dernière ligne ?
Dans le fichier simplifié joint, les colonnes C, F et H sont à remplir automatiquement.
L'onglet AVANT correspond à ce que j'ai.
L'onglet APRES correspond à ce que je veux au final.
(Sur les fichiers définitifs, les colonnes à remplir ne seront pas celles du fichier simplifié mais je pense que ce sera adaptable)
Merci
Sub test_ok()
Dim i&, rng As Range
Set rng = Cells(1).CurrentRegion.SpecialCells(xlCellTypeBlanks)
For i = 1 To rng.Areas.Count
rng.Areas(i).Formula = rng.Areas(i).Item(1).Offset(-1).Formula
Next
End Sub
Test OK sur PC
NB: Sinon le raccourci CTRL+B marche trés bien aussi
(même sur une sélection multiple)
D'ailleurs la macro du message#2 n'est que la transcription en VBA de ce fameux raccourci
Merci pour votre réponse rapide.
mais les fichiers que je reçois ont un nombre de ligne variable.
je ne sais pas comment indiquer d'aller jusqu'à la dernière ligne.
Effectivement cela marche sur le fichier simplifié mais sur le fichier définitif, cela rempli toutes les cellules vides.
Or il faut seulement modifier les colonnes L, W, Y
Merci
Private Sub MaJ()
Application.ScreenUpdating = False
Dim Derlig&
With Worksheets("WDPD1359 - MR BRICOLAGE")
Derlig = .Range("A" & Rows.Count).End(xlUp).Row
.Range("L2:L" & Derlig).FillDown
.Range("W2:W" & Derlig).FillDown
.Range("Y2:Y" & Derlig).FillDown
End With
End Sub
C'est vrai que souvent le demandeur ne met pas un fichier représentatif de sa problématique.
A savoir ici il aurait mis dans son exemple le nom de son onglet et les colonnes à traiter (L,W,Y) 7 post aurait été épargné, mais je n'aurais point pu te donner le bonjour....
Sub Test_OK_B()
Dim i&, rng As Range
Set rng = Union([L:L].SpecialCells(4), [W:W].SpecialCells(4), [Y:Y].SpecialCells(4))
For i = 1 To rng.Areas.Count
rng.Areas(i).Formula = rng.Areas(i).Item(1).Offset(-1).Formula
Next
End Sub
Phil
Exact.
Mais perdre du temps un jour férié, c'est malaisant comme dirait ma nièce
(Non, je plaisante)
D'ailleurs en parlant de plaisanterie, le code précédent en avait des miettes
Donc code corrigé
VB:
Sub Test_OK_B()
Dim i&, r As Range
Set r = Union([L:L].SpecialCells(4), [W:W].SpecialCells(4), [Y:Y].SpecialCells(4))
For i = 1 To r.Areas.Count
r.Areas(i).Offset(-1).Resize(r.Rows.Count + 1) = r.Areas(i).Item(1).Offset(-1).Formula
Next
End Sub
En mixant mon message#2 avec le message#12
Je simplifie ainsi
VB:
Sub Test_OK_C()
Dim i&, r As Range
Set r = Union([L2], [L:L].SpecialCells(4), [W2], [W:W].SpecialCells(4), [Y2], [Y:Y].SpecialCells(4))
r.FillDown
End Sub
=>Phil
Tu ne vois pas de biais possible?
Cela semble fonctionner non?
Désolé d'avoir fourni un fichier simplifié, je pensais bien faire, mais pas vous faire perdre de temps !
Surtout un jour férié !
La dernière macro fonctionne parfaitement.
Merci à tous