Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Créer une condition pour la mise en route d'une macro

9 réponses
Avatar
Rex
Bonjour à toutes et tous

Primo
Pour les réponses et réactions aux fil d'impression je vous contacte demain
ou peut-être ce soir
Mais quoi qi'il en soit MERCI

Mon problème actuel (j'ose pas écrire urgent) est tout simple
Mais je ne trouve pas de solution ni ici ni sur Excelabo

C'est surement parce que je ne sais pas comment cela se dit

Voici j'ai une macro (qui roule !!!)

Mais je voudrais lui mettre une condition de départ
Si la cellule X est égale à "Offer" alors vas-y, sinon laisse tomber
Ou alors ce que j'essaie aussi est d'y inclure un MSG box
dans le genre
MsgBox("Remplacer l'offre?", vbYesNo, "OUI") = vbYes
et si c'est Yes la macro roule, si c'est no elle laisse tomber

A bientôt et merci beaucoup

Rex ;-))

Donc j'ai ceci

Sub Ordered()
' Je voudrais qu'il vérifie si la cellule J3 contient la valeur Offer
If ("J3") = "Offer" Then
Sheets("Offers").Cells([A2], 148) = [F4]
Sheets("Printing_Order").Visible = True
Sheets("Printing_Order").Select

' et puis un tas de commandes tec
' et en fin de macro

Else
End If
Application.ScreenUpdating = True
End Sub

9 réponses

Avatar
Daniel.C
Bonjour.
Utilise en tête de ta macro :
If [A1] <> "Offer" Then Exit Sub
ou
If MsgBox("Remplacer l'offre?", vbYesNo, "OUI") <> vbYes Then Exit Sub
Cordialement.
Daniel
"Rex" a écrit dans le message de news:

Bonjour à toutes et tous

Primo
Pour les réponses et réactions aux fil d'impression je vous contacte
demain
ou peut-être ce soir
Mais quoi qi'il en soit MERCI

Mon problème actuel (j'ose pas écrire urgent) est tout simple
Mais je ne trouve pas de solution ni ici ni sur Excelabo

C'est surement parce que je ne sais pas comment cela se dit

Voici j'ai une macro (qui roule !!!)

Mais je voudrais lui mettre une condition de départ
Si la cellule X est égale à "Offer" alors vas-y, sinon laisse tomber
Ou alors ce que j'essaie aussi est d'y inclure un MSG box
dans le genre
MsgBox("Remplacer l'offre?", vbYesNo, "OUI") = vbYes
et si c'est Yes la macro roule, si c'est no elle laisse tomber

A bientôt et merci beaucoup

Rex ;-))

Donc j'ai ceci

Sub Ordered()
' Je voudrais qu'il vérifie si la cellule J3 contient la valeur Offer
If ("J3") = "Offer" Then
Sheets("Offers").Cells([A2], 148) = [F4]
Sheets("Printing_Order").Visible = True
Sheets("Printing_Order").Select

' et puis un tas de commandes tec
' et en fin de macro

Else
End If
Application.ScreenUpdating = True
End Sub




Avatar
Rex
Bonjour et MERCI

En ce dimanche "Venteux" j'ai utilisé l'idée ci-dessous qui me donne
entière satisfaction

Merci à toi et à bientôt

Rex ;-))) )))


xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

If [J3] <> "Offer" Then
If MsgBox("Offre déjà confirmée, on continue quand même?", vbYesNo,
"OUI") <> vbYes Then Exit Sub
End If
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
"Daniel.C" a écrit dans le message de news:
u$6#
Bonjour.
Utilise en tête de ta macro :
If [A1] <> "Offer" Then Exit Sub
ou
If MsgBox("Remplacer l'offre?", vbYesNo, "OUI") <> vbYes Then Exit Sub
Cordialement.
Daniel
"Rex" a écrit dans le message de news:

Bonjour à toutes et tous

Primo
Pour les réponses et réactions aux fil d'impression je vous contacte
demain
ou peut-être ce soir
Mais quoi qi'il en soit MERCI

Mon problème actuel (j'ose pas écrire urgent) est tout simple
Mais je ne trouve pas de solution ni ici ni sur Excelabo

C'est surement parce que je ne sais pas comment cela se dit

Voici j'ai une macro (qui roule !!!)

Mais je voudrais lui mettre une condition de départ
Si la cellule X est égale à "Offer" alors vas-y, sinon laisse tomber
Ou alors ce que j'essaie aussi est d'y inclure un MSG box
dans le genre
MsgBox("Remplacer l'offre?", vbYesNo, "OUI") = vbYes
et si c'est Yes la macro roule, si c'est no elle laisse tomber

A bientôt et merci beaucoup

Rex ;-))

