XL pour MAC Macro pour remplissage automatique de cellules

Ebene

XLDnaute Nouveau
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
 

Pièces jointes

  • Fichier 2.xlsx
    12 KB · Affichages: 17

Staple1600

XLDnaute Barbatruc
Re

En continuant mes tests, j'en suis arrivé à ceci
VB:
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 ;)
 

Ebene

XLDnaute Nouveau
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
 

Pièces jointes

  • fichier3.xlsx
    12.4 KB · Affichages: 7

Phil69970

XLDnaute Barbatruc
Bonjour @Ebene, @Staple1600, le forum

Je te propose ceci:
VB:
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
*Edit : J'ai rajouté le fichier

@Phil69970
 

Pièces jointes

  • Colonnes L W Y_V1.xlsm
    20.7 KB · Affichages: 7

Phil69970

XLDnaute Barbatruc
Re

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

@Phil69970
 

Staple1600

XLDnaute Barbatruc
Re

Donc en adaptant ma macro précédente
VB:
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
 

Staple1600

XLDnaute Barbatruc
Re

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
 

Staple1600

XLDnaute Barbatruc
Re

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?
 

Discussions similaires

Statistiques des forums

Discussions
312 107
Messages
2 085 358
Membres
102 874
dernier inscrit
Petro2611