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

Messages postés
7
Date d'inscription
lundi 21 septembre 2009
Statut
Membre
Dernière intervention
24 septembre 2009
- - Dernière réponse : 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
Afficher la suite 

10 réponses

Meilleure réponse
Messages postés
221
Date d'inscription
mercredi 9 avril 2003
Statut
Membre
Dernière intervention
13 décembre 2009
3
Merci
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+

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 122 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Ayr
Messages postés
1566
Date d'inscription
mardi 26 décembre 2000
Statut
Membre
Dernière intervention
5 avril 2013
3
0
Merci
Bonjour,

C'est surtout ici, que tu es "complètement à l'ouest" ! :
VB.NET et VB 2005 > Divers > General
n'est pas VBA
Commenter la réponse de jmf0
Messages postés
221
Date d'inscription
mercredi 9 avril 2003
Statut
Membre
Dernière intervention
13 décembre 2009
0
Merci
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+
Commenter la réponse de cs_Ayr
Messages postés
7
Date d'inscription
lundi 21 septembre 2009
Statut
Membre
Dernière intervention
24 septembre 2009
0
Merci
Merci pour les informations, je vais essayer de débrouiller avec le lien que tu m'as donné ayr.
Commenter la réponse de mammien
Messages postés
7
Date d'inscription
lundi 21 septembre 2009
Statut
Membre
Dernière intervention
24 septembre 2009
0
Merci
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
Commenter la réponse de mammien
Messages postés
221
Date d'inscription
mercredi 9 avril 2003
Statut
Membre
Dernière intervention
13 décembre 2009
0
Merci
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.
Commenter la réponse de cs_Ayr
Messages postés
7
Date d'inscription
lundi 21 septembre 2009
Statut
Membre
Dernière intervention
24 septembre 2009
0
Merci
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
Commenter la réponse de mammien
Messages postés
7
Date d'inscription
lundi 21 septembre 2009
Statut
Membre
Dernière intervention
24 septembre 2009
0
Merci
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
Commenter la réponse de mammien
Messages postés
221
Date d'inscription
mercredi 9 avril 2003
Statut
Membre
Dernière intervention
13 décembre 2009
0
Merci
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... )
Commenter la réponse de cs_Ayr
Messages postés
7
Date d'inscription
lundi 21 septembre 2009
Statut
Membre
Dernière intervention
24 septembre 2009
0
Merci
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
Commenter la réponse de mammien