Annulation des instructions VBA

gerard55

XLDnaute Occasionnel
Bonjor à toutes et tous
j'ai un code qui détermine un certain nombres d'action. Je voudrai que aucune de ces actions ne soient prises en compte dès lors qu'il y a un userform qui n'est pas renseigné.
Quelle instruction dois-je mettre pour obtenir ce résultat
J'ai essayer plusieurs forme de si, j'ai aussi essayé goto mais il prend néanmoins les instructions renseignées.
Merci pour vos suggestions
a+
 

Pièces jointes

  • Commande de poches.zip
    20.2 KB · Affichages: 40

Gorfael

XLDnaute Barbatruc
Re : Annulation des instructions VBA

Salut gerard55
Pour ce que je comprends de ton code de ValiderReceptionProduit_Click tu te trompe dans l'utilisation de On Error

On Error GoTo Err_A
si Excel détecte une erreur Excel il toppe la macro et va à l'adresse Err_A.
une adresse est définie par ":"

Toi, ce que tu veux détecter n'est pas une erreur Excel (syntaxe éronnée, dépassement des limites d'une variable, instruction non reconnue,;;;), mais une erreur de donnée. Tu ne peux pas utiliser on error dans ce cas.

S'il faut que la TexteBox UsfNumCommande soit remplie
Dans la macro finale (celle qui sert à inscrire les données sur la feuille), testes-la
Code:
if isempty(me.UsfNumCommande) then
     msgbox "pas de numéro",Vbokonly,"Numéro de commande")
     me.UsfNumCommande.setfocus
end if
Là, j'ai inscrit un code à la main, mais faudrait aussi vérifier la validité de l'inscription (que je ferais plutôt en sortie de la TexteBox).
Et faire de même pour chaque données impérative.

Mettre un fichier d'essai, c'est bien si on sait où se situe le problème. Je ne l'utilise pas et ne suis pas intéressé pour apprendre à l'utiliser. Alors pense à préciser où et le problème, à donner des indications sur les données, les adresses des données, etc.

A parté : je pense que tu fait une bétise en créant une formule en A :
Code:
Rows("5:5").Select
Selection.Insert Shift:=xlDown 'insertion d'une ligne
ActiveCell.FormulaR1C1 = "=TODAY()" 'écriture de la date
Range("A5").Select
Range("b5").Value = "réception de produit"
Moi, je ferais :
Code:
Rows(5).Insert 'insertion d'une ligne
[A5] = Format(Date,"dd/mm/aaaa")
[B5]= "réception de produit"
A+
 

mécano41

XLDnaute Accro
Re : Annulation des instructions VBA

Bonjour,

Si j'ai bien compris ce que tu veux faire (revenir à la saisie si rien n'est rempli), j'ai essayé ceci (c'est juste pour la partie droite de l'USF) :

Code:
'gestion concernant la réception des produits
Private Sub ValiderReceptionProduit_Click()
[COLOR="Red"]Dim Validation As Boolean
Call Verification(Validation)
If Validation = True Then[/COLOR]

   ici, tes instructions...

        Rows("5:5").Select
    Selection.Insert Shift:=xlDown 'insertion d'une ligne
  M5").Offset(1, 0).Value + .....
.....
.....
[COLOR="Red"]Else
    UsfMaboitePoche.Show
End If
End Sub[/COLOR]


[COLOR="Red"]Sub Verification(Valid)
Dim Validation As Boolean
Valid = True
If UsfNylon.Value = "" And UsfJonc.Value = "" And UsfVelours.Value = "" And UsfCrochet.Value = "" Then
    MsgBox "vous n'avez rien renseigné:"
    Unload UsfMaboitePoche
    Valid = False
Else
    Valid = True
End If
End Sub[/COLOR]

Cordialement

EDIT n'oublie pas d'enlever l'étiquette 100 devant : Unload UsfMaboitePoche
 
Dernière édition:

gerard55

XLDnaute Occasionnel
Re : Annulation des instructions VBA

Merci Mécano41 et Gorfael vos deux suggestions vont me permettre de réléchir et d'avancer.
Cependant en utilisant le format date ("dd/mm/aaaa") proposé par Gorfael il prend bien le jour, le mois mais pour l'année, il garde /aaaa
Par ailleurs dans le code ci-dessous lors que je renseigne le premier usf ça marche puis quand je renseigne seulement le deuxième usf ça bug. quand je les renseigne tous ça marche. j'ai sur ma feuille exel des format (m² ou ml) peut être y a t-il un rapport
voici le code
Private Sub ValiderReceptionProduit_Click()

Rows(5).Insert 'insertion d'une ligne
[A5] = Format(Date, "dd/mmm/aaaa") 'écriture de la date
[b5] = "réception de produit"


