VBA > Faire tourner une macro si cellule vide
jujudobrasil
-
Polux31 Messages postés 6917 Date d'inscription Statut Membre Dernière intervention -
Polux31 Messages postés 6917 Date d'inscription Statut Membre Dernière intervention -
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!
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!
A voir également:
- VBA > Faire tourner une macro si cellule vide
- Comment supprimer une page vide sur word - Guide
- Excel cellule couleur si condition texte - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Tourner l'écran - Guide
- Excel compter cellule couleur sans vba - Guide
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
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
Pour répondre à jujudobrazil,
Une question: Toutes les cellules doivent être renseignées dans la plage F16:H16 ?
Si oui faire:
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)
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)
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.