Affecter plusieurs macros à un même bouton

S

Sylvie

Guest
Salut tous!
Dites, j'aurais aimé savoir s'il était possible d'affecter plusieurs macros à un même bouton. je m'explique:
J'ai des feuilles avec chacunes plusieurs boutons, comme, enregistrer, facturer, ... Est-ce que je peux mettre "enregister" et "facturer" ensemble sur un même bouton?
Merci d'avance à vous tous les maîtres de l'informatique!
A +.
Sylvie.
 
S

Sylvie

Guest
Salut G'Clair,
non, il ne s'agit pas de l'engistrement de mon classeur. En faite, j'ai une macro qui enregistre les variations du stock et je voudrais associer les deux (facturation et changement de stock) sur le même bouton. Ce programme, c'est pour un copain qui ne s'y connait pas du tout en informatique et je voudrais donc que tous les boutons que je lui mets soient résumés au plus simple.
Mais merci.
Par contre, j'ai encore une question. Je voulais mettre un autre bouton, pour renvoyer à la page de démarrage que j'ai mis (jusque là pas de prob. ) mais j'aurais voulu qu'il me ferme ensuite Excel via ce bouton.
Je suis exigente je sais mais j'essais de faire au plus facile pour mon pote qui y connait que dalle!!
A +.
Merci.
Sylvie.
 
G

G'Claire

Guest
Sylvie, le forum

Si j'ai bien compris :

Premier Problème

Tu as deux boutons :

1 pour l'enregistrement de tes données entrées

1 Pour la facturation

Donc sauf erreur de ma part je ferai :

Dans le UserForm, une Fonction

Sub Facturation()

Le code de ton bouton

Sans le CommandButton_Click()


End Sub

Et a la fin de l'enregistrement avant End Sub (Dans le bouton d'enrengistrement de tes données)

Je rajouterai

Facturation

Qui lancera la Fonction Facturation



Second problème :

Dans le bouton pour Quitter


CommandButton_Click()

Unload me

Nom de la feuille.Activate -> Si c'est une feuille
Nom du UserForm . Show -> Si c'est un UserForm

Application.DisplayAlerts = False ->Supprime la fonction de demande de sauvegarde de Windows

ActiveWorkbook.Save
Application.Quit

End Sub

Et a rajouter dans ThisWorkbook

Private Sub Workbook_BeforeClose(Cancel As Boolean)

Application.DisplayAlerts = True 'Supprime la fonction de demande de sauvegarde de Windows

End Sub

Voila, j'espère que c'est ce que tu voulais et surtout que je n'ai rien oublier.

Salut, G'Claire
 
D

Dan

Guest
Bonsoir Sylvie,


Pour ta deuxième question, tu peux placer l'instruction suivante dans ta macro :

ThisWorkbook.Close SaveChanges:=False

Le code "False" interdit à Excel de sauvegarder les modifications effectuées dans le fichier. Au cas où tu souhaites garder tes modifications, remplace "False" par "True".

Bon travail

@+

Dan
 
@

@+Thierry

Guest
Bonsoir G'Claire, Sylvie, le Forum

Humm G'Claire, moi je n'ai pas vu de UserForm dans tout çà, mais bon, le principe reste de faire enchainer des macros, donc j'ai fait une mini démo pour Sylvie.

Pour l'Application.Quit, G'claire, le DisplayAlert n'est pas necéssaire si on s'y prend comme je le fais. Il y aura un message uniquement si il existe un autre classeur ouvert et non sauvé (il vaut mieux !!)

Bonne Nuit
@+Thierry
 

Pièces jointes

  • XLD-Macro-EnChaine-Excel-Quit.zip
    10 KB · Affichages: 230
S

Sylvie

Guest
Et ben dis donc, que de monde qui se bouscule à mon portillon!
Merci tout le monde, je vais tuser à tout ça. Mais peut-être plus aujourd'hui. Il se fait déjà tard (bientôt, tôt!) et c'est pas le tout, demain, on est de sortie, alors...
Ben un tout grand merci et je vous redirai quoi demain, sûrement!
Salut à tous.
A +.
Sylvie.
 
