Macro programmé pour se lancer à une date

Signaler
Messages postés
5
Date d'inscription
lundi 16 octobre 2006
Statut
Membre
Dernière intervention
18 octobre 2006
-
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
-
salut
étant  aller sur le forum de presence-pc.com pour poser mes questions sans réponses précises je me suis inscrit sur celui-ci

j'annonce que je n'y connais pas grand chose en prog

je ne fais que des macros du type enregistrement de suite d'opérations simples copier coller supprimer des caractères

Sous excel, j'ai besoin d'une macro qui se lance à partir d'une date que je fixe dans la macro elle même, qui me permet soit de:
- ne plus pouvoir imprimer les différentes feuilles du fichier ou imprimer des pages vierges (simuler un bug)
- ou solution plus radicale, effacer le contenu du fichier, puis effacer cette meme macro destructive , enregistre le fichier vierge, puis fermer le fichier

j'opterais plus pour la solution de ne plus pouvoir imprimer.

Explication du besoin:
ayant fais des fichiers excel pour le travail, lancement en fabricattion, calcul de débit, calcul de farif en automatique, sans retour positif de la direction qui est bien content de mon travail je souhaite me couvrir dans le temps par une macro du type citer ci dessus. g ces deux solutions mais je suis ouvert à d'autre sans problèmes.

Je ne sais pas le travail qu'il ya à faire sur ça, mais je vous remercie d'avance si on peut me dépanner.

CAD37 un employé exploité!!!

9 réponses

Messages postés
5
Date d'inscription
lundi 16 octobre 2006
Statut
Membre
Dernière intervention
18 octobre 2006

Code :

<ol class="olcode" id="code1">
<li>Sub Macro2()
</li>
<li>'
</li>
<li>' Macro2 Macro
</li>
<li>' Macro enregistrée le 04/10/2006 par -
</li>
<li>'
</li>
<li>
</li>
<li>'
</li>
<li>    Sheets("Feuil2" ).Select
</li>
<li>    Cells.Select
</li>
<li>    Selection.ClearContents
</li>
<li>    Selection.ColumnWidth = 2
</li>
<li>    Selection.RowHeight = 6.75
</li>
<li>    Sheets("Feuil3" ).Select
</li>
<li>    Cells.Select
</li>
<li>    Selection.ClearContents
</li>
<li>    Selection.ClearContents
</li>
<li>    Selection.ClearContents
</li>
<li>    Selection.ClearContents
</li>
<li>    Selection.ClearContents
</li>
<li>    Selection.ClearContents
</li>
<li>    Selection.ClearContents
</li>
<li>    Selection.ClearContents
</li>
<li>    Selection.ClearContents
</li>
<li>    Selection.ClearContents
</li>
<li>    Selection.ClearContents
</li>
<li>    Selection.ColumnWidth = 1.71
</li>
<li>    Selection.RowHeight = 10.5
</li>
<li>    Sheets("Feuil1" ).Select
</li>
<li>    Cells.Select
</li>
<li>    Selection.ClearContents
</li>
<li>    Selection.ColumnWidth = 2
</li>
<li>    Selection.RowHeight = 12
</li>
<li>    Range("A1" ).Select
</li>
<li>End Sub</li>
</ol>
ce sont les seuls choses qui releve de mes compétences mais le souci premier c'est que le lancement n'est pas automatique à une date

si des livres ou des notes sur ce probleme se trouve sur internet merci de m'envoyer les liens, je ne sais pas où chercher.

CAD37
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Salut,

j'ai pas tout suivi, mais bon, au cas où :

Pour lancer une macro à heure / jour prédéfini :
voir OnTime
(attention, le fichier doit être ouvert à ce moment)

Pour effacer un code dans un module :
ragarde ma source, c'est ce qu'elle fait !

Aperçu :
 

' Il faut rajouter la référence suivante :
' Microsoft Visual Basic for Applications 6.0 Extensibility
' (Program Files\Microsoft Visual Studio\VB98\VB6EXT)

