Programmation VBA

R

RENOUX Pierre

Guest
Question, La macro écrite ci-dessous sert à copier et coller des cellules à l’aide d’un bouton de formulaire (CommandButton1). Si une cellule donnée à la valeur vraie (A8) la macro s’exécute sinon un message apparaît, et il faut avoir la valeur vrai en A8. Voici la macro
MACRO Sub CommandButton1_Click()
If Sheets("insc1").Range("A8") <> True Then
MsgBox "Vous avez oublié un champs obligatoire du formulaire .", _ vbCritical, "Attention"
Else
If Sheets("insc1").Range("A8") = True Then
Sheets("INSC1").Select
Range("AA3:AD260").Select
Selection.Copy Range("AE3").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False
Range("G12").ClearContents
Range("A1").Select
End If
End If
End Sub
Voilà ma question peut on faire la même chose mais remplacer l’exécution de la macro par entrée sur le clavier, après la saisie d’une valeur dans une cellule. EXEMPLE : je saisie une valeur en A1 je fais entrée ( ou éventuellement CTRL+ lettre) et copier coller (ou autres) s’exécute. Deuxième question : comment faire pour indiquer plusieurs conditions à la ligne deux de la macro (A8 <> True, A9 =1 ; etc…). Si quelqu’un peut m’aider il m’aura fait faire un grand pas en avant.
 
S

sylsyl

Guest
Salut PiR,

avant toute chose je te conseil de lire le Charte de ce forum (ca te prendra 2 min et t'apprendra beaucoup de choses)

ensuite la ligne 'If Sheets("insc1").Range("A8") = True Then' et le 'End If' qui va avec est inutile. Tu definis deja completement ta condition avec :
'If Sheets("insc1").Range("A8") <> True Then'

C’est un peu comme si tu disais, la voiture est soit bleue (true), soit rouge (false). Si elle n’est pas bleue (premier if) alors je fais ca et sinon (else), si elle est bleue (deuxieme if), je fais autre chose.

pour repondre a tes questions: tu peux affecter un Ctrl + lettre a une macro en faisant Outils>macro, tu delectionne ta macro puis modifier.
Pour le Enter, je pense que le mieux est de lancer ta macro a partir de ThisWorkbook avec Workbook_SelectionChange ou qq chose comme ca.

et pour la fin ca marche comme ca:
If Sheets("insc1").Range("A8") = True Or Range("A1") = 9 Or ... Then

idem avec des And (tu peux aussi combiner les 2 mais ca devient perilleux).

N'oublie pas de lire la Charte et si tu as des pb, n'hesite pas...

A++, sylsyl.
 
P

Pierrot

Guest
bonsoir sylsyl,
merci de ta réponse même si elle ne réponds pas à mon attente. Pour en revenir à la macro que j'ai écrite elle dis en claire que si la cellule (A8 dans ce cas) et différente de vrai <> True Then alors il faut arrêter et me prévenir grace à MSGbox, mais si elle indique vrai = True Then alors l'exécution de la macro peut continuer. mais ce que je voudrais essayer de savoir c'est comment exécuter cette macro en validant entrée aprés avoir saisie une valeur dans une cellule.(Au lieu de faire fonctionner la macro par un bouton de formulaire).Je vais continuer mes recherches;

A+
Pierre
 

Discussions similaires

Statistiques des forums

Discussions
314 153
Messages
2 106 425
Membres
109 583
dernier inscrit
Mitchmitch