Aide sur Userform

Bonjour à tous,

J'ai découvert une fonctionnalité dans Excel que je souhaiterai exploiter afin de rendre plus conviviale la saisie d'information dans une des feuilles de mon fichier.

Je me suis documenté sur le net sur les Userforms mais ne comprennant pas rand à la programmation, je bloque et donc je viens sur ce forum afin de vous soliciter une fois de plus (quand on a trouvé une bonne "crémerie", on en change pas .

Je vous explique :

Mon fichier est composé de plusieurs feuilles ( je joins simplement 2 de ces feuilles, la taille de mon fichier étant d'environ 2 Mo, ceci expliquant cela) : une feuille base avec 2 listes, une nommée Année et une autre nommée types_matchs ; la seconde feuille est la saisie des matchs. A partir de là, je souhaite lancer un userform pour saisir les différentes informations. J'ai fait la structure du userform avec des zones de textes, des listes et des boutons.

Il y a des boutons "+" qui sont faits pour incrémenter des valeurs avant la fin de la saisie compléte du matchs. La valeur par défaut doit être 0 à chaque lancement du userform.

Un bouton "enregistrer" pour mettre à jour la feuille en elle-même. Une fois l'enregistrement, et après chaque lancement du userform, les informations doivent se mettre dans les lignes en-dessous de chaque ligne non vide.

Un bouton "annuler" qui doit fermer le userform sans enregistrer les informations.

Je pense que cela ne sera pas trop compliqué à mettre en place pour des experts .

Si ce n'est pas assez clair, je vous renseignerai le plus rapidement possible.

Merci de votre aide

43test.zip (91.13 Ko)

Bonjour Doclefou,

Je t'ai fait un ligne de commande sur le bouton "bouton_plusbuts" (c'est tout bête !) qui incrémente un par un (oui on peut le faire 2 par 2 si tu es un bon buteur !!!) dans la "zone-mesbuts". tu peux donc faire un copier-coller de la ligne.

Tu feras une ligne du genre mais à la place du + tu mets - bien sûr le même genre un bouton pour décrémenter "-" et tu copieras les lignes pour les autres champs "carton-jaune (mais tu es fair-play tu ne t'en serviras jamais du champs carton jaune !!)

Private Sub bouton_plusbuts_Click()
zone_mesbuts.Value = zone_mesbuts.Value + 1

End Sub

J'espère avoir apporté de l'eau à on moulin.

Bon courage.

Cordialement.

Captain SOLO

3app1.xlsm (52.87 Ko)

Bonjour Captain_SOLO,

Merci de ta réponse, je viens de mettre en place dans mon fichier original et comme je n'en doutais pas, cela fonctionne bien. Effectivement à voir le code, c'était "tout bête" mais bon, comme je n'y comprends pas grand chose en programmation.

Maintenant, il ne reste plus que les boutons Enregistrer et annuler, et je ne doute pas non plus que cela soit tout bête...sauf pour moi

Encore merci Captain_SOLO

Doc

Bonjour Doclefou,

Ne t'inquiète pas nous en sommes tous passés par là ... Mais je t'assure qu'à creuser VBA tu tireras beaucoup de satisfaction et de fierté.

N'hésite pas à me solliciter... Je ne te donnerai pas tout de go, toutes les clefs de tes PB car VBA est aussi un "monde" quil faut explorer, découvrir pas soi_même ! Sois curieux !

J'ai commencé en VBA avec un bouquin super bien fait... Je t'en donnerai les références plus tard (je ne l'ai pas sous le bras) tout le monde sur le réseau en profitera à l'occasion.

Amitiès.

Captain SOLO

Bonjour à tous,

J'ai essayé de faire le bouton pour lancer le userform et espérant mettre à vide les différentes listes et à 0 les zone de textes. Voici le code :

Sub Bouton_Nouveau_Match_Club()

'

' Bouton_Nouveau_Match_Club Macro

' Macro pour ouvrir le formulaire de nouveau match de club

Sheets("Matchs_club").Rows(3).Select

Selection.Insert

With Form_Matchs_club

.liste_type.Text = "" 'mis à vide de la liste de choix année

.liste_année.Text = "" 'mis à vide de la liste de choix année

.zone_adversaire.Text = "" 'mis à vide de la zone adversaire

.zone_monscore.Text = "0" 'mis à 0 de la zone de mes scores

.zone_scoreadversaire.Text = "0" 'mis à 0 de la zone du score des adversaires

.zone_mesbuts.Text = "0" 'mis à 0 de la zone de mes buts

.zone_mespasses.Text = "0" 'mis à 0 de la zone de mes passes

.zone_mescartonsjaunes.Text = "0" 'mis à 0 de la zone de mes cartons jaunes

.zone_mescartonsrouges.Text = "0" 'mis à 0 de la zone mes cartons rouges

End With

Form_Matchs_Club.Show 'lance le formulaire

End Sub

Mais malheureusement, Excel me demande de débogguer car il y a un problème sur toutes les lignes. Donc je n'arrive pas à finir mon userform.

Si quelqu'un pouvait me donner les réponses à mes demandes, ça m'arrangerait énormement

Captain_SOLO : je suis prenneur pour ton bouquin sur le VBA.

Merci

Doc

Salut le forum

Lers lignes suivantes vont dans le initialize de ton Userform

With Me
.liste_type.Text = "" 'mis à vide de la liste de choix année
.liste_année.Text = "" 'mis à vide de la liste de choix année
.zone_adversaire.Text = "" 'mis à vide de la zone adversaire
.zone_monscore.Text = "0" 'mis à 0 de la zone de mes scores
.zone_scoreadversaire.Text = "0" 'mis à 0 de la zone du score des adversaires
.zone_mesbuts.Text = "0" 'mis à 0 de la zone de mes buts
.zone_mespasses.Text = "0" 'mis à 0 de la zone de mes passes
.zone_mescartonsjaunes.Text = "0" 'mis à 0 de la zone de mes cartons jaunes
.zone_mescartonsrouges.Text = "0" 'mis à 0 de la zone mes cartons rouges
End With

Mytå

Bonjour Doclefou,

Chose promise, chose due...

Je t'envoie les référence du bouquin pour être "à l'aise" avec VBA.

Excel 97 (cela date !) Visual basic - étape par étape de Microsoft Press.

Si j'ai 5 minutes, je regarde tes requêtes.

Captain SOLO

Bonsoir à tous,

Merci Myta et Captain_SOLO pour vos réponses. Par contre Myta, voilà le code que j'ai tapé

Private Sub UserForm_Initialize()

With Me

.liste_type.Text = "" 'mis à vide de la liste de choix année

.liste_année.Text = "" 'mis à vide de la liste de choix année

.zone_adversaire.Text = "" 'mis à vide de la zone adversaire

.zone_monscore.Text = "0" 'mis à 0 de la zone de mes scores

.zone_scoreadversaire.Text = "0" 'mis à 0 de la zone du score des adversaires

.zone_mesbuts.Text = "0" 'mis à 0 de la zone de mes buts

.zone_mespasses.Text = "0" 'mis à 0 de la zone de mes passes

.zone_mescartonsjaunes.Text = "0" 'mis à 0 de la zone de mes cartons jaunes

.zone_mescartonsrouges.Text = "0" 'mis à 0 de la zone mes cartons rouges

End With

End Sub

Mais le problème est que je n'ai que la zone_monscore qui se met à 0, dans le reste, il n'y a rien.

Je ne comprends pas. Je vais chercher mais je ne pense pas y arriver...pour le moment.

Captain_SOLO,

Je vais essayer de trouver cet ouvrage de Microsoft et si possible pour la version 2003.

Merci de l'information.

Bon sinon, je me suis aperçu que lorsque j'appuie sur le bouton Annuler cela supprime tout ce qu'il y a dans la ligne de la feuille Excel. Le problème c'est que j'ai des formules.

Voilà le code que j'ai mis :

Private Sub bouton_annuler_Click()

Worksheets("matchs_club").Rows(3).Select

Selection.Delete

Unload Me

End Sub

Merci de votre aide

Doc

Salut le forum

Ton fichier corrigé

Mytå

Bonjour à tous,

Merci Myta. C'est impeccable.

Est-ce que cela change quelque chose si je mets un bouton "+" au lieu d'un spin bouton ?

Dans une réponse précédente, tu me disais de mettre un certain code dans le initialize, pourquoi tu ne l'as pas fait ? C'est juste une question sans grande importance mais c'est pour comprendre la logique de programmation.

Dernière question, peut-on mettre des controles sur la saisie ? Par exemple, ne pouvoir saisir que des chiffres dans les zones mes buts, mes passes... et ne pas pouvoir enregistrer si toutes les zones ne sont pas renseignée.

J'espère ne pas abuser de votre gentillesse.

En tous cas, BRAVO pour m'avoir une fois de plus aidé et félicitations aux investigateurs de ce forum qui est un super site pour les "nuls" en Excel comme moi autant que pour les aguérris. Continuez comme ça

Bonne journée à tous.

Doc

Re le forum

Oui tu peux remplacer les Spin Button, mais fait un test de saisie sur le moins (-)

Private Sub bouton_plusbuts_Click()
zone_mesbuts.Value = zone_mesbuts.Value + 1
End Sub

Private Sub bouton_moinsbuts_Click()
zone_mesbuts.Value = zone_mesbuts.Value - 1
If zone_mesbuts.Value-1 < 0 Then  zone_mesbuts.Value = 0
End Sub

Pour la vérification des champs

If Not IsNumeric(MyVar) Then ... 'Action si du texte saisie
If ComboBox1.ListIndex=-1 Then ... 'Action si ComboBox sans saisie
If TextBox1 = "" Then ... 'Action si TextBox sans saisie

Pour le code dans le Initialize tu peux le rajouter c'est un oubli de ma part

Cela permet d'éviter des champs vide (comme les buts) à l'ouverture

Mytå

Bonsoir à tous,

Merci Myta, une fois de plus j'applaudie des 2 mains ton travail.

J'ai repris le formulaire que tu as fait pour l'intégrer dans mon fichier d'origine mais il y a une chose que je ne comprends pas. Quand je clique sur le bouton enrigistrer, les données ne se placent pas à la ligne 3 mais sur les lignes suivantes. Quand j'efface ces données entrées et que j'enregistre mon fichier les données se place à la ligne suivante et ainsi de suite si je refais ces manipulations.

Je viens de m'apercevoir que cela fait la même chose sur le fichier que tu as modifié.

Est-ce qu'il y a une explication ? Si oui, est-ce qu'il y a une solution ?

Merci

Doc

Re le forum

Modifie le début du code du bouton Enregistrer

Private Sub bouton_enregistrer_Click()
Dim Ligne As Integer

Ligne = 3
Rows(Ligne).Insert

Cells(Ligne, 1) = liste_année
'......

Mytå

capture d ecran 149 capture d ecran 150

Bonsoir à tous,

Merci Myta de te pencher sur mon problème. Tu vas peut-être penser que je suis enquiquinant (pour ne pas être grossier) mais cela ne va pas.

Voilà mon code :

Private Sub bouton_enregistrer_Click()

Dim Ligne As Integer

Ligne = 3

Rows(Ligne).Insert

'Ligne = [A65536].End(xlUp).Row + 1 'recherche la dernière ligne nn vide

Cells(Ligne, 1) = liste_année

Cells(Ligne, 2) = liste_type

Cells(Ligne, 3) = zone_adversaire

Cells(Ligne, 5) = zone_mesbuts

Cells(Ligne, 6) = zone_mespasses

Cells(Ligne, 7) = zone_mescartonsjaunes

Cells(Ligne, 8) = zone_mescartonsrouges

Cells(Ligne, 9) = zone_monscore

Cells(Ligne, 11) = zone_scoreadversaire

Unload Me

End Sub

Pourquoi ça ne va pas ?

Premièrement : lors de l'insertion, les formules qui sont dans les cellules des colonnes D, J, N, O & P (ces 3 dernières sont masquées) sont supprimés. Ce qui est très embêtant car elles sont nécessaires dans mes autres feuilles.

Deuxièment : A chaque enregistrement des informations, elles se placent les une au-dessus des autres (enrgistrement 1 L3 ; enristremnt 2 L3 et engristrement 1 L4...) Imaginons qu'il y ait un tri, il faudrait que ça soit par la date puis ?? Non je ne vois pas par quoi le tri pourrait être fait. Il faut que les enregistrements se placent les uns en dessous des autres.

Ce code là (Ligne = [A65536].End(xlUp).Row + 1) a l'air intéressant mais il y a un problème (voir mon commentaire précédent). Alors est-ce qu'il y a un "compteur" qu'il faudrait réinitialiser ? Ou autre ??

J'espère qu'il y a une solution à la réalisation de mon formulaire sinon cela va me bloquer pour d'autres fichiers Excel que je souhaite modifier et rendre plus interactif et attractif.

Désolé de vous dérranger pour ce qui pourrait être futil mais pour moi c'est important.

Merci de votre patience et de votre aide.

Doc

-- Jeu Mar 18, 2010 10:13 pm --

Ah ! Petite chose supplémantaire. Si vous souhaitez mon fichier complet, je veux bien vous le faire parvenir mais je ne sais pas si je peux le poster ici car il fait 1,78 Mo. Si ce n'est pas possible par ce forum, communiquez moi un autre moyen (adresse mail, serveur FTP...) je me ferai un plaisir de vous l'envoyer.

Doc

Bonsoir à tous,

Bon je vous que personne ne réagit à ce sujet.

Je remercie tous ceux qui ont pu se pencher sur mon problème.

Bonne soirée

Doc

Salut le forum

doclefou a écrit :

Bon je vous que personne ne réagit à ce sujet.

Tu as bien relit ta demande, car moi je ne vois pas ce que tu veux faire.

Travaille avec le fichier que tu as fourni en début des ficelles.

Ajoute ton code à problème, alors on vera ou tu veux en venir.

Mytå

Bonsoir à tous,

Myta : Je pensais que c'était clair mais à priori ce n'est pas la cas. Sur le dernier code que tu m'as donné, j'ai mes formules qui ne sont pas reprises ou qui sont effacées.

Voici le code :

Ligne = 3

Rows(Ligne).Insert

Ces formules sont en colonnes D, J, N, O & P avec N,O & P qui sont masquées.

Et l'autre chose qui ne va pas, c'est que chaque nouvel enregistrement se place avant chaque ancien enregistrement. C'est un problème ou du moins je m'en fais un problème car les enregistrements doivent être les une en dessous des autres (c'est une question de chronologie).

Voilà ce qui me pose comme souci avec ce dernier code.

Ensuite, je ne comprends pas pourquoi j'ai un autre problème avec l'enregistrement des données.

Voici ce que je disais il y a quelques jours de cela :

doclefou a écrit :

Bonsoir à tous,

J'ai repris le formulaire que tu as fait pour l'intégrer dans mon fichier d'origine mais il y a une chose que je ne comprends pas. Quand je clique sur le bouton enrigistrer, les données ne se placent pas à la ligne 3 mais sur les lignes suivantes. Quand j'efface ces données entrées et que j'enregistre mon fichier les données se place à la ligne suivante et ainsi de suite si je refais ces manipulations.

Je viens de m'apercevoir que cela fait la même chose sur le fichier que tu as modifié.

Est-ce qu'il y a une explication ? Si oui, est-ce qu'il y a une solution ?

Merci

Doc

Alors je m'interrogeais s'il y avait une sorte de compteur interne. C'est peut-être dû aux formules dans les colonnes D, J, N, O & P. Si c'est le cas, je pense pouvoir les déplacer.

J'espère être plus clair, si ce n'est pas le cas, faites le moi savoir parce ce n'est pas en restant sans réponse que je peux le savoir.

Dans tous les cas, merci Myta pour tout ce que tu as fait et je ne veux pas être chi... avec mon problème car le fichier que je monte n'est fait que mon simple plaisir et pour me faire découvrir Excel. Le fichier que je monte est pour PES2009 en mode carrière...si cela parle à quelqu'un. Le fichier fait 2 Mo donc je ne pense pas pouvoir le mettre sur le forum mais si quelqu'un veut le voir, il faudrait me communiquer une autre façon (adresse mail ou serveur FTP)

Cordialement,

Doc

Rechercher des sujets similaires à "aide userform"