Problème macro autofill

Bonjour,

Néophite en VBA, je suis passée par l'enregistreur pour créer une macro simple :

Recopier vers le bas sur une plage fixe la formule de la cellule selectionnée.

J'avais déjà réussi à faire fonctionner cette macro mais là erreur :

"Une variable est attendue" au niveau de selection?

Pourriez vous m'expliquer?

Sub Remplissage_arrets()

'

' Remplissage_arrets Macro

' Transfert des chiffres de l'extraction dans la colonne préselectionnée.

'

'

selection.AutoFill Destination:=Range("C4:C252"), Type:=xlFillDefault

Range("C4:C252").Select

ActiveWindow.ScrollRow = 199

ActiveWindow.ScrollRow = 140

ActiveWindow.ScrollRow = 122

ActiveWindow.ScrollRow = 59

ActiveWindow.ScrollRow = 45

ActiveWindow.ScrollRow = 1

End Sub

Merci.

Bonjour,

En fait il faut d'où tu pars pour recopier ta formule.

Selection correspond à la cellule sélectionnée.

Dans ton cas, quelle est la cellule de référence que tu prends avant de recopier

A te relire

Edit Dan :

Un exemple pour ta macro si l'on considère que la cellule à recopier en en C2

Sub Remplissage_arrets()
' Remplissage_arrets Macro
' Transfert des chiffres de l'extraction dans la colonne préselectionnée.
Range("C2").AutoFill Destination:=Range("C2:C252"), Type:=xlFillDefault
End Sub

Oui mais si j'inscris C2 comme point de départ, la macro recopiera forcément la même colonne C, même si je suis placée en B2 ou E2 lorsque le bouton sera cliqué?


J'ai cru que mon erreur venait de ce que je n'avais pas activé "Utiliser les références relatives" lors de l'enregristrement de la macro mais hélas, non. Ce qui m'intrigue c'est que j'avais déjà fait exctement la même manipulation, il y a quelque jours et cela marchait parfaitement: la recopie s'effectuait bien dans la colonne de la cellule selectionnée.

Comment puis-je faire pour que la formule de ma cellule selectionnée soit étendue 245 lignes plus bas.

Puis la plage à nouveau selectionnée et copiée en valeurs?

D'avance merci de vos lumières.

A+

CC

bonjour,

Peux_tu joindre un fichier exemple

avec explications de ce que tu veux

Amicalement

Claude

Voilà,

j'ai refait un petit fichier pour illustrer ma difficulté.

J'aimerais qu'en me plassant en C3 (qui dans la réalité contient une longue formule recherchv) puis en cliquant sur le bouton de remplissage de donner la formule C3 soit recopiée jusqu'à la ligne 34.

Puis j'aimerais pouvoir selectionner la plage de le colonne de de la cellule selectionnée et en recopier les valeurs pour les inscrire définitivement, etc.

Pouvez m'indiquer pourquoi "selection" n'est pas reconnu dans la procédure autofill?

Merci.

145classeur1.xlsm (19.76 Ko)

Re

J'aimerais qu'en me plassant en C3 (qui dans la réalité contient une longue formule recherchv) puis en cliquant sur le bouton de remplissage de donner la formule C3 soit recopiée jusqu'à la ligne 34

Je t'ai donné la solution avant ...

