[Déplacé][VBA]recommencer le programme si une case est vide (excel)

cs_benoit41 Messages postés 7 Date d'inscription mercredi 16 mai 2012 Statut Membre Dernière intervention 16 mai 2012 - 16 mai 2012 à 10:39
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 16 mai 2012 à 16:36
bonjour a tous, c'est mon premier post sur ce forum.

je suis novise sous vb. J'ai fait un petit programe sous un userform, il faut rentrer des données et en appuyant sur un bouton le programme fait le calcul grace a des formules que j'ai rentré sous une feuille excel.

Je voudrais que si une ou plusieurs données ne sont pas rentrées il y est une msgbox qui s'ouvre et qui dise " il manque une donnée" avec comme proposition recommencer

Il faudrais que en appuyant sur recommencer le userform se réouvre pour pouvoir remplir toute les données.

Donc en résumé on appuit sur un bouton, si il manque une donné on puisse la rentrer et rappuyer sur le bouton pour que le calcul s'effectue

merci d'avance et bonne journée
Benoît

13 réponses

bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
16 mai 2012 à 10:54
Salut,

t'es pas dans le bon theme !

Ou est elle manquante cette donnée ?

Dans la form ou dans la feuille excel ?

A+
0
cs_benoit41 Messages postés 7 Date d'inscription mercredi 16 mai 2012 Statut Membre Dernière intervention 16 mai 2012
16 mai 2012 à 11:23
a désolé je savais pas quel théme mettre

si on a oublié une donnée dans la userform

merci pour la reponse rapide
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
16 mai 2012 à 11:34
Bonjour,
on ne quitte alors pas le userform avant qu'il ne soit complété (et on n'a donc pas à le "rouvrir" !)
Voilà une piste:exemple. Sur le bouton de ton choix sur le userform :

dim i as integer
toto = array("textbox1", "textbox2", "textbox3", ... etc ...)
for i = 0 to ubound(toto)
  if controls(toto(i)).text = "" then
     msgbox "oubli" 
     ' tu donnes le focus à controls(toto(i))
     exit sub ' et tu quittes la sub
  end if
next
' et si tu arrives jusqu'il, c'est que tout a été rempli ===>> tu exécutes alors la suite que tu veux !

voilà ! ce devrait être maintenant très simple et je compte sur toi pour t'en sortir un peu comme un grand tout seul (fastoche).
Moi, je ne vais pas plus loin.

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
16 mai 2012 à 11:34
Pas besoin de fermer la forme pour le faire, il suffit de vérifier que les zones de saisies sont toutes bien remplient lors de l’appui sur le bouton. Si c'est ok cela continu sinon tu envois un message d'erreur.

A+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_benoit41 Messages postés 7 Date d'inscription mercredi 16 mai 2012 Statut Membre Dernière intervention 16 mai 2012
16 mai 2012 à 11:47
pour commencer merci je commence a voire plus clair
Il faut que j'utilise une boucle for, mais je ne comprend pas trés bien a quoi correspond :

-toto ( le total?)
-array
-ubound
-controls(toto(i)).text

je ne connais que quelques fonctions et je n'ai jamais vu celle la..
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
16 mai 2012 à 11:57
- toto est le nom donné à l'array créé, si toto ne te plait pas : utilise alors machin, truc, ou chouette
- ouvre donc ton aide VBA sur les mots Array et Ubound !
la collection controls contient tous les contrôles de ton userform.
on peut se référer à un contrôle, soit par son index dans la collection ( controls(index) ), soit, comme je l'ai fait, par son nom dans la collection ( controls("nom_controle").
et toto(u) contient quoi ? des noms de contrôle, justement.

Il te faut manifestement commencer par apprendre les bases.

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
cs_benoit41 Messages postés 7 Date d'inscription mercredi 16 mai 2012 Statut Membre Dernière intervention 16 mai 2012
16 mai 2012 à 12:09
mais je ne demande qu'a apprendre. j'avais ouvert les aide mais quand on débute sous vba c'est trés compliqué de comprendre les aides des formules qu'on ne connais pas

