[déplacé VB.NET -> VBA] Controle de saisie Listbox

Résolu
mammien Messages postés 7 Date d'inscription lundi 21 septembre 2009 Statut Membre Dernière intervention 24 septembre 2009 - 21 sept. 2009 à 15:14
mammien Messages postés 7 Date d'inscription lundi 21 septembre 2009 Statut Membre Dernière intervention 24 septembre 2009 - 24 sept. 2009 à 13:32
Bonjour à tous,

je suis tout nouveau, tout beau dans le monde du VB... Je programme un petit truc sur VBA (Excel) pour ma boite et je me retrouve bloquer sur un point qui je suis sûr est tout bête... mais ça ne sort pas pour le moment!

Intitulé du besoin : Interface sous Excel permettant de tenir imformer différents contacts d'actions lancées sur un moyen.

Objectifs : Interface d'insertion de nouvelles actions, à l'aide d'un formulaire, dans un feuille excel et génération d'un mail automatique vers plusieurs destinataires, Interface de validation des actions par les destinataires du mail protéger par mot de passe individuel.

C'est la première partie qui me bloque pour le moment.

J'ai réussi à l'aide des recherches sur les fofos à lancer outlook et à écrire le mail, j'ai créer l'interface de saisie à l'aide de Listbox ( entrée des items fait dans les listbox) et zone de texte mais maintenant, avant de lancer la procédure, je voudrais vérifier que tous les champs sont remplis, lancer un MSGbox si ce n'est pas le cas et bloquer l'évolution du programme

Quelqun pourrait m'orienter.... je dois travailler sur les index? sur les valeurs ou alors je suis à l'ouest complet...???

Je pensais faire une structure de type :

If Listbox.value = listbox.item ("") then Msgbox (......)
End if

Besoin d'aide en gros!

merci et A+

Mam

10 réponses

cs_Ayr Messages postés 221 Date d'inscription mercredi 9 avril 2003 Statut Membre Dernière intervention 13 décembre 2009 2
23 sept. 2009 à 21:22
Pas réussi à faire fonctionné mais tu as travaillé et trouvé une autre solution, je trouve ça bien.

Prenons un exemple :
Nous allons partir à zéro pour ne pas être perturbé par d'autres éléments de code.


[list]
1ère Etape:
Ajoute un UserForm à ton projet. Change la propriété Nom pour "UserFormTestFonction". Un peu long comme nom mais au moins on sait de quoi on parle. Ajoute par exemple deux TextBox, le nombre importe peu mais commençons simplement. Ajoute un bouton.
/list

[list]
2ème Etape:
Ajout un module à ton projet et nomme le "ModuleTestFonction".
Insère dans le module le code suivant:
Public Function AllFieldsOk(ByVal MyUserForm As UserForm) As Boolean
  Dim FieldsOk As Boolean
  Dim MyControl As Control
  FieldsOk = True
  For Each MyControl In MyUserForm.Controls
    If TypeOf MyControl Is msforms.TextBox Or TypeOf MyControl Is msforms.ComboBox Then
        If MyControl.Value = "" Then
            FieldsOk = False
            Exit For
        End If
    End If
  Next MyControl
  AllFieldsOk = FieldsOk
End Function

/list

[list]
3ème Etape:
Retourne sur UserFormTestFonction et ajoute dans l'évènement Click du bouton, le code suivant :
If AllFieldsOk(Me) Then
    Call MsgBox("Vous avez oublié de saisir des informations", vbCritical)
   Else
    Call MsgBox("Vous avez bien saisie toutes les informations", vbInformation)
End If

/list

[list]
4ème Etape:
Lance UserFormTestFonction et teste la fonction en cliquant sur le bouton avec les TextBox vides, une remplis, les deux remplis.
/list

[list]
5ème Etape:
Dis nous si ça marche et au cas ou, ce que tu n'as pas compris.
/list

A+
3
jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 8
21 sept. 2009 à 15:19
Bonjour,

C'est surtout ici, que tu es "complètement à l'ouest" ! :
VB.NET et VB 2005 > Divers > General
n'est pas VBA
0
cs_Ayr Messages postés 221 Date d'inscription mercredi 9 avril 2003 Statut Membre Dernière intervention 13 décembre 2009 2
21 sept. 2009 à 16:52
Bonjour,

Ben tu y es presque... Tiens un sujet qui correspond à ton problème, contrairement à ce que le titre pourrait laisser croire --> Valeurs d'un Userform contenu dans une variable