'*** 2 NDE POSSIBILITE : SUPPRESSION CODE DANS OBJET ***
' Càd dans les UserForm, Module, Module de Classe (pour ThisWorkbook_Open, voir 3eme possibilité)
Sub EffaceCodeObjet() 
  
    Workbooks.Open ("C:\Chemin\Nom Fichier.xls") 'une boite de dialogue se trouve dans le fichier excel(Zip) pour le
' choix, au lieu de mettre le nom du chemin en dur
On Error Goto ErrHandle 
  
' l'exemple au dessous c'est pour effacer le code dans Module1 (on peut faire pareil
'en remplacant 'Module1' par 'UserForm1', 'Class1'.(bref, mettre les noms de vos objets))
  
' ici on supprime le code dans "Module1", dans le projet du classeur actif
With ActiveWorkbook.VBProject.VBComponents("Module1").CodeModule 
    .DeleteLines 1, .CountOfLines 'de la 1ere à la derniere ligne
End With 
  
MsgBox "Le code du Module a été suprimer" 
ActiveWorkbook.Close True 
Exit Sub 
  
ErrHandle: 
MsgBox "ERREUR dans la suppression du code du Module", vbOKOnly + vbCritical 
  
End Sub

<small>Coloration syntaxique automatique [mortalino]</small>
       

@++

<hr width="100%" size="2" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Sub Macro2() 
' simplification de ta macro :
' Macro enregistrée le 18/10/2006 par - mortalino -
'
    Dim i As Integer
For i =  1 To xlBook.Sheets.Count
    Sheets(i).Select: Cells.Select: Selection.ClearContents
    Select Case i
        Case1: Selection.ColumnWidth = 2: Selection.RowHeight = 12
        Case2: Selection.ColumnWidth = 2: Selection.RowHeight = 6.75
        Case3: Selection.ColumnWidth = 1.71: Selection.RowHeight = 10.5
    End Select
    Range("A1").Select
Next i

End Sub

 

<small>Coloration syntaxique automatique [mortalino] </small>
       

@++


<hr width ="100%" size="2" />

  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
Attetion au cadre légal de ton code.

Si ton patron découvre que tu as fait ça volontairement pour nuire au travail de l'entreprise, il peut se retourner contre toi avec à la clé au mieux un avertissement, au pire licencement pour faute grave (immédiat sans imdennités). Et s'il est vraiment en rogne, il pourra te mettre au tribunal pour exiger des compensations financières des pertes engendrées par ton action.

Ca peut etre assimilé à l'introduction volontaire d'un virus dans le système informatique (c'est quelque part une forme de virus).

Plutot que de faire mumuse sur tes fichiers, demande une entrevue avec ton boss, ça te coutera probablement moins cher en cas de problème.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
Messages postés
5
Date d'inscription
lundi 16 octobre 2006
Statut
Membre
Dernière intervention
18 octobre 2006

Merci de tous ces conseils, le seul soucis je n'ai plus de patron direct, le patron du site c'est fait viré et le siège du groupe n'est pas à coté, il n'y a que mon responsable qui lui ne détient aucun pouvoir, alors discuter argent avec personne...

Encore merci des réponses et de l'intéret porté
les lignes de codes je les ai testé mais elle ne fonctionne pas il bloque sur l'adresse du fichier

et sur la marcro 2
sa bug aussi...

 -->    Case1: Selection.ColumnWidth = 2: Selection.RowHeight = 12
        Case2: Selection.ColumnWidth = 2: Selection.RowHeight = 6.75
        Case3: Selection.ColumnWidth = 1.71: Selection.RowHeight = 10.5
    End Select

et encore merci

je n'ai toujours pas compris le fait de lancer la macro à une date prècise

@+
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Pour le OnTime, regarde cet exemple vba :

'V. Un timer (code s'exécutant toutes les x secondes)
'Dans un module tapez le code suivant :

Dim Lheure As Double
Dim Interval as Integer

Sub LancerTimer(NbS as integer)
'L'application ExecutionTimer se lancera toutes les 0 heure, 0 minute et Interval seconde
   Interval = NbS
   Application.OnTime Now + TimeSerial(0, 0,Interval ), "ExecutionTimer"