Remplace ta Macro 10 par celle-ci (elle n'est valable que pour la colonne C. Ce dont tu parles bien sûr)

Sub Macro10()
Range("C3").AutoFill Destination:=Range("C3:C34"), Type:=xlFillDefault
End Sub

Puis j'aimerais pouvoir selectionner la plage de le colonne de de la cellule selectionnée et en recopier les valeurs pour les inscrire définitivement, etc.

C'est quoi que tu veux recopier en dur ?

Ce que tu cherches à faire, c'est recopier la formule en C3 jusque C34 puis éliminer les formules depuis C3 jusque C34 pour ne plus avoir que des valeurs au lieu des formules ?? Si oui, ta macro 11 devient celle ci-après :

Sub Macro11()
With Range("C3:C34")
    .Copy
    .PasteSpecial Paste:=xlPasteValues
End With
Application.CutCopyMode = False
End Sub

A te relire

Bonsoir à tous,

vois si c'est çà que tu veux ?

Sub essai()
Dim Lg&, cL%
    Lg = Range("b" & Rows.Count).End(xlUp).Row
    cL = ActiveCell.Column

    Cells(3, cL).AutoFill Destination:=Range(Cells(3, cL), _
    Cells(Lg, cL)), Type:=xlFillDefault

    '--- en dur à partir de ligne 4 ---
    Range(Cells(4, cL), Cells(Lg, cL)) = Range(Cells(4, cL), Cells(Lg, cL)).Value
End Sub

Amicalement

Claude

Bonjour,

Merci pour vos réponses, j'ai pu avancer un peu.

Mon soucis est que j'ai plus de 60 colonnes à remplir donc je souhaite créeer un seul bouton qui lance la macro de recopie sur la colonne en fonction de la celule activée avant le lancement du bouton.

Dubois, ta proposition me semble intéressante. Mais j'ai du mal à comprendre la définiton des variables Lg et cL.

Si j'ai bien suivis Lg renvoie le nombre de ligne et cL la colonne active. Puisque ma plage est fixe : de la ligne 4 à la ligne 254 de la colonne active, comment puis-je modifier le code pour que le recopie s'efefctue sur cette plage (et non pas jusqu'aux dernières lignes renseignées du tableaux?

Merci.

Sub essai()

Dim Lg&, cL%

Lg = Range("b" & Rows.Count).End(xlUp).Row

cL = ActiveCell.Column

Cells(4, cL).AutoFill Destination:=Range(Cells(4, cL), _

Cells(Lg, cL)), Type:=xlFillDefault

'--- en dur à partir de ligne 4 ---

' Range(Cells(4, cL), Cells(Lg, cL)) = Range(Cells(4, cL), Cells(Lg, cL)).Value

End Sub

re,

essaie comme ceci :

Pour le collage des valeurs

Sub Macro1()
'Macro Dan
Dim col As String
Dim lig As Integer
col = Mid(ActiveCell.Address, 1, 2)
lig = Range("A" & Rows.Count).End(xlUp).Row
With Range(col & "4:" & col & lig)
    .Copy
    .PasteSpecial Paste:=xlPasteValues
End With
Application.CutCopyMode = False
End Sub

Pour recopier la formule :

Sub Macro2()
Dim col As String
Dim lig As Integer
col = Mid(ActiveCell.Address, 1, 2)
lig = Range("A" & Rows.Count).End(xlUp).Row
Range(col & "3").AutoFill Destination:=Range(col & "3:" & col & lig), Type:=xlFillDefault
End Sub

Pour exécuter, positionnne toi sur une cellule en ligne 2 puis clique sur le bouton associé à la macro

Amicalement

Merci Dan,

J'ai finalement repris la macro précédente en la simplifiant. ça a l'air de fonctionner tout à fait.

Sub Remplissage()

Dim Lg&, cL%

Lg = 254

cL = ActiveCell.Column

If MsgBox("Etes-vous placé dans la colonne de la semaine extraite ?", vbYesNo, "Demande de confirmation") = vbYes Then

Cells(4, cL).AutoFill Destination:=Range(Cells(4, cL), _

Cells(Lg, cL)), Type:=xlFillDefault

MsgBox "Inscrivez les heures de production de la semaine en ligne3."

End If

End Sub

Sub Inscription_des_valeurs()

Dim Lg&, cL%

Lg = 254

cL = ActiveCell.Column

If MsgBox("Avez-vous vérifier la validation de la semaine extraite?", vbYesNo, "Demande de confirmation") = vbYes Then

Range(Cells(5, cL), Cells(Lg, cL)) = Range(Cells(5, cL), Cells(Lg, cL)).Value

Cells(263, cL).Value = "Ok"

Cells(263, cL).Select

End If

End Sub

Merci de votre aide.

Rechercher des sujets similaires à "probleme macro autofill"