VBA > Faire tourner une macro si cellule vide

jujudobrasil -  
Polux31 Messages postés 7219 Statut Membre -
Bonjour,

J'ai une liste déroulante sur laquelle est activée une macro:
- Affichant un message lorsque certains modèles sont sélectionnés
- Faisant tourner une macro appeler "Tx Opé"

Je souhaite rajouter une condition pour que la macro "Tx opé" ne tourne que si ma plage F16:H16 n'est pas vide. Mes connaissances limitées ne me permettent pas de trouver la solution... un message "can't execute break mode" ne cesse de s'afficher si je mets le code suivant (la partie que j'ai rajoutée étant soulignée):

Sub ValidOffre()
'
' ValidOffre Macro
' Macro recorded 22/09/2009 by rzf3pt

Dim message As String
Dim x As Variant

message = "Rappel" & vbCrLf
message = message & "Entrer un prix de vente."

If ThisWorkbook.Worksheets("Classique").Range("CB9").Value = 1 Then
If ThisWorkbook.Worksheets("Classique").Range("CG61").Value = 1 Then
x = MsgBox(message, vbOKOnly)
End If
End If

If ThisWorkbook.Worksheets("Classique").Range("F16:H16").Value <>"" Then
Range("F16:H16").Select
Application.Run "GMAC_Q42009.xls!tx_opé"
End If

End Sub

Merci d'avance pour votre aide!
Configuration: Windows XP Internet Explorer 7.0

2 réponses

  1. melanie1324
     
    Bonjour,

    a la place de
    If ThisWorkbook.Worksheets("Classique").Range("F16:H16").Value <>"" Then
    Range("F16:H16").Select
    Application.Run "GMAC_Q42009.xls!tx_opé"
    End If

    mets :
    for a= 6 to a=8
    If ThisWorkbook.Worksheets("Classique").cells(16,a).Value <>"" then
    a= 16
    end if
    next a

    if a =16 then
    Application.Run "GMAC_Q42009.xls!tx_opé"
    end if
    0
    1. Polux31 Messages postés 7219 Statut Membre 1 204
       
      Bonjour,

      Ta solution ne fonctionne pas !!!

      Tu n'as toujours pas compris que:
      For a=6 to a=8
      ne peut pas fonctionner .... tu ne rentres jamais dans la boucle For ... Next.

      Avant de poster une solution, il serait souhaitable de la tester avant ou bien d'avoir des sources sûres.

      Merci d'en prendre note.
      0
  2. Polux31 Messages postés 7219 Statut Membre 1 204
     
    Pour répondre à jujudobrazil,

    Une question: Toutes les cellules doivent être renseignées dans la plage F16:H16 ?

    Si oui faire:

    Dim plage As Range
    Dim cl
    
    Set plage = ThisWorkbook.Worksheets("Classique").Range("F16:H16")
    
    For Each cl In plage
       If cl.Value = "" Then
           MsgBox "Une cellule n'est pas renseignée !!!"
           Exit Sub
       End If
    Next cl
    
    Application.Run "GMAC_Q42009.xls!tx_opé" 
    
    Set plage = Nothing
    


    D'autre part ici :

    If ThisWorkbook.Worksheets("Classique").Range("CB9").Value = 1 Then
    If ThisWorkbook.Worksheets("Classique").Range("CG61").Value = 1 Then
    x = MsgBox(message, vbOKOnly)
    End If
    End If

    Tu ne donnes pas la main à l'utilisateur pour "Entrer un prix de vente" !!! ?

    ;o)
    0