Rechercher : dans
Par :

VBA > Faire tourner une macro si cellule vide

Dernière réponse le 23 sep 2009 à 22:39:37 jujudobrasil, le 23 sep 2009 à 14:42:22 
 Signaler ce message aux modérateurs

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

1

melanie1324, le 23 sep 2009 à 20:21:00

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

Répondre à melanie1324

2

Polux31, le 23 sep 2009 à 22:24:47

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. «Ce que l'on conçoit bien s'énonce clairement, Et les mots p­our le dire arrivent aisément.» 
Nicolas Boileau

Répondre à Polux31

3

 Polux31, le 23 sep 2009 à 22:39:37

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) «Ce que l'on conçoit bien s'énonce clairement, Et les mots pour le dire arrivent aisément.» 
Nicolas Boileau

Répondre à Polux31