Macro / xlsm

vg00 - 24 janv. 2014 à 14:28
ucfoutu
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
- 24 janv. 2014 à 17:58
Bonjour,
Je ne maîtrise pas mon code vba...
Ainsi je voudrais exécuter le code seulement à la création de fichier à partir du modèle... mais ...
ne pas exécuter le code lors de l'ouverture du modèle pour modification...
Avez vous une idée ?

5 réponses

ucfoutu
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
Modifié par ucfoutu le 24/01/2014 à 14:43
Bonjour,
J'ai personnellement des difficultés à comprendre ce que tu veux exactement dire.
A ce stade et sans autres précisions plus claires de ta part (et surtout : sans voir ton code actuel), je dirais que l'utilisation d'une variable booléenne devrait faire ton affaire (à false au départ, à True ensuite ... et une expression conditionnelle sur cette variable (si true ou si false))

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
1
Alors j'ai fait un fichier modèle (xlsm).
il contient un code qui remplis des champs automatiquement à la création de fichier depuis le modèle (double clic sur fichier/clic droit nouveau)
Par contre si je veux modifier mon modèle (clic droit ouvrir) le code se déroule aussi et mon modèle vide se rempli et je dois effacer avant d'enregistrer...
Suis-je plus clair ?
0
ucfoutu
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
24 janv. 2014 à 16:55
relis-moi :
".... (et surtout : sans voir ton code actuel) ...."
montre-le, ce code.
0
vg00
Messages postés
13
Date d'inscription
vendredi 22 octobre 2004
Statut
Membre
Dernière intervention
6 février 2014

24 janv. 2014 à 17:20
si vraiment ça aide allons y
Option Explicit
Function login() As String
login = Application.UserName
End Function

Private Sub Workbook_Open()

Dim Nom As String, Fonction As String, Tel As String, Fax As String, Mail As String, Offre, Version As String

Select Case login
Case "gilles"
Nom = "x"
Fonction = "x"
Tel = "x1"
Fax = "x"
Mail = "x"
Offre = Year(Date) & "-0000C/x"
Case "y"
Nom = "y"
Fonction = "y"
Tel = "y"
Fax = "y"
Mail = "y"
Offre = Year(Date) & "-0000C/y"
'etc autres cases supprimés dans cet exemple
Case Else
MsgBox "Login non répertorié"
End Select
Version = ThisWorkbook.CustomDocumentProperties("Version").Value
If Nom <> "" Then
'Dim x As Long
' For x = 1 To 3

Sheets("Offre").Select
'With Sheets(x)
Cells(1, 19).Value = Version
Cells(2, 4).Value = Offre
Cells(3, 4).Value = Date
Cells(8, 14).Value = Nom
Cells(9, 14).Value = Fonction
Cells(10, 14).Value = Tel
'.Cells(10, 3).Value = Fax
Cells(11, 14).Value = Mail
Cells(13, 14).Value = "Son NOM"
Cells(14, 14).Value = "Commercial"
Cells(15, 14).Value = "Son portable"
Cells(16, 14).Value = "Son mail"
'End With
'Next
End If

Sheets("Offre").Select
Range("C9").Select

'Ce qui suit efface toute la procédure événementielle "Workbook_Open"
Dim StartLine As Long, LineCount As Long
On Error Resume Next
If ThisWorkbook.Path = "" Then
If ThisWorkbook.VBProject.Protection Then Exit Sub
With ThisWorkbook.VBProject.VBComponents("ThisWorkbook").CodeModule
StartLine = .ProcStartLine("Workbook_Open", 0)
If StartLine Then
LineCount = .ProcCountLines("Workbook_Open", 0)
.DeleteLines StartLine, LineCount
End If
End With
End If
ThisWorkbook.CustomDocumentProperties("Version").Value
End Sub


--
0

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

Posez votre question
ucfoutu
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
24 janv. 2014 à 17:58
Je travaillerais alors en "miroir" (sur une copie abracadabra.xlsm de mon modèle modele.xlsm) et n'exécuterais ce code que si abracadabra.xlsm.
0