Glisser une formule selon une variable

Fermé
Lolo - 5 juil. 2018 à 14:03
 lolo - 5 juil. 2018 à 19:32
Bonjour,

Débutant en VBA, j'essaie de trouver un code me permettant de glisser une formule selon un numéro de mois.

C'est à dire: si nous sommes en mars, la formule va jusque mars. Si nous sommes en avril, la formule va jusque avril.

Pour l'instant, je suis parti sur :

Sub Test()
'
' Test Macro
Dim Mois As Long
'
Selection.AutoFill Destination:=Range("B57:M" & Mois), Type:=xlFillDefault
Range("B57:M57").Select

End Sub


Bien évidemment cela ne fonctionne pas. Mais je ne sais pas comment faire.

Si quelqu'un peut m'aider, ca serait gentil :)

Merci à vous,

Laurent

2 réponses

Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 778
5 juil. 2018 à 15:07
bonjour,

Évitons de mettre la charrue avant les bœufs, voici un excellent cours VBA pour débutant (et plus) :
ftp://ftp-developpez.com/bidou/Cours/VBA/formationVBA.pdf
0
Bonjour,

Merci pour votre réponse. J'ai commencé à bouquiner à ce sujet mais je vais regarder votre document.
Cependant, j'ai souhaité ouvrir ce message car j'aimerais avancer sur mon projet et je ne suis pas sûr de pouvoir lire tous le document avant.

Bien à vous,
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 778
Modifié le 5 juil. 2018 à 15:27
Il me semble indispensable que tu suives ce cours, il y a de nombreuses erreurs dans ton code :
1, Mois n'est pas défini
2. les feuilles qui contiennent 2 Range ne sont pas référencées
3. le .Select est inutile
4. l'utilisation de Selection est vivement déconseillée
5. définir un argument nommé par sa valeur par défaut est totalement inutile (Type:=xlFillDefault)

Ça fait beaucoup trop d'erreurs sur tes deux seules ligne de code :
Selection.AutoFill Destination:=Range("B57:M" & Mois), Type:=xlFillDefault
Range("B57:M57").Select
0
JvDo Messages postés 1978 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 28 septembre 2020 858
5 juil. 2018 à 15:34
Bonjour à tous,

essaye quelque chose comme ça :
Sub Macro2()
    Dim mois As Integer
    mois = 11
    With ActiveSheet.Range("B57")
        .AutoFill Destination:=.Resize(1, mois), Type:=xlFillDefault
    End With
End Sub

J'ai considéré que tu voulais une recopie vers la droite de ta formule en B57 sur le nombre de cellules correspondant au mois.

Cordialement
0
Bonjour,
Oui c'est bien cela. J'ai réussi à réajuster sur mon classeur pour avoir:

Sub Macro2()
Dim mois As Integer
mois = Cells(1, 1)
With ActiveSheet.Range("B3")
.AutoFill Destination:=.Resize(1, mois), Type:=xlFillDefault
End With

With ActiveSheet.Range("B6")
.AutoFill Destination:=.Resize(1, mois), Type:=xlFillDefault
End With

With ActiveSheet.Range("B7")
.AutoFill Destination:=.Resize(1, mois), Type:=xlFillDefault
End With

With ActiveSheet.Range("B10")
.AutoFill Destination:=.Resize(1, mois), Type:=xlFillDefault
End With

With ActiveSheet.Range("B11")
.AutoFill Destination:=.Resize(1, mois), Type:=xlFillDefault
End With

With ActiveSheet.Range("B14")
.AutoFill Destination:=.Resize(1, mois), Type:=xlFillDefault
End With

With ActiveSheet.Range("B15")
.AutoFill Destination:=.Resize(1, mois), Type:=xlFillDefault
End With

With ActiveSheet.Range("B18")
.AutoFill Destination:=.Resize(1, mois), Type:=xlFillDefault
End With

With ActiveSheet.Range("B19")
.AutoFill Destination:=.Resize(1, mois), Type:=xlFillDefault
End With

With ActiveSheet.Range("B22")
.AutoFill Destination:=.Resize(1, mois), Type:=xlFillDefault
End With

With ActiveSheet.Range("B26")
.AutoFill Destination:=.Resize(1, mois), Type:=xlFillDefault
End With

With ActiveSheet.Range("B23")
.AutoFill Destination:=.Resize(1, mois), Type:=xlFillDefault
End With

With ActiveSheet.Range("B30")
.AutoFill Destination:=.Resize(1, mois), Type:=xlFillDefault
End With

With ActiveSheet.Range("B27")
.AutoFill Destination:=.Resize(1, mois), Type:=xlFillDefault
End With

With ActiveSheet.Range("B31")
.AutoFill Destination:=.Resize(1, mois), Type:=xlFillDefault
End With

With ActiveSheet.Range("B34")
.AutoFill Destination:=.Resize(1, mois), Type:=xlFillDefault
End With

With ActiveSheet.Range("B35")
.AutoFill Destination:=.Resize(1, mois), Type:=xlFillDefault
End With

With ActiveSheet.Range("B38")
.AutoFill Destination:=.Resize(1, mois), Type:=xlFillDefault
End With

With ActiveSheet.Range("B39")
.AutoFill Destination:=.Resize(1, mois), Type:=xlFillDefault
End With

End Sub


Merci !
0