[VBA / macro excel] remise à vide de cellules à chaque début de mois.

Résolu
cs_hazzel Messages postés 20 Date d'inscription jeudi 13 novembre 2008 Statut Membre Dernière intervention 19 juillet 2013 - 25 nov. 2008 à 19:18
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 25 avril 2012 à 16:18
Bonjour à tous,

Je souhaiterai savoir s'il était possible à l'ouverture d'un classeur excel, de prendre en compte la date (inscrite dans une cellule via "(date)" ) et qu'à chaque 1er du mois, une macro d'ouverture inscrit 0 dans chaque cellule d'une zone de colonne définie ? De plus il faudrait que cette macro ne soit executé qu'une fois par mois. Autrement dit, une seule fois à l'ouverture du 1er du mois, et que les ouverture suivante n'entraine pas la mise à 0 ; juqu'au mois suivant.

Merci de votre attention ^_^

ps : une petite question HS : quelle est la commande qui permet sous VBA d'enregistrer le classeur ?

18 réponses

cs_Orohena Messages postés 577 Date d'inscription vendredi 26 septembre 2008 Statut Membre Dernière intervention 20 novembre 2010 4
25 nov. 2008 à 19:50
Bonjour hazzel


Pour que le code ci-dessous fonctionne, tu dois avoir une cellule nommée DerniereInit dans ta feuille. Celle-ci enregistre la date de la dernière remise à zéro, ce qui permet d'obtenir une raz et une seule en début de mois.


Dans cet exemple, la zone de colonne à remettre à zéro est B1:B30.



Sub auto_open()
    Dim zone As Range, r As Range
    Set zone = Range("B1:B30")
    If Day(Date) = 1 And Month(Range("DerniereInit").Value) <> Month(Date) Then
        For Each r In plage
            r.Value = 0
        Next
    Range("DerniereInit").Value = Date
    End If
End Sub


Pour enregistrer le classeur, utilise la méthode Save de l'objet Workbook

Amicalement
3
cs_Orohena Messages postés 577 Date d'inscription vendredi 26 septembre 2008 Statut Membre Dernière intervention 20 novembre 2010 4
25 nov. 2008 à 20:39
userrrqi115 a tout à fait raison, la procédure événementielle Workbook_Open est préférable à Auto_Open, qui est obsolète. Il vaut mieux également préciser la feuile de calcul sur laquelle s'opère la mise à jour. Avec ces corrections, mon sub devient :

Private Sub WorkBook_Open()
    Dim zone As Range, r As Range
    Set zone = WorkSheets("Feuil1"). Range("B1:B30")
    If Day(Date) = 1 And Month(Range("DerniereInit").Value) <> Month(Date) Then
        For Each r In zone
            r.Value = 0
        Next
    Range("DerniereInit").Value = Date
    End If
End Sub

Amicalement
3
cs_Orohena Messages postés 577 Date d'inscription vendredi 26 septembre 2008 Statut Membre Dernière intervention 20 novembre 2010 4
25 nov. 2008 à 19:54
Bien lire



For Each r In zone


au lieu de



For each r in plage


Sorry
0
userrrqi115 Messages postés 181 Date d'inscription mardi 18 novembre 2008 Statut Membre Dernière intervention 4 février 2011
25 nov. 2008 à 20:05
Hello hazzel,

