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
Configuration: Windows XP
Internet Explorer 6.0
excel 2003

3 réponses

  1. 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
    1. 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
  2. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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
    1. 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
      1. lermite222 Messages postés 9042 Statut Contributeur 1 199 > 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
      2. 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
  3. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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