End Sub

Sub ArretTimer()
   On Error Resume Next
   Application.OnTime Lheure, "ExecutionTimer", , False
End Sub

Sub ExecutionTimer()
'code à exécuter à la fin de chaque Interval secondes

'code obligatoire
   Lheure = Now + TimeSerial(0, 0, Interval )
   Application.OnTime Lheure, "ExecutionTimer"
End Sub

'Vous lancez le timer en appelant la procédure LancerTimer(N), puis elle exécute le 'code de ExecutionTimer toutes les N secondes et enfin, vous l'arrêter avec ArretTimer.

<small>Coloration syntaxique automatique [mortalino] </small>
       

Exemple trouvé ICI

Concernant l'erreur sur les Case, c'est parce que j'ai fait une faute de frappe, c'est pas Case1:     mais
Case 1:
(il faut un espace entre Case et le chffre, pareil pour les autres)

@++

<hr width ="100%" size="2" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>
Messages postés
5
Date d'inscription
lundi 16 octobre 2006
Statut
Membre
Dernière intervention
18 octobre 2006

il ya un bug sur la ligne Fore i...

je ne comprends pas le dernier timer...

qu est ce que le code execute le code
je suis sur que ç'est banal pour vous programmeur mais moi je n'ycomprends pas grand chose, seulement de constater que ça fonctionne ou pas

ma macro :
j'ai un fichier xls qui contient la macro
je m'en sers je l'utilise enregistre dessus, puis à une date précise et à partir de cete date le fichier dès qu'il est ouvert ce met en defaut  exemple on ne peut plus imprimer, les imprimantes par défaut ne fonctionnent plus le ctr+p ne marche pas. les imprime écrans non plus on ne peut que visualiser les feuilles du classeurs qui sont protéger au préalable.

solutions moins radicale que de tout saboter

et lorsque cette macro est activé parceque la date est dépassé et que j'ai besoin de le pousser un peu plus loin il me suffit de rentrer dans les code de la macro de changer la date butoir d'enregistré et le tour est joué pour la période voulue

c'est simple à écrire mais le langage vb je ne connais pas. je n'ai pas eu de formation sur ça et ça me manque pour réalisé des choses en automatiques répéttive. mais c'est pas grave je m'y atèle à essayer de comprendre

Encore merci des réponses rapides...

@*
Messages postés
5
Date d'inscription
lundi 16 octobre 2006
Statut
Membre
Dernière intervention
18 octobre 2006

en récupérant des lignes de codes c'est dans ce gout là sauf que le coded'accès c'est la date et le tout sans apparaitre à l'ecran

Dim sPassWord  As String
Dim sMyPass    As String

sMyPass = "Cesame"
sPassWord = InputBox("Saisissez le mot de passe")

If sMyPass <> sPassWord Then Exit Sub  ' ou Exit Function

testé ca marche pas non plus que faire???

A+
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
19
À l'ouverture de ton classeur (workbook_Open), tu peux vérifier la date
du jour par rapport à une date que tu fixes toi-même et fermer le
classeur le cas échéant. Ou encore au début de tes macros, tu fais la
même vérification de date et tu sors si la date excède la limite.


Mais comme on (Casy) t'a dit, ton employeur t'embauche pour effectuer
une tâche: ici c'est celle de créer des classeurs pour fins d'analyse,
des outils pour permettre une meilleure gestion, ... Ces classeurs sont
sa propriété puisqu'il t'a payé pour les créer.


Mais bon, il y a toujours moyen de placer quelques bugs par-ci
par-là... mais arrange-toi pour ne pas qu'il les trouve. Ça pourrait
être un password aléatoire, valable pour X semaines ou mois, dont tu
connais la clé et que tu leur fournis tant que tu es à l'emploi...


Avant de t'aventurer dans ce genre d'exercice, vérifie la légalité de tout ceci ainsi que tes droits d'auteur, s'il en existe...

MPi