A+
0
mammien Messages postés 7 Date d'inscription lundi 21 septembre 2009 Statut Membre Dernière intervention 24 septembre 2009
22 sept. 2009 à 07:32
Merci pour les informations, je vais essayer de débrouiller avec le lien que tu m'as donné ayr.
0

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

Posez votre question
mammien Messages postés 7 Date d'inscription lundi 21 septembre 2009 Statut Membre Dernière intervention 24 septembre 2009
22 sept. 2009 à 08:59
Salut,

Comme dit dasn un autre sujet, j'ai un problème avec l'appel de la fonction.

Je l'ai placé dans un module (info trouvé sur le net) et je n'arrive pas à l'appeller,

Argument non facultatif... je ne sais pas quel ligne de code rentrer pour lancer la fonction de controle de saisi

Merci pour l'aide
0
cs_Ayr Messages postés 221 Date d'inscription mercredi 9 avril 2003 Statut Membre Dernière intervention 13 décembre 2009 2
22 sept. 2009 à 13:03
Re bonjour mammien,

pour appeler la fonction tu doit lui donner le nom de l'UserForm qui contient les objets à contrôler.

Par exemple si ta form s'appelle UserForm1 (ce que je te déconseil ! Il faut donner des noms plus explicites) tu doit faire, à l'endroit du code où tu veux effectuer le contrôle :
Call Fields_Check(UserForm1)


Ou Bien, si tu veux récupérer le retour de la fonction :

Dim retourFonction As Boolean
retourFonction = Fields_Check(UserForm1)


Ou bien tu peux tester directement :

If Fields_Check(UserForm1) Then ....



Mais vu ta question, je pense que tu devrai voir ou revoir les bases de la création et utilisation des Procédures et Fonctions en VBA.

Et pense à poster dans les bonnes sections du forum, ton problème relève de la section vba et non vb.net

Bon courage

PS: j'ai apporté une correction à la fonction que j'avais proposée dans le liens que je t'ai donné. Tu devrai aller voir les corrections.
0
mammien Messages postés 7 Date d'inscription lundi 21 septembre 2009 Statut Membre Dernière intervention 24 septembre 2009
22 sept. 2009 à 14:40
Merci pour ta réponse,

Comme je le disais, j'apprend en tapant, je suis totalement novice en VBA. Je ferai attention par la suite à poster au bone endroit! Hier, j'ai fait ça dans la panique et par conséquent lu les item en diagonal!

Je vais essayer de voir ce que tu me propose donne et je donnerai le résultat ici après pour valider!

Merci encore pour l'épine que tu m'hottes du pied!

A+

Mammien
0
mammien Messages postés 7 Date d'inscription lundi 21 septembre 2009 Statut Membre Dernière intervention 24 septembre 2009
23 sept. 2009 à 14:08
Pas d'avancement de mon coté.... Les listbox et textbox sont vides mais le programme déroule quand même... Les champs vides des formes sont définis de la même manière que dans ton programme...

J'ai donc changé de manière de faire, je suis passé sur des option boutton dasn des frames différentes et ça marche bien aussi!

Cependant, à titre personnel et qui sait pour d'autre personnes dans le besoins comme moi, j'aimerai comprendre pourquoi je n'arrive pas à utiliser cette fonction!

Merci d'avance

Damien
0
cs_Ayr Messages postés 221 Date d'inscription mercredi 9 avril 2003 Statut Membre Dernière intervention 13 décembre 2009 2
23 sept. 2009 à 21:26
Bon décidément je ne peux m'empêcher de faire des bourde

Il y à une erreur dans le code de l'évènement du bouton. Il faut écrire :

If Not AllFieldsOk(Me) Then
    Call MsgBox("Vous avez oublié de saisir des informations", vbCritical)
   Else
    Call MsgBox("Vous avez bien saisie toutes les informations", vbInformation)
End If


(Juste un p'tit code de rien du tout et on en est déjà à la version 2012 sp2... )
0
mammien Messages postés 7 Date d'inscription lundi 21 septembre 2009 Statut Membre Dernière intervention 24 septembre 2009
24 sept. 2009 à 13:32
Salut Ayr

Merci pour ta patience, ton aide et le descriptif complet que tu as fait!

Je l'ai intégré au sein de mon programme sur 2 textbox (une nouvelle évolution) et j'ai conservé ma gestion par option boutton sur le reste car ça marche niquel!

A+

Damien
0
Rejoignez-nous