Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 25/09/2011, 17h37   #1
Invité de passage
 
Homme
Ingénieur mécanique
Inscription : septembre 2011
Messages : 4
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Canada

Informations professionnelles :
Activité : Ingénieur mécanique
Secteur : Industrie

Informations forums :
Inscription : septembre 2011
Messages : 4
Points : 0
Points : 0
Bonjour,

J'ai mis au point un bon de commande excel utilisant plusieurs macros (Acquisition du numéro du bon de commande selon le dernier fichier, envoi par email automatique, verrouillage du classeur automatique lors de la fermeture).

Lorsque je l'utilise à mon bureau, tout fonctionne comme sur des roulettes. Cependant, il m'est déjà arrivé de changer le fichier d'ordinateur et les macros sont alors introuvable. La raison est fort simple, à chaque fois que je sauvegarde mon fichier "master" sous un autre nom à numéro (le bon de commande en question), la macro fait toujours référence à celle située dans l'autre fichier. Il essaie donc de faire rouler la macro 'POMASTER.xls' envoie (exemple pour la macro qui s'appelle normalement "envoie"). Le tout est fort embêtant puisque la macro ne veut premièrement pas s'exécuter (Le master n'est même plus ouvert puisque je l'ai sauvegardé sous un autre nom) et que de toute façon, je veux bel et bien exécuter cette macro dans mon nouveau fichier. Pourquoi cette erreur ne se présente pas avant que je change le fichier d'ordinateur? Y a-t-il moyen de remédier le tout puisque je dois envoyer ce fichier à mon comptable et il a le même problème?!?

Merci d'avance pour votre aide!

PS: Le tout se passe sur Excel 2003 et toute la compagnie utilise effectivement le même logiciel.
pelteux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/09/2011, 18h42   #2
Membre émérite
 
Conseil + Formation
Inscription : février 2010
Messages : 584
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Activité : Conseil + Formation

Informations forums :
Inscription : février 2010
Messages : 584
Points : 886
Points : 886
Bonjour

Où est stocké le code ? Comment déclenches-tu la macro ?
78chris est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/09/2011, 19h17   #3
Invité de passage
 
Homme
Ingénieur mécanique
Inscription : septembre 2011
Messages : 4
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Canada

Informations professionnelles :
Activité : Ingénieur mécanique
Secteur : Industrie

Informations forums :
Inscription : septembre 2011
Messages : 4
Points : 0
Points : 0
Le code est stocké dans un module standard. La macro en question est déclenchée à partir d'un bouton. D'ailleurs, si j'y vais à partir de la liste des macros, je vois les macros du fichier en question (celles-ci ne sont pas précédées du 'POMASTER.xls' et celles du fichier POMASTER). Mes boutons sont cependant associés à celles de POMASTER. Je peux, si je le veux, les réassigner aux macros du fichier actuel. Ce n'est cependant pas très pratique puisque mon but est précisemment de partir avec le fichier master et de l'enregistrer avec un nom automatique à l'aide d'une de ces macros.
pelteux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/09/2011, 20h10   #4
Membre émérite
 
Conseil + Formation
Inscription : février 2010
Messages : 584
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Activité : Conseil + Formation

Informations forums :
Inscription : février 2010
Messages : 584
Points : 886
Points : 886
Bonjour

Si les boutons sont dans le classeur cela devrait suivre mais s'ils sont dans la barre d'outils, cela ne se mettra pas à jour.

Il est possible de créer une barre spécifique, de l'attacher au classeur, d'installer cette barre à l'ouverture et la supprimer à la fermeture.

Mais je n'ai jamais testé sur un classeur changeant de nom...
78chris est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/09/2011, 20h18   #5
Invité de passage
 
Homme
Ingénieur mécanique
Inscription : septembre 2011
Messages : 4
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Canada

Informations professionnelles :
Activité : Ingénieur mécanique
Secteur : Industrie

Informations forums :
Inscription : septembre 2011
Messages : 4
Points : 0
Points : 0
Une barre d'outil? Moi je parle réellement de boutons situés dans le classeur et assignés manuellement à chacune des macros. Je ne savais même pas qu'il y avait possibilité d'ajouter des macros à la barre d'outil
pelteux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/09/2011, 21h32   #6
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 849
Points : 16 849
Envoyer un message via Skype™ à bbil
Et la solution ne serait pas de séparer donnée et macro dans deux fichiers différents ..
bbil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/09/2011, 21h58   #7
Invité de passage
 
Homme
Ingénieur mécanique
Inscription : septembre 2011
Messages : 4
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Canada

Informations professionnelles :
Activité : Ingénieur mécanique
Secteur : Industrie

Informations forums :
Inscription : septembre 2011
Messages : 4
Points : 0
Points : 0
Je pourrais toujours essayer. Ne sommes-nous pas obligés d'ouvrir le fichier contenant les macros en question? Pour l'instant, j'ai réussi à palier au problème en réassignant ma macro et en le resauvagardant. Par la suite, le problème ne réapparaît plus jusqu'à ce que je change mon master d'ordinateur. Je me suis rendu compte que ce problème n'affectait finalement qu'une seule de mes macros. Mon comptable m'avait énoncé le problème et je viens de l'essayer sur un autre ordinateur pour la première fois depuis. Je vais vous donner le code:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
 
'Public Sub SendNotesMail(Subject as string, attachment as string,
'recipient as string, bodytext as string,saveit as Boolean)
'This public sub will send a mail and attachment if neccessary to the
'recipient including the body text.
'Requires that notes client is installed on the system.
Public Sub SendNotesMail(Subject As String, Attachment As String, Recipient As String, BodyText As String, SaveIt As Boolean)
'Set up the objects required for Automation into lotus notes
    Dim Maildb As Object 'The mail database
    Dim UserName As String 'The current users notes name
    Dim MailDbName As String 'THe current users notes mail database name
    Dim MailDoc As Object 'The mail document itself
    Dim AttachME As Object 'The attachment richtextfile object
    Dim Session As Object 'The notes session
    Dim EmbedObj As Object 'The embedded object (Attachment)
    'Start a session to notes
    Set Session = CreateObject("Notes.NotesSession")
    'Next line only works with 5.x and above. Replace password with your password
    'Get the sessions username and then calculate the mail file name
    'You may or may not need this as for MailDBname with some systems you
    'can pass an empty string or using above password you can use other mailboxes.
    UserName = Session.UserName
    MailDbName = Left$(UserName, 1) & Right$(UserName, (Len(UserName) - InStr(1, UserName, " "))) & ".nsf"
    'Open the mail database in notes
    Set Maildb = Session.GETDATABASE("", "C:\Program Files\Lotus\Notes\Data\" & mailMailDbName)
     If Maildb.IsOpen = True Then
          'Already open for mail
     Else
         Maildb.OPENMAIL
     End If
    'Set up the new mail document
    Set MailDoc = Maildb.CREATEDOCUMENT
    MailDoc.Form = "Memo"
    MailDoc.sendto = Recipient
    MailDoc.Subject = Subject
    MailDoc.Body = BodyText
    MailDoc.SAVEMESSAGEONSEND = SaveIt
    'Set up the embedded object and attachment and attach it
    If Attachment <> "" Then
        Set AttachME = MailDoc.CREATERICHTEXTITEM("Attachment")
        Set EmbedObj = AttachME.EMBEDOBJECT(1454, "", Attachment, "Attachment")
 
    End If
    'Send the document
    MailDoc.PostedDate = Now() 'Gets the mail to appear in the sent items folder
    MailDoc.SEND 0, Recipient
    'Clean Up
    Set Maildb = Nothing
    Set MailDoc = Nothing
    Set AttachME = Nothing
    Set Session = Nothing
    Set EmbedObj = Nothing
End Sub
 
Sub envoie()
Dim NumActu As Integer
Dim Letexte As String
Dim AdressesCourr As String
 
fichtyp = [N57].Value
Letexte = [N36].Value
AdressesCourr = [N44].Value
 
NumActu = Mid([K3].Value, 3, Len([K3].Value) - 4)
 
Call SendNotesMail("Bon de commande #SJ" & NumActu & "-T", [N24].Value & "\" & "SJ#" & NumActu & fichtyp, AdressesCourr, Letexte, True)
reponse = MsgBox("Bon de commande envoyé avec succès!", vbOKOnly, "Message envoyé")
 
End Sub
La macro envoie fait en fait référence à la fonction SendNotesMail avec les arguments tels que la personne à qui l'envoyer, l'attachement (qui est le fichier actuel en .pdf ou .xls), etc. SendNotesMail est utilisé afin d'envoyer un message de façon automatisé à l'aide de Lotus Notes. Je n'ai pas écrit cette macro (les commentaires sont d'ailleurs en anglais) et je n'ai aucune idée comment elle marche. "envoie" a été écrit par moi.
pelteux est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h00.


 
 
 
 
Partenaires

Hébergement Web