Excel / macro à modifier /

Résolu/Fermé
benji71 Messages postés 738 Date d'inscription samedi 22 mars 2008 Statut Membre Dernière intervention 4 janvier 2015 - 21 sept. 2011 à 23:30
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 - 21 sept. 2011 à 23:49
Bonsoir à tous et ttes,

Grâce à l'un d'entre vous (pour ne pas le citer eriiic), j'ai un macro qui me permet d'imprimer 4 un certain nombre de mois à partir de la date indiqué dans la cellule e16.
Le principe est que si je veux imprimer, je clic sur la bouton avec la macro, il me demande le nombre de mois que je souhaite imprimer..et la magie s'opère...il imprime autant de mois que je souhaite (max 12).
Tout est super bien fait ..Mais j'aurais une demande.

Lorsque j'indique le nombre de mois (par ex. 3) la cellule e16, après avoir lancé l'impression indique le mois de décembre si le mois en e16 est octobre.

J'aurais souhaité faire en sorte que le mois indiqué en e16 reste le même, même après avoir lancé l'impression. Ce qui reviendrait à cliquer sur le bouton imprimer, répondre à la question du nombre de mois et puis ok et là, à la place que la date change, que celle-ci reste la même.

Vous l'aurez compris, les macros n'étant que tres peu mon terrain de jeu...j'en appelle à vos connaissance pour m'aider....voici la macro (made in eriiic)

Sub imprimer()
Dim nmois As Long, mois As Long, année As Long, m As Long, saisie As String
saisie = InputBox("Nombre de mois à imprimer ?", "Nombre de mois", 4)
If IsNumeric(saisie) Then
nmois = CLng(saisie)
If nmois > 12 Then nmois = 12
mois = Month([e16])
année = Year([e16])
For m = 1 To nmois
'MsgBox ("impression de " & Format([A20], "mmm/yyyy"))
Worksheets("SAEC - G.prév.").PrintOut copies:=2
mois = mois Mod 12 + 1
année = année - (mois = 1)
[e16] = DateValue("01/" & mois & "/" & année)
Next m
Else
MsgBox ("Saisie non conforme")
End If
End Sub


Merci de votre aide.

Berni///
A voir également:

2 réponses

eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
21 sept. 2011 à 23:36
Bonsoir,

essaie avec :
Sub imprimer()
    Dim nmois As Long, mois As Long, année As Long, m As Long, saisie As String, savDate As Date
    saisie = InputBox("Nombre de mois à imprimer ?", "Nombre de mois", 4)
    If IsNumeric(saisie) Then
        nmois = CLng(saisie)
        If nmois > 12 Then nmois = 12
        savDate = [E16]
        mois = Month([E16])
        année = Year([E16])
        For m = 1 To nmois
            'MsgBox ("impression de " & Format([A20], "mmm/yyyy"))
            Worksheets("SAEC - G.prév.").PrintOut copies:=2
            mois = mois Mod 12 + 1
            année = année - (mois = 1)
            [E16] = DateValue("01/" & mois & "/" & année)
        Next m
        [E16] = savDate
    Else
        MsgBox ("Saisie non conforme")
    End If
End Sub

eric
0
benji71 Messages postés 738 Date d'inscription samedi 22 mars 2008 Statut Membre Dernière intervention 4 janvier 2015 23
21 sept. 2011 à 23:39
quand c'est le papa d'une macro qui répond alors...on ne peut être mieux servi...

un tt grand merci...j'essai ça demain au bureau...car à la maison pas d'imprimante...

merci mr eriiic


berni//
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
21 sept. 2011 à 23:49
Ah, je suis arrivé pile-poil ;-)
a+
eric
0