Donc j'ai ceci

Sub Ordered()
' Je voudrais qu'il vérifie si la cellule J3 contient la valeur Offer
If ("J3") = "Offer" Then
Sheets("Offers").Cells([A2], 148) = [F4]
Sheets("Printing_Order").Visible = True
Sheets("Printing_Order").Select

' et puis un tas de commandes tec
' et en fin de macro

Else
End If
Application.ScreenUpdating = True
End Sub








Avatar
Rex
Bonjour encore une fois, hein?

Ce que tu m'as donnée est parfait

MAIS

Maintenant que je sais comment faire cela, je me demandias si on ne pouvais
pas hierargisé???
Pas sur de l'orthographe de ce mot-la????

J'ai solution avec des If imbriqués, mais une autre solution est peut-être
possible

J'ai une liste qui représente la suite des actions entre l'offre et le
paiement

Offre, Ordered, Ordered to Promethean, Delivered, Invoice Requested,
Invoiced, Paid

Comme avec la fonction IF on peut dire, en partant du dernier au premier,
quand tu rencontre cette situation, t'es dans le bon continue mon gars

Je me demandais si on pouvait faire la même chose avec ta proposition?

Sinon je laisse mon code en trente lignes ;-((((

A bientôt et encore merci

Et comme il est presque certain que tu es organisé, et que j'ai accepté ta
réponse
il est fort possible que tu ne lise plus ceci, donc je vais également le
poster dans un nouveau fil

A bientôt

Rex ;-))) )))
"Daniel.C" a écrit dans le message de news:
u$6#
Bonjour.
Utilise en tête de ta macro :
If [A1] <> "Offer" Then Exit Sub
ou
If MsgBox("Remplacer l'offre?", vbYesNo, "OUI") <> vbYes Then Exit Sub
Cordialement.
Daniel
"Rex" a écrit dans le message de news:

Bonjour à toutes et tous

Primo
Pour les réponses et réactions aux fil d'impression je vous contacte
demain
ou peut-être ce soir
Mais quoi qi'il en soit MERCI

Mon problème actuel (j'ose pas écrire urgent) est tout simple
Mais je ne trouve pas de solution ni ici ni sur Excelabo

C'est surement parce que je ne sais pas comment cela se dit

Voici j'ai une macro (qui roule !!!)

Mais je voudrais lui mettre une condition de départ
Si la cellule X est égale à "Offer" alors vas-y, sinon laisse tomber
Ou alors ce que j'essaie aussi est d'y inclure un MSG box
dans le genre
MsgBox("Remplacer l'offre?", vbYesNo, "OUI") = vbYes
et si c'est Yes la macro roule, si c'est no elle laisse tomber

A bientôt et merci beaucoup

Rex ;-))

Donc j'ai ceci

Sub Ordered()
' Je voudrais qu'il vérifie si la cellule J3 contient la valeur Offer
If ("J3") = "Offer" Then
Sheets("Offers").Cells([A2], 148) = [F4]
Sheets("Printing_Order").Visible = True
Sheets("Printing_Order").Select

' et puis un tas de commandes tec
' et en fin de macro

Else
End If
Application.ScreenUpdating = True
End Sub








Avatar
Modeste
Bonsour® Rex avec ferveur ;o))) vous nous disiez :

J'ai une liste qui représente la suite des actions entre l'offre et le
paiement
Offre, Ordered, Ordered to Promethean, Delivered, Invoice Requested,
Invoiced, Paid

Comme avec la fonction IF on peut dire, en partant du dernier au
premier, quand tu rencontre cette situation, t'es dans le bon
continue mon gars


Select case [cellule X]
case "Offre"
call Proc_Ordered
case "Ordered"
call Proc_Ordered_Promethean
case "Delivred"
call Proc_Invoice_Requested
case "invoice requested"
call Proc_Invoiced
case "invoiced"
call Proc_Paid
case "Paid"
msgbox "Action terminée"
case else
Msgbox "cette action " & [celllule X] & " n'est pas référencée !!!",
vbcritical
end select

