VBA > Faire tourner une macro si cellule vide

Fermé
jujudobrasil - 23 sept. 2009 à 14:42
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 - 23 sept. 2009 à 22:39
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!

2 réponses

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
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
23 sept. 2009 à 22:24
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
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
23 sept. 2009 à 22:39
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