'gestion du nylon
Range("f5").Value = UsfNylon.Value
Range("k5").Value = Range("K5").Offset(1, 0).Value + UsfNylon.Value
'gestion du jonc
Range("g5").Value = UsfJonc.Value
Range("L5").Value = Range("L5").Offset(1, 0).Value + UsfJonc.Value
'gestion du velcro velours
Range("h5").Value = UsfVelours.Value
Range("M5").Value = Range("M5").Offset(1, 0).Value + UsfVelours.Value
'gestion du velcro crochet
Range("i5").Value = UsfCrochet.Value
Range("N5").Value = Range("N5").Offset(1, 0).Value + UsfCrochet.Value
Unload UsfMaboitePoche

End Sub
Merci pour vos réponse
a +
 

mécano41

XLDnaute Accro
Re : Annulation des instructions VBA

Code:
Range("f5").Value = UsfNylon.Value
Range("k5").Value = Range("K5").Offset(1, 0).Value [COLOR="Red"]&[/COLOR] UsfNylon.Value
'gestion du jonc
Range("g5").Value = UsfJonc.Value
Range("L5").Value = Range("L5").Offset(1, 0).Value [COLOR="Red"]&[/COLOR] UsfJonc.Value
'gestion du velcro velours
Range("h5").Value = UsfVelours.Value
Range("M5").Value = Range("M5").Offset(1, 0).Value [COLOR="Red"]&[/COLOR] UsfVelours.Value
'gestion du velcro crochet
Range("i5").Value = UsfCrochet.Value
Range("N5").Value = Range("N5").Offset(1, 0).Value [COLOR="Red"]&[/COLOR] UsfCrochet.Value
Unload UsfMaboitePoche

End Sub

a +

Remplace les + par des & . Le contenu des textbox c'est du texte. (parfois il fait les conversions tout seul, parfois non...)
 

JCGL

XLDnaute Barbatruc
Re : Annulation des instructions VBA

Bonjour à tous,

Essaye en remplaçant :

Code:
Rows(5).Insert  'insertion d'une ligne
    [A5] = Format(Date, "dd/mmm/[COLOR=Red]aaaa[/COLOR]") 'écriture de la date
    [b5] = "réception de produit"
par
Code:
Rows(5).Insert  'insertion d'une ligne
    [A5] = Format(Date, "dd/mmm/[COLOR=Red]yyyy[/COLOR]") 'écriture de la date
    [b5] = "réception de produit"
 

gerard55

XLDnaute Occasionnel
Re : Annulation des instructions VBA

le remplacement du signe+ par & ça prend bien les valeurs mais ça ne les ajoute pas comme ferait le signe "+" ça les juxtaapose ainsi 10 +20 donne 1020 et non 30. En fait ça a concatener les deux valeurs. Mais moi, je veux les ajouter
Par contre la date en utilisant yyyy ça marche
Merci encore
a+
 

mécano41

XLDnaute Accro
Re : Annulation des instructions VBA

Evidemment, avec le & cela ne pouvait pas aller :( :(

J'ai fait cela qui fonctionne (si tu ne trouves pas plus court) ... mais je ne vois pas où est le problème de conversion. si je mets Csng(UsfJonc.Value) il plante si UsfJonc.Value=vide alors...


Code:
'gestion concernant la réception des produits
Private Sub ValiderReceptionProduit_Click()
Dim Validation As Boolean
Dim Nyl As Single, Jon As Single, Vel As Single, Cro As Single
Call Verification(Validation)
If Validation = True Then
    Rows("5:5").Select
    Selection.Insert Shift:=xlDown 'insertion d'une ligne
    ActiveCell.FormulaR1C1 = "=TODAY()" 'écriture de la date
    Range("A5").Select
    Range("b5").Value = "réception de produit"
    'gestion du nylon
    Range("f5").Value = UsfNylon.Value
    If UsfNylon.Value = "" Then
        Range("K5").Value = Range("K5").Offset(1, 0).Value + Nyl
    Else
        Range("K5").Value = Range("K5").Offset(1, 0).Value + UsfNylon.Value
    End If
    'gestion du jonc
    Range("g5").Value = UsfJonc.Value
    If UsfJonc.Value = "" Then
        Range("L5").Value = Range("L5").Offset(1, 0).Value + Jon
    Else
        Range("L5").Value = Range("L5").Offset(1, 0).Value + UsfJonc.Value
    End If
    'gestion du velcro velours
    Range("h5").Value = UsfVelours.Value
    If UsfVelours.Value = "" Then
        Range("M5").Value = Range("M5").Offset(1, 0).Value + Vel
    Else
        Range("M5").Value = Range("M5").Offset(1, 0).Value + UsfVelours.Value
    End If
    'gestion du velcro crochet
    Range("i5").Value = UsfCrochet.Value
    If UsfCrochet.Value = "" Then
        Range("N5").Value = Range("N5").Offset(1, 0).Value + Cro
    Else
        Range("N5").Value = Range("N5").Offset(1, 0).Value + UsfCrochet.Value
    End If
    Unload UsfMaboitePoche
Else
    UsfMaboitePoche.Show
End If
End Sub


EDIT petite explication Les variables que j'ai ajoutées sont à 0 après leur déclaration donc ensuite, on ajoute 0 au lieu de "vide"
 
Dernière édition:

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16