Sub Proc_Ordered()
Sheets("Offers").Cells([A2], 148) = [F4]
Sheets("Printing_Order").Visible = True
Sheets("Printing_Order").Select
' et puis un tas de commandes tec
' et en fin de macro
Else
End If
Application.ScreenUpdating = True
End Sub






--
--
@+
;o)))



Avatar
Rex
Bonsoir Maître Môdeste

Une fois de plus tu frappe fort !!!

Cette fois-ci un peu trop fort pour moi

Ta solution est superbe

Mais il va me valoir, si je veux l(utiliser, changer beaucoup de chose

Donc je la garde pour un prochain projet ou une prochaine version de
celui-ci

Si je comprends bient ta procédure (et en ça tu fais exactement ce que j'ai
demandé)

En lançant la procédure elle va passer en revue les optons jusqu'à ce
qu'elle trouve celle qui convient

Ce que je souhaitais (mais en m'expliquant mal, comme d'habitude)
est que si je demandais de livrer avant de commander chez Promethean
qu'il me refuse l'action

C'est à dire qu'il faut qu'une action soit complétée avant de pouvaoir
lancer la suivante

Mais une fois de plus je me rends compte que j'ai bien du mal à faire passer
ce que je pense


Mais ta proposition n'est pas à jetée

Je vais y réflechir et on verra ce que je peux en tirer


Bonne nuit

Rex ;-))) ))))



"Modeste" a écrit dans le message de news:

Bonsour® Rex avec ferveur ;o))) vous nous disiez :

J'ai une liste qui représente la suite des actions entre l'offre et le
paiement
Offre, Ordered, Ordered to Promethean, Delivered, Invoice Requested,
Invoiced, Paid

Comme avec la fonction IF on peut dire, en partant du dernier au
premier, quand tu rencontre cette situation, t'es dans le bon
continue mon gars


Select case [cellule X]
case "Offre"
call Proc_Ordered
case "Ordered"
call Proc_Ordered_Promethean
case "Delivred"
call Proc_Invoice_Requested
case "invoice requested"
call Proc_Invoiced
case "invoiced"
call Proc_Paid
case "Paid"
msgbox "Action terminée"
case else
Msgbox "cette action " & [celllule X] & " n'est pas référencée
!!!",

vbcritical
end select

Sub Proc_Ordered()
Sheets("Offers").Cells([A2], 148) = [F4]
Sheets("Printing_Order").Visible = True
Sheets("Printing_Order").Select
' et puis un tas de commandes tec
' et en fin de macro
Else
End If
Application.ScreenUpdating = True
End Sub






--
--
@+
;o)))







Avatar
Modeste
Bonsour® Rex avec ferveur ;o))) vous nous disiez :

Ce que je souhaitais (mais en m'expliquant mal, comme d'habitude)
est que si je demandais de livrer avant de commander chez Promethean
qu'il me refuse l'action

C'est à dire qu'il faut qu'une action soit complétée avant de pouvaoir
lancer la suivante

Mais une fois de plus je me rends compte que j'ai bien du mal à faire
passer ce que je pense


En effet la problematique est bien de verifier l'évolution correcte et
chronologique des status
ce en quoi la procédure via Select Case est tout à fait apropriée
puisqu'elle ne lance l'évolution que pour le status précédement concerné
ce genre de controle sécuritaire uniquement par formule risque trop de tourner à
l'usine à gaz...

si en effet tu veux faire évoluer ce status par procédure, il faut interdire la
modification manuelle de cette [cellule X]
c'est à dire protéger la cellule, protéger la feuille et ne lever la protection
que lors de l'utilisation de chaque procédure
Il te faudra pour cela développer une proc pour chaque type d'évolution de
status (Offre, Ordered, Ordered to Promethean, Delivered, Invoice Requested,
Invoiced, Paid)
c'est alors chaque proc qui sera chargée d'inscrire le nouveau status [Cellule
X]
cela sous-entend egalement l'impossibilité de retour arriere, ainsi que
impossibilité de passer une étape

Activesheet.unprotect
For each CelluleX in range("Status renseignés") ' ----ici il faudra documenter
la plage des cellules X
Select case celluleX
Case "Offre"
call Proc_Ordered
celluleX="Ordered"
Case "Ordered"
call Proc_Ordered_Promethean
celluleX="Ordered"
Case "Delivred"
call Proc_Invoice_Requested
celluleX="Ordered"
Case "invoice requested"
call Proc_Invoiced
celluleX="Invoiced"
Case "invoiced"
call Proc_Paid
celluleX="Paid"
Case "Paid"
msgbox "Action terminée"
Case Else
Msgbox "cette action " & [celllule X] & " n'est pas référencée
!!!",vbcritical
End select
Next
Activesheet.protect




@+
;o)))

Avatar
Rex
Bonsoir et merci

Connais-tu l'expression anglaise (et non en terre cuite)

"Back to the drawingboard"

J'ai bien lu tes conseils et,
Pôvre de môi

J'ai bien l'impression qu'il me faudra encore des années avant de créer
une "Programe" utilisable

Il faudra que je regardes tes courriers à tête reposée

Je te recontacte demain
Maintenant je vais me coucher

Rex ;-))) ))))




"Modeste" a écrit dans le message de news:

Bonsour® Rex avec ferveur ;o))) vous nous disiez :

Ce que je souhaitais (mais en m'expliquant mal, comme d'habitude)
est que si je demandais de livrer avant de commander chez Promethean
qu'il me refuse l'action

C'est à dire qu'il faut qu'une action soit complétée avant de pouvaoir
lancer la suivante

Mais une fois de plus je me rends compte que j'ai bien du mal à faire
passer ce que je pense


En effet la problematique est bien de verifier l'évolution correcte et
chronologique des status
ce en quoi la procédure via Select Case est tout à fait apropriée
puisqu'elle ne lance l'évolution que pour le status précédement concerné
ce genre de controle sécuritaire uniquement par formule risque trop de
tourner à

l'usine à gaz...

si en effet tu veux faire évoluer ce status par procédure, il faut
interdire la

modification manuelle de cette [cellule X]
c'est à dire protéger la cellule, protéger la feuille et ne lever la
protection

que lors de l'utilisation de chaque procédure
Il te faudra pour cela développer une proc pour chaque type d'évolution de
status (Offre, Ordered, Ordered to Promethean, Delivered, Invoice
Requested,

Invoiced, Paid)
c'est alors chaque proc qui sera chargée d'inscrire le nouveau status
[Cellule

X]
cela sous-entend egalement l'impossibilité de retour arriere, ainsi que
impossibilité de passer une étape

Activesheet.unprotect
For each CelluleX in range("Status renseignés") ' ----ici il faudra
documenter

la plage des cellules X
Select case celluleX
Case "Offre"
call Proc_Ordered
celluleX="Ordered"
Case "Ordered"
call Proc_Ordered_Promethean
celluleX="Ordered"
Case "Delivred"
call Proc_Invoice_Requested
celluleX="Ordered"
Case "invoice requested"
call Proc_Invoiced
celluleX="Invoiced"
Case "invoiced"
call Proc_Paid
celluleX="Paid"
Case "Paid"
msgbox "Action terminée"
Case Else
Msgbox "cette action " & [celllule X] & " n'est pas référencée
!!!",vbcritical
End select
Next
Activesheet.protect




@+
;o)))





Avatar
Modeste
Bonsour® Rex avec ferveur ;o))) vous nous disiez :

Connais-tu l'expression anglaise (et non en terre cuite)
"Back to the drawingboard"


In Other Words (fly me to the moon ???)
Vingt fois sur le métier remettez votre ouvrage. (Boileau)
Ce n'est que dans les choses qu'on aura travaillées et retravaillées
inlassablement qu'on pourra briller et exceller.

@+
;o)))

Avatar
Jacquouille
Bonsoir Gilbert
Mon neurone étant par définition seul, il doit donc être simple.
Ne pourrait-on immaginer une case par état de la chose?
Et ensuite balayer les cases précédentes afin de contrôler l'état des cel
précédentes et si pas toutes remplies, interdire l'action?

Bonne fin de soirée
Jacques

--
Bien amicalmement,
Vivement conseillés:
- Un plus gros marteau et un verre de vin d'Alsace....et tout ira mieux.

Jacquouille.

"Modeste" a écrit dans le message de news:
%
Bonsour® Rex avec ferveur ;o))) vous nous disiez :

Connais-tu l'expression anglaise (et non en terre cuite)
"Back to the drawingboard"


In Other Words (fly me to the moon ???)
Vingt fois sur le métier remettez votre ouvrage. (Boileau)
Ce n'est que dans les choses qu'on aura travaillées et retravaillées
inlassablement qu'on pourra briller et exceller.

@+
;o)))