Macro / xlsm

Signaler
-
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
-
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

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
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
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 ?
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
relis-moi :
".... (et surtout : sans voir ton code actuel) ...."
montre-le, ce code.
Messages postés
13
Date d'inscription
vendredi 22 octobre 2004
Statut
Membre
Dernière intervention
6 février 2014

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


--
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
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.