Aide sur Userform
- Messages
- 29
- Excel
- 2003 Fr
- Inscrit
- 30/09/2008
- Emploi
- Technicien micro rseau & hotliner à mes heures perdues
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
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
- Messages
- 29
- Excel
- 2003 Fr
- Inscrit
- 30/09/2008
- Emploi
- Technicien micro rseau & hotliner à mes heures perdues
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"
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
- Messages
- 29
- Excel
- 2003 Fr
- Inscrit
- 30/09/2008
- Emploi
- Technicien micro rseau & hotliner à mes heures perdues
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
- Messages
- 29
- Excel
- 2003 Fr
- Inscrit
- 30/09/2008
- Emploi
- Technicien micro rseau & hotliner à mes heures perdues
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å
- Messages
- 29
- Excel
- 2003 Fr
- Inscrit
- 30/09/2008
- Emploi
- Technicien micro rseau & hotliner à mes heures perdues
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å
- Messages
- 29
- Excel
- 2003 Fr
- Inscrit
- 30/09/2008
- Emploi
- Technicien micro rseau & hotliner à mes heures perdues
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
- Messages
- 29
- Excel
- 2003 Fr
- Inscrit
- 30/09/2008
- Emploi
- Technicien micro rseau & hotliner à mes heures perdues
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
- Messages
- 29
- Excel
- 2003 Fr
- Inscrit
- 30/09/2008
- Emploi
- Technicien micro rseau & hotliner à mes heures perdues
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å
- Messages
- 29
- Excel
- 2003 Fr
- Inscrit
- 30/09/2008
- Emploi
- Technicien micro rseau & hotliner à mes heures perdues
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