Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
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+
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"
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
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"
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+
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"
Ce site utilise des cookies pour personnaliser le contenu, adapter votre expérience et vous garder connecté si vous vous enregistrez.
En continuant à utiliser ce site, vous consentez à notre utilisation de cookies.