J

JEAN MICHEL

Guest
bonjour a tous

une autre idee qui permet d'enchainer les 2 macros avec un seul bouton

bon week end a tous et bonnes vacances à certains


Dim facture
If Range("A1") = "1" Then 'choisir une cellule disponible dans la feuille
'0 ou 1 permet d'aiguiller les macro enregistrer ou facturer

reponse = MsgBox("ATTENTION VOUS ALLEZ ENREGISTRER LA FACTURE", vbYesNo)
If reponse = vbNo Then GoTo 1

'ActiveWorkbook.SaveAs Filename:="C:\blabla\FACTURES2004.xls"
'ou macro enregistrer
Range("A1").ClearContents

GoTo 1
End If

reponse = MsgBox("ATTENTION VOUS ALLEZ FACTURER", vbYesNo)
If reponse = vbYes Then
Range("A1").Select
ActiveCell.FormulaR1C1 = 1

'macro facturer ou procedure diverses
1 End If
End Sub
 
@

@+Thierry

Guest
Bonjour Jean-Michel, Pat5, Dan, G'Claire, Re Sylvie, Le Forum

Oui on peut employer parfois les Labels (étiquettes) pour se déplacer dans les instructions d'une macro, quoique certains puristes diront que ces labels ne doivent être utilisées que pour la gestion d'erreurs... Mais on va faire comme si ils ne liront pas ce fil !!! lol

Donc voici, en partant de ton exemple, une méthode basée sur un Select Case qui me semble bien plus approprié dans ce cas de figure :

Option Explicit

Sub JeanMi()
Dim Reponse As Byte

Start:

Select Case Range("A1").Value

Case 0
Reponse = MsgBox("ATTENTION VOUS ALLEZ FACTURER", vbYesNo)
If Reponse = vbYes Then
MsgBox "Maintenant s'éxécuterait la Macro pour faire la facture"
Range("A1") = 1: GoTo Start
End If

Case 1
Reponse = MsgBox("ATTENTION VOUS ALLEZ ENREGISTRER LA FACTURE", vbYesNo)
If Reponse = vbNo Then
Exit Sub
Else
MsgBox "Maintenant s'éxécuterait la Macro pour enregistrer la facture"
End If

Case Else
Reponse = MsgBox("ATTENTION VALEUR DIFFERENTE EN A1" & vbCrLf & _
"Voulez-Vous Faire une Facture répondre OUI" & vbCrLf & _
"Simplement Enregistrer la Facture répondre NON" & vbCrLf & _
"Vous ne voulez rien faire c'est le Week-End, répondre ANNULER", vbYesNoCancel)
If Reponse = vbYes Then Range("A1") = 0: GoTo Start
If Reponse = vbNo Then Range("A1") = 1: GoTo Start

End Select
End Sub

C'est une autre approche, mais le fonctionnement reste identique à ce ton idée Jean-Mi.
Et tant que j'y suis : Range("A1").Select ActiveCell.FormulaR1C1 = 1
Peut être écrit : "Range("A1") = 1" sans aucune sélection et "flashing" à l'écran.

Bon Samedi à tous et toutes
@+Thierry
 
S

Sylvie

Guest
Merci tous!
La solution de G'Claire me convient parfaitement et c'est celle qui me parrait la plus simple étant donné que j'ai déjà les macros toutes prêtes. Je n'ai plus qu'à faire des copier coller et ça marche super!
Merci à vous tous, z'êtes des supers pros!
Aller, à + et ça ne m'empechera pas de continuer à "TUSER" ;0)
Sylvie.
 

Discussions similaires

Réponses
1
Affichages
333
Réponses
7
Affichages
315

Statistiques des forums

Discussions
312 356
Messages
2 087 569
Membres
103 596
dernier inscrit
matthieu.devillers76