XL 2016 lancer procédure si conditions

fipafi

XLDnaute Nouveau
Bonjour à tous,

Ayant que de très faibles notions en VBA, je viens vous demander votre aide ,
je cherche a empêcher l'exécution d'une procédure si certaines conditions ne sont pas remplies ,
je vous joint mon fichier avec l 'explication de ma demande

par avance merci
 

Pièces jointes

  • mouvements semaine magasin.xlsm
    207.9 KB · Affichages: 29
Solution
Jusqu'ici on ne parlait que de la ligne 7, et là vous me parlez de la ligne 10. :mad:

Votre macro ne peut pas marcher si vous voulez transférer Range("Tab_saisi[[Sortie]]"), car fatalement il va trouver une ligne vide et ne pas faire l'enregistrement.
Il faut scanner toutes les lignes pour voir si une des lignes est en erreur, tout en éliminant les lignes vides.
Un essai en PJ.
Vous auriez pu commencer par exposer le fait que vous vouliez transférer toute la matrice.
J'ai donc rajouté un scan de la matrice avec :
VB:
Erreur = 0: NbVide = 0
For L = 7 To 127
    If Range("B" & L) <> "" And Range("N" & L) & Range("Y" & L) <> "00" Then
        NbVide = NbVide + 1
    Else
        If Range("B" & L) = "" And Range("N" & L) & Range("Y" & L) = "00"...

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Fipafi,
Peut on traduire par : J'exécute ma macro si B7, N7, Y7 sont tous trois non vides ?
Si oui alors :
VB:
Sub Test()
If [B7] <> "" And [N7] <> "" And [Y7] <> "" Then
    MsgBox "La macro peut être executée."
Else
    MsgBox "Conditions non remplies"
End If
End Sub
 

Pièces jointes

  • mouvements semaine magasin.xlsm
    204.8 KB · Affichages: 7

fipafi

XLDnaute Nouveau
Bonjour Fipafi,
Peut on traduire par : J'exécute ma macro si B7, N7, Y7 sont tous trois non vides ?
Si oui alors :
VB:
Sub Test()
If [B7] <> "" And [N7] <> "" And [Y7] <> "" Then
    MsgBox "La macro peut être executée."
Else
    MsgBox "Conditions non remplies"
End If
End Sub
Bonjour sylvanu,

merci pour ta Réponse ,

c'est un bon début d'explication pour moi , mais je cherche :
a exécuter la macro si B7, N7 ou Y7 sont non vides
avec deux Msgbox dans ce cas "il manque une référence " et "il manque une entrée/ sortie"
car je peux avoir des sorties ou des entrées ou les deux, mais jamais bien sûr une référence manquante

et comment l'intégrer a ma macro dupliquer dans ce cas ?

merci
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Je ne comprends pas votre syntaxe :
Code:
si B7, N7 ou Y7 sont non vides
Avec cette ligne de code, on exécute si B7 est non vide ET une des deux cellules N7 ou Y7 est non vides
VB:
If [B7] <> "" And ([N7] <> "" Or [Y7] <> "") Then
Avec cette ligne de code, on exécute si une des trois cellules B7, N7, Y7 est non vide.
VB:
If [B7] <> "" Or ([N7] <> "" Or [Y7] <> "") Then
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Pour l'intégration, le plus simple si votre macro s'appelle MaMacro est de faire :
Code:
Sub Test()
If Condition Vrai Then
  MaMacro
Endif
End Sub
et de lancer la macro Test au lieu de lancer MaMacro.
L'autre solution est de l'intégrer à votre macro en mettant votre code entre le If du test et le EndIf associé.
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil

En me basant sur l'exemple de sylvanu, une autre écriture possible
VB:
Sub lancer_macro_si()
If Application.CountA([B7], [N7], [Y7]) = 3 Then
ma_macro
Else
MsgBox "C'est quoi ce binz!", vbCritical, "Oui, je sais mes réfrénces datent"
End If
End Sub
Sub ma_macro()
MsgBox Date
End Sub
 

fipafi

XLDnaute Nouveau
sylvanu

j 'ai intégré la ligne de code suivante a ma macro :

If [B7] <> "" And ([N7] <> "" Or [Y7] <> "") Then
mais la macro se lance quand même !!!
je tiens à rappeler que je suis pas vraiment à l'aise en VBA ( et d'un certain âge )

stapple1600 , merci
 

Pièces jointes

  • mouvements semaine magasin (1).xlsm
    280.4 KB · Affichages: 2

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoit Fipafi, Staple,
Ca n'a rien à voir avec e VBA. C'est de la logique.
Vous avez trois variables B7, N7, Y7 qui peuvent avoir deux états : Vide / Non vides.
Remplissez le tableau de la PJ on trouvera la bonne combinaison.

Staple, vous devriez être au lit. 🍏 vous l'a déjà dit.
 

Pièces jointes

  • mouvements semaine magasin (1) (1).xlsm
    275.9 KB · Affichages: 2

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Fipafi,
La solution devient simple, voir en PJ :
VB:
If [b7] <> "" And Application.CountA([N7], [Y7]) > 0 Then
On execute la macro si B7 n'est pas vide ET au moins une des deux cellules N7,Y7 n'est pas vide.

Dans l'application cela donnera :
Code:
Sub Test2()
'Avec cette ligne de code, on exécute si B7 est non vide ET une des deux cellules N7 ou Y7 est non vides
If [b7] <> "" And Application.CountA([N7], [Y7]) > 0 Then
    ' LANCER LA MACRO DESIREE
End If
End Sub
 

Pièces jointes

  • mouvements semaine magasin (1) (1) (1).xlsm
    279.2 KB · Affichages: 2

fipafi

XLDnaute Nouveau
Bonjour sylvanu,

j'ai intégré le code dans la macro toutes les conditions sont remplies sauf :

B7<>"" et N7,Y7 =""

je te retourne le fichier si tu peux encore faire quelque chose.

merci
 

Pièces jointes

  • mouvements semaine magasin (1) (1) (1) (1).xlsm
    226.8 KB · Affichages: 3

sylvanu

XLDnaute Barbatruc
Supporter XLD
Je ne comprends pas, pour "B7<>"" et N7,Y7 =""" la macro ne doit pas s'exécuter.

1609667956064.png
 

Discussions similaires

Statistiques des forums

Discussions
312 495
Messages
2 088 964
Membres
103 992
dernier inscrit
Christine 974