Bonton actif du 1er janvier au 10

Tungstene

XLDnaute Occasionnel
Bonjour,

J'ai un fichier avec plein de données.
J'ai un bouton sur une usf.

L'idée est que je voudrais que ce bouton soit uniquement actif entre le 1er janvier et le 10, afin de remettre à zéro mon fichier pour la nouvelle année. Donc, je veux que le reste de l'année ce bouton soit inactif. Soit impossible de cliquer dessus, soit on clique mais annule la procédure (ex, ça affiche un msgbox indiquant l'activité du bouton du .. au ..).

Le but étant bien sûr d'empêcher l'utilisateur de remettre à zéro le fichier en cours d'année.

Mais, lorsque je clique sur ce bouton, l'idéal serait :

1. il m'enregistre le fichier existant (ex de nom : Fichier_2006)
2. il m'efface l'ensemble des cellules de ce fichier contenant des valeurs
3. M'enregistre le fichier remis à zéro sous le même nom et à la même destination que Fichier_2006 mais incrémenter de une année (l'année en cours). Ex : Fichier_2007
4. me mette à jour l'ensemble des dates : passer de 2006 à 2007

Donc les actions de 1. à 4., je pense que je peux y arriver, mais si j'ai des exemples ça m'aiderais bien.

Mais ce qui m'intéresse le plus c'est la question d'activé le bouton du 1er au 10 janvier seulement.

Merci d'avance!
 
D

dg62

Guest
Bonjour Tungstene


en réponse à la question principale
créer un bouton en feuille 1 et essayer le code
modifier la valeur de month(date)=10 pour essayer ce mois ci.

Code:
Private Sub Worksheet_Activate()
If Month(Date) = 1 And Day(Date) > 10 Then
CommandButton1.Visible = False
Else
CommandButton1.Visible = True
End If
End Sub
 

Robert

XLDnaute Barbatruc
Bonjour Tungstène, DG, bonjour le forum,

Regarde le fichier en pièce jointe. Il s'apelle Tung.xls. Le bouton Nouvelle Année (uniquement visible du 1er au 10 janvier de chaque année normalement) enregistre le fichier et crée une copie avec le nom incrémenté de 1 au niveau de l'année. Les cellules contenant des formules restent intactes, les autres sont éffacées.

Pour que tu puisses verifier les codes j'ai pris comme référence la date d'aujourd'hui mais pense a modifier le code par la suite :


Private Sub UserForm_Initialize()
Dim d As Date 'déclare la variable d

d = CDate('13/10/' & Year(Date)) 'définit la variable d
'affiche le bouton 'Nouvelle Année' en fonction de la date
If Date >= d And Date <= d + 9 Then CommandButton1.Visible = True
End Sub


d = CDate('13/10/' & Year(Date)) 'définit la variable d devient :
d = CDate('01/01/' & Year(Date)) 'définit la variable d


[file name=tung.zip size=16372]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/tung.zip[/file]
 

Pièces jointes

  • tung.zip
    16 KB · Affichages: 13

Tungstene

XLDnaute Occasionnel
Bonjour Robert,

Je te remercie pour ta réponse, c'est tout à fait ce que je veux bien qu'il faut que je l'adapte.

En revanche je ne comprends pas bien ce qui suit, pourrais tu me l'expliquer un peu + stp.

If Mid(Nom, Len(Nom) - 7, 2) = '20' Then
ThisWorkbook.SaveAs Left(Nom, Len(Nom) - 9) & Anm
Else
ThisWorkbook.SaveAs Left(Nom, Len(Nom) - 4) & Anm
End If

Ensuite j'ai constater que si je déplace le fichier d'origine dans un nouveau dossier, les copies actualisées avec les dates gardent la destination d'origine alors que moi je veux qu'elles suivent le fichier de base.

Je pense qu'il faudrait avoir une macro qui définisse complètement le chemin d'accès? Car si je veux le changer i lsuffit de le modifier (C:\\Travail\\Fichier_2006 par ex)

Merci pour ta réponse
 

Robert

XLDnaute Barbatruc
Bonsoir Tungstène, bonsoir le forum,

J'ai galéré avec ton histoire de nom car il fallait éviter d'avoir des fichiers du style test 2005 2006.xls. Il me fallait donc vérifier si le fichier ne comportait déjà pas une date d'où le code :
If Mid(Nom, Len(Nom) - 7, 2) = '20' Then
ThisWorkbook.SaveAs Left(Nom, Len(Nom) - 9) & Anm
Else
ThisWorkbook.SaveAs Left(Nom, Len(Nom) - 4) & Anm
End If
T'expliquer chaque mot serait bien trop long et je n'en ai pas le courage. Aussi je te conseille d'utiliser l'Aide VBA qui te renseignera très bien avec souvent un exemple à l'appui. Pour cela sélectionne un mot dans VBE puis clique sur F1.

Si tu veux modifier le chemin d'accès ça va compliquer un peu mais c'est faisable.

Bon courage.
 

Tungstene

XLDnaute Occasionnel
Salut robert,

Bien entendu que j'ai regarder l'aide mais comme je suis débutant je ne comprends pas très bien, je vois à quoi ça correspond mais...

Bref en revanche, maintenant que j'ai regardé cela fonctionné il est clair qu'il faut que je précise le chemin de sauvegarde.
Car de plus, c'est un fichier qui va être mis en place que plusieurs usines et donc, si un jour les dossiers et autres sont modifiés je voudrais que ce sois simple à modifé, donc dans le code vba.

Tu m'as dis que c'est faisable, crois tu que tu peux y regarder stp?
 

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
300 761
Messages
1 987 020
Membres
209 681
dernier inscrit
Excelcrable