pour ce qui est de la partie de prendre en compte une date à l'ouverture du classeur il te faut utiliser l'evennement suivant :
Private Sub Workbook_Open()     (à saisir dans la fenêtre code de l'objet Workbook)
et de la faire suivre des instructions voulues (sélection d'une cellule, déterminer la date du jour, test sur cette dernière et exécution si test ok)

pour le HS, voici l'instruction te permettant d'enregister le classeur sur lequel tu es:
ActiveWorkbook.SaveAs Filename:="Lecteur:\Dossier\Sous dossier\workbook.xls", FileFormat:=xlNormal _
        , Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
        CreateBackup:=False
Je regrette de te donner cela car tu aurais pu tout aussi bien l'obtenir à l'aide de l'enregistreur de macro...

BR

USERRRQI115
Simple user
Great brain

Pensée du jour : " Ouvrez votre esprit, voyez la porte fermée en tant que celle qui n'est pas encore ouverte".
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_hazzel Messages postés 20 Date d'inscription jeudi 13 novembre 2008 Statut Membre Dernière intervention 19 juillet 2013
26 nov. 2008 à 10:46
Un grand merci à tous,
Pour se qui est de la macro d'ouverture,  elle fonctionne à merveille, encore merci ^_^

En se qui concerne la macro pour enregistrer, j'ai bien essayé de la faire en macro automatique, mais à chaque fois le module était vide, et impossible de connaître la formule VBA : /


Dans mon classeur j'ai deja une macro d'ouverture donnant l'heure et la date, auquel j'ai rajouté la macro que vous m'avez conseillé!
0
trahim Messages postés 2 Date d'inscription jeudi 22 juillet 2010 Statut Membre Dernière intervention 10 août 2010
10 août 2010 à 09:41
bonjour
est ce que vous pouvez m'aider pour faire un programme qui peut fair quelque chose comme :

Private Sub Workbook_Open()
Dim x As Integer, y As Integer

For x = 1 To 3
For y = 1 To 5
For F = 1 To 5
For H = 1 To 5
Cells(x, y) = "[lmnop.xlsx]Feuil1!cells(F, H)"
Next H
Next F
Next y
Next x


End Sub

merci pour votre aide
0
Nemo1106 Messages postés 10 Date d'inscription mardi 17 avril 2012 Statut Membre Dernière intervention 21 mai 2012
25 avril 2012 à 10:46
Bonjour !

Moi j'aimerais qu'à l'ouverture de mon fichier BON_COMMANDE.xls ma page soit vierge !

Quel est le code à utilisr svp ?

Merciii
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
25 avril 2012 à 10:55
Bonjour, nemo110G
Ouvre ton aide VBA sur le mot ClearContents.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
Nemo1106 Messages postés 10 Date d'inscription mardi 17 avril 2012 Statut Membre Dernière intervention 21 mai 2012
25 avril 2012 à 11:01
Je n'ai pas ClearContents, j'ai seulement ClearArrows ou ClearCircles :/
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
25 avril 2012 à 11:28
Je n'ai pas ClearContents

Tu es allé dans l'aide VBA, a frappé ClearContents et rien n'a été trouvé ?
Ru es sûr ?
Si oui : avec quelle version de Excel ?


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
Nemo1106 Messages postés 10 Date d'inscription mardi 17 avril 2012 Statut Membre Dernière intervention 21 mai 2012
25 avril 2012 à 11:40
la version c'est 2003 oui j'suis sûre
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
25 avril 2012 à 11:43
Tu es "sûre" !
Ben ... je viens de regarder sur un portable avec Excel 2003 (que je mets rarement en route) ===>> cette rubrique y est bel et bien !


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
Nemo1106 Messages postés 10 Date d'inscription mardi 17 avril 2012 Statut Membre Dernière intervention 21 mai 2012
25 avril 2012 à 11:49
beh en cliuqnat sur F1 et en mettant ClearContents dans l'espace réservé il ne trouve rien
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
25 avril 2012 à 11:52
va DANS ton aide VBA. Elle est là pour cela !
Et si installée ===> elle fonctionne fort bien
Si pas installée ===>> à installer dans les plus brefs délais.

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
25 avril 2012 à 11:55
Et regarde : je mùe suis même "fendu" pour voir si, en plus, on ne la trouvait pas dans msdn pour Excel 2003 ===>> quelques secondes et ===>>
Tapez le texte de l'url ici.
Comment expliques-tu cette différence de réflexes, toi ?


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
Nemo1106 Messages postés 10 Date d'inscription mardi 17 avril 2012 Statut Membre Dernière intervention 21 mai 2012
25 avril 2012 à 11:58
lol merci bcp !
0
Nemo1106 Messages postés 10 Date d'inscription mardi 17 avril 2012 Statut Membre Dernière intervention 21 mai 2012
25 avril 2012 à 15:50
RE bonjour !

Je me permets de revenir vers vous...

Voilà mon pb:

J'ai 2 tables ds ma base de données access : COMMANDE (cle primaire Num_ref) ET FOURNISSEUR (clé primaire Nom_ent et clé étrangère Num_ref)

J'ai fait un code permettant d'enregistrer des valeurs dans ces 2 tables d'ACCESS via EXCEL par un bouton de macro et par une requête.

Cependant, les enregistrements pour la table COMMANDE se fait à merveille mais pour la table FOURNISSEUR pas du tt. J'aimerais comprendre.

Voici mon code :

For ligne = 20 To 32
If Val(Feuil1.Cells(ligne, 1)) > 0 Then

objRS.AddNew 'ajoute à la table

'TABLE COMMANDE
objRS("Num_ref").Value = Feuil1.Cells(11, 3)
objRS("Num_ligne").Value = Feuil1.Cells(ligne, 1)
objRS("Qte_pdt").Value = Feuil1.Cells(ligne, 2)
objRS("Libelle_pdt").Value = Feuil1.Cells(ligne, 3)
objRS("Ref_pdt").Value = Feuil1.Cells(ligne, 4)
objRS("Num_aff").Value = Feuil1.Cells(ligne, 5)
objRS("P_U").Value = Feuil1.Cells(ligne, 6)

' TABLE FOURNISSEUR
' objRS("Nom_Ent").Value = Feuil1.Nom_Ent.Text
' objRS("Ad_ent").Value = Feuil1.Cells(3, 5)
' objRS("Nom_FRN").Value = Feuil1.Cells(4, 5)
' objRS("Tel_FRN").Value = Feuil1.Cells(5, 5)
' objRS("Mail_FRN").Value = Feuil1.Cells(6, 5)
objRS.Update 'ecriture ds la table
End If
Next


J'espère que vous avez compris !!
Merci bcp
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
25 avril 2012 à 16:18
Cette nouvelle question n'a plus rien à voir avec l'objet de la présente discussion. C'est évident.
Tu es donc invité à ouvrir une nouvelle discussion, à part entière.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
Rejoignez-nous