Pb de conditions sur une macro

boukroux -  
lermite222 Messages postés 9042 Statut Contributeur -
Bonjour,

je suis une petite novice en excel et j'aimerai mettre une condition sous une macro "enregistrement" activée par un bouton.
en effet j'ai un tableau regroupant des risques cotés par une fréquence et une maitrise.
si qqun change la frequence ou la maitrise sans avoir rempli la case action correspondante de la ligne je voudrais qu'il ne puisse pas enregistrer le fichier et que le message "veuillez remplir les details de l'action" s'affiche

pour cela j'ai essaye de faire ceci:

End Sub
Sub enregistrer()
If Range("$E8").Value = "" Or Range("$L8").Value = "" And Range("$R8").Value <> "" Then
MsgBox "Veuillez remplir l'action"
Exit Sub
End If
Range("$R8").Value = ""
' enregistrer Macro
' Macro enregistrée le 31/03/2008 par valenza
'

'
ActiveWorkbook.Save
End Sub Bonjour,

mais ca ne marche pas comme je voudrais, ca m'affiche le message que la case action soit remplie ou pas et ca ne m'enregistre rien ...

voila mon petit souci, si qqun peut m'aider ce serait avec un prd merci

3 réponses

amigo
 
Bonjour,

Si E8 -> fréquence et L8 -> maitrise (ou l'inverse)

Sub enregistrer()
If (Range("$E8").Value <> "" Or Range("$L8").Value <> "") And Range("$R8").Value = "" Then
MsgBox "Veuillez remplir l'action"
Exit Sub
End If
Range("$R8").Value = ""
ActiveWorkbook.Save
End Sub

A+.
0
boukroux
 
merci bcp de ton aide mais qd je copie ce que tu m'as mis

ca enregistre meme si la case R8 est vide et le message ne s'affiche pas

je te remets ce que 'jai copier coller

Sub enregistrer()
If (Range("$E8").Value <> "" Or Range("$L8").Value <> "") And Range("$R8").Value = "" Then
MsgBox "Veuillez remplir l'action"
Exit Sub
End If
Range("$R8").Value = ""
ActiveWorkbook.Save
End Sub

merci encore
0
lermite222 Messages postés 9042 Statut Contributeur 1 191
 
Bonjour,
Tu te mélange les pinceaux dans l'ordre des sub.
Tu ne peu pas imbtiqué des SUB
End Sub
Sub enregistrer()
If Range("$E8").Value = "" Or Range("$L8").Value = "" And Range("$R8").Value <> "" Then
MsgBox "Veuillez remplir l'action"
Exit Sub
End If
Range("$R8").Value = ""
' enregistrer Macro
' Macro enregistrée le 31/03/2008 par valenza
'

'
ActiveWorkbook.Save
End Sub Bonjour,

A Faire....
Sub enregistrer()
'Pour les conditions
'Si E8 est vide et que R8 n'est pas vide = message
'Si L8 est vide et que R8 n'est pas vide = message
If (Range("$E8").Value = "" Or Range("$L8").Value = "") And Range("$R8").Value <> "" Then
MsgBox "Veuillez remplir l'action"
Exit Sub
End If

ActiveWorkbook.Save
End Sub
0
boukroux
 
merci bcp pour ta reponse

mais la aussi le message ne s'affiche pas qd ma case R8 est vide et ca enregistre qd meme

encore merci
0
lermite222 Messages postés 9042 Statut Contributeur 1 191 > boukroux
 
Bon, si j'ai compris les 3 cellules doivent contenir quelque chose ?... si oui, changer la ligne
If Range("$E8").Value = "" Or Range("$L8").Value = "" OR Range("$R8").Value = "" Then

Si une des deux cellules E8 et L8 peuvent être vide....
If (Range("$E8").Value = "" and Range("$L8").Value = "") OR Range("$R8").Value = "" Then

A+
0
boukroux > lermite222 Messages postés 9042 Statut Contributeur
 
pardon de t'embeter à nvx

mais en fais le truc c'est si la cellule E8 est rempli ou/ la cellule L8 est rempli alors la cellule R8 doit forcement etre remplie sinon message d'erreur et ca n'enregistre pas


ps: ca marchera pour chaque ligne de la colonne ???
0
lermite222 Messages postés 9042 Statut Contributeur 1 191
 
Tu ne m'embète pas du tout...
Mais tu aurrais du expliquer les conditions plutôt..
Cette fois-ci c'est la bonne, je l'ai testé.
Je ne sais pas avec quoi tu appel la macro ? moi j'ai mis un bouton 'Formulaire' (pas commandBouton, ca marche pas)
Pour que ca foncrionne sur toutes les lignes..
Dans un module global..

Option Explicit
Public ADR As Long

Sub Bouton2_QuandClic()
Sheets("Feuil1").Activate
If (Cells(ADR, 5).Value = "" And Cells(ADR, 12).Value = "") Or Cells(ADR, 18).Value = "" Then
MsgBox "Veuillez remplir l'action"
Exit Sub
End If
ActiveWorkbook.Save
End Sub

Dans le module de Feuil1
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ADR = Target.Row
End Sub
Pour que cela fonctionne il faut sélectionner la ligne JUSTE AVANT D'APPELLER LA MACRO
Bon, je crois que ca ira
A+
0