J'ai rentré ce que tu m'as donné et mon programme bloque sur "If Controls(toto(i)).Text = "" Then"

c'est parce que je dois me débrouiller peut être mais je ne vois pas...
0
cs_benoit41 Messages postés 7 Date d'inscription mercredi 16 mai 2012 Statut Membre Dernière intervention 16 mai 2012
16 mai 2012 à 12:16
'On teste si il n'y a pas de cellule vide dans la plage
'Si une cellule est vide on informe l'utilisateur et on sort de la procédure
For Each dl In Worksheets("Feuil1").Range("c18,c19,c53,c54")
If TextBox3.Value = "" Then
MsgBox "Une cellule n'est pas renseignée", vbExclamation, "Message Erreur"
dl.Activate
Exit Sub
End If
Next dl


j'ai commencer par faire ça es qu'il faudrais le "mélanger" avec ce que vous m'avait donné?
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
16 mai 2012 à 12:29
Désolé, mais tu ne sembles pas avoir compris et tu mélanges tout.
Que vient faire une boucle sur une plage de ta feuille dans cette affaire ?
Je ne peux ni n'ai l'intention de transformer en cours ce qui devrait résulter de la simple utilisation de ce que je t'ai indiqué et de la consultation de ton aide VBA.
Et j'ai des valises à préparer, hein ...


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
cs_benoit41 Messages postés 7 Date d'inscription mercredi 16 mai 2012 Statut Membre Dernière intervention 16 mai 2012
16 mai 2012 à 14:35
oui j'ai pas compris c'est pour cela que je demande. Mais si il faut déja avoir de trés bonne base pour poster sur ce forum c'est bien malheureux..
si quelqu'un pourrais m'aider autre que ucfoutu je suis preneur,
merci
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
16 mai 2012 à 14:44
oui j'ai pas compris c'est pour cela que je demande. Mais si il faut déja avoir de trés bonne base pour poster sur ce forum c'est bien malheureux


Je corrige : des bases élémentaires (très élémentaires, mêmes) après ce que je t'ai exposé plus haut.
Si non : on passe purement et simplement au copier/coller, hein ...(et il ne sera même pas compris, on le voit nettement, sans ces rudiments-là !)
Bonne chance.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
cs_benoit41 Messages postés 7 Date d'inscription mercredi 16 mai 2012 Statut Membre Dernière intervention 16 mai 2012
16 mai 2012 à 15:51
Trés élémentaire ... désolé mais j'ai fait un peu de VB en cours certe c'est pas poussé mais on commence justement par les bases élémentaires et c'est pas ça. Vous êtes peut-être trés callé en VB et pour vous c'est élémentaire mais pas pour tout le monde, c'est pour ça qu'un forum est fait. Ce n'est pas pour qu'on vienne nous dire "désolé mais la vous n'avais aucune base je vous est fait une ébauche si vous ne comprenait pas tant pis"

désolé pour les autres car ce sont vraiment des messages inutiles
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
16 mai 2012 à 16:36
c'est pour ça qu'un forum est fait

Non. ne confonds pas forum de développement (le seul mot développement dit déjà ce qu'il veut dire : développer sur les bases acquises) avec un cours en vue de connaître ces bases.

Quand tu écris :
Il faut que j'utilise une boucle for, mais je ne comprend pas trés bien a quoi correspond :
-toto ( le total?)
-array
-ubound
-controls(toto(i)).text
je ne connais que quelques fonctions et je n'ai jamais vu celle la..

Tu ne fais que montrer que tu n'es pas encore en situation de développement. Et ce : d'autant que je t'ai invité à lire certaines rubriques de ton aide. Tu ne l'as pas fait ou (pire) ne les a pas comprises (à peine survolées ?)

Si la lecture de ton aide VBA ne te suffit pas (elle m'a pourtant suffi !), tu trouveras de quoi commencer à apprendre, mais pas sur un forum de développement.? Existent des sites dispensant ces cours de base.
En voilà par exemple 1 :
Tapez le texte de l'url ici.

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
Rejoignez-nous