aide sur programmation uerform

angoul

XLDnaute Impliqué
Bonjour

Suivant vos conseils, j'ai refait ma presentation et fait une userform pour la saisie de resultat;
Mais maintenant je suis bloquer car je ne sait pas faire la programmation, bien entendu je demande pas que l'on me fasse tous
mais que l'on me dise comment faire et je le ferait si j'ai un modele
j'ai mis un petit descriptif et je suis ouvert a toute modification

Cijoint.fr - Service gratuit de dépôt de fichiers
merci d'avance si vous pouvez regarder a mon probleme
 
Dernière édition:

Brigitte

XLDnaute Barbatruc
Re : aide sur programmation uerform

bonjour,

J'ai regardé ton fichier, je ne suis pas capable de t'aider vraiment, mais...

J'ai créé (avec l'aide de mon fiston pour l'usf) voici pas mal d'années, un fichier qui ressemble à ton appli (pour des courses sur route en athlétisme).

Trop gros pour le mettre ici... je le pose sur cijoint.fr également...

Cijoint.fr - Service gratuit de dépôt de fichiers

Regarde si cela peut t'aider.

En gros :

- un usf pour saisir (et éviter les doublons de dossards)
- des onglets par catégorie (comme toi) avec recherchev qui va chercher les résultats saisis
- en temps réel, le classement général et par catégorie, et par sexe...

Bon courage.

PS : ce fichier a fait ses preuves, le club (quitté depuis) l'utilise trois fois par an depuis.
 

Excel-lent

XLDnaute Barbatruc
Re : aide sur programmation uerform

Bonsoir Angoul, Brigitte, le fil,


angoul à dit:
Suivant vos conseils

Lesquels? C'est ton premier post de cette discussion!!!!

angoul à dit:
je ne sait pas faire la programmation
Vraiment rien de rien??? Alors qui a fait les macros du module1 ?

Si tu connais vraiment rien au VBA mieux vaut ne pas utiliser d'UserForm!!!

Car derrière, pour le faire fonctionner, il faut des tonnes de lignes de code en VBA!!! Or pour le VBA (comme en toute chose), mieux vaut y aller en douceur!!! Car là..... avec ta question, comme tu vas le voir ci-dessous, tu t'attaques a du lourd!

Mais si telle est ta volonté continu de lire mon post!

Macro à écrire dans l'un de tes modules :
Code:
Sub [COLOR="DimGray"][B]Proposition[/B][/COLOR]()
[COLOR="Green"]' Macro enregistrée par Excel-lent[/COLOR]
Application.ScreenUpdating = False
UserForm1.Show
Application.ScreenUpdating = True
End Sub

Puis sur ta feuille menu, tu fais un bouton auquel tu lie cette macro. Ainsi à chaque fois que tu cliqueras dessus, ton UserForm s'ouvrira.

La commande Application.ScreenUpdating permet de rendre l'exécution du code de ta UserForm plus rapide et éviter à l'utilisateur de voir Excel travailler (se déplacer d'une cellule à l'autre, d'un onglet à l'autre, ...)

Concernant ton UserForm, personnellement pour tes "OptionButton" j'aurais mis sur la ligne (Name) des propriétés des noms plus explicite que "OptionButton96" (mis par défaut par Excel)! A la place j'aurais par exemple mis "OptionButtonEspoirMOpen"!

Ainsi l'on saura dans ton code de quoi l'on parle! Qu'il s'agit d'une OptionButton et que l'utilisateur a cliqué sur "Espoir Open" de la zone "Masculin"

Toujours dans ta UserForm, concernant ton bouton "Fermer", sur la ligne (Name) des propriétés de cette dernière, tu as laissé la valeur par défaut : "CommandButton3"!!!!

Tu aurais dû mettre à la place par exemple :
"CommandButtonFermer"

Car sans les modifications annoncé ci-dessus, voici à quoi va ressembler ton futur code (placer dans ta UserForm)
Code:
Private Sub [COLOR="Red"][I]CommandButton3[/I][/COLOR]_Click()
...
End Sub

Private Sub [COLOR="Red"][B]OptionButton96[/B][/COLOR]_Click()
...
End Sub

Alors qu'avec mes propositions tu aurais eu :
Code:
Private Sub [COLOR="Blue"][I]CommandButtonFermer[/I][/COLOR]_Click()
...
End Sub

Private Sub [COLOR="Blue"][B]OptionButtonEspoirMOpen[/B][/COLOR]_Click()
...
End Sub

Ce qui te le reconnaîtra est quand même plus clair et facilite ainsi la programmation!

Voici ci-dessous quelques codes qui t'enlèverons déjà une grosse épine du pied! Macro à coller dans (*) ton UserForm
Code:
Private Sub CommandButton3_Click()
[COLOR="Green"]' Macro enregistré par Excel-lent[/COLOR]
[COLOR="Green"]' Cette macro permet lorsque tu clic sur le bouton "FERMER" de quitter l'UserForm[/COLOR]

  Unload UserForm1
End Sub

Private Sub OptionButton96_Click()
[COLOR="Green"]' Macro enregistré par Excel-lent[/COLOR]
[COLOR="Green"]' Cette macro permet lorsque tu clic sur l'OptionButton correspondant au texte "EspoirMOpen" de la zone masculin
' d'inscrire la liste des compétiteurs des Espoir M Open dans ta ComboBox1 (c'est à dire celle correspondant aux compétiteurs ;) ).[/COLOR]

  Me.ComboBox1.Clear
  
  With Sheets("EspoirM Open")
        i = 8
        Do While .Cells(i, 4) <> ""
            ComboBox1.AddItem .Cells(i, 4)
            i = i + 1
        Loop
    End With
End Sub

Il te reste plus qu'à faire la même chose pour les autres "OptionButton"!

Voici pour le partie visible de l'iceberg! Sans vouloir te faire peur, pour l'instant on a avancé d'un pas de géant ensemble, mais cela ne représente pratiquement rien par rapport au boulot qu'il te reste à faire! On a dû faire que la moitié!

Toujours d'attaque pour continuer?

Si oui, essaye d'appliquer mes remarques sur ton fichier et y insérer les macros déjà données et t'en inspirer pour faire une partie des suivantes.

Pour information, si tu range correctement tes onglets et donne les bons nom à tes "OptionButton", "ComboBox", ... cela te permettra (en plus de rendre le code plus clair, ...) de faire des boucles, te permettant ainsi de rendre ton code plus court, mais aussi plus rapide! Mais procédons par ordre, faisant d'abord un fichier clair et qui fonctionne! Ce serait déjà un bon début! Je voudrais pas te faire peur!

angoul à dit:
bien entendu je demande pas que l'on me fasse tous
mais que l'on me dise comment faire et je le ferait si j'ai un modele

Cela t'honore, mais malheureusement je ne vois pas comment on pourrait t'aider sans faire le travail à ta place! Et concernant le modèle! Chaque modèle étant particulier, il te faudrait des morceaux de 40 modèle différent!!! Savoir quoi prendre dans chacun et comment les mettre bout à bout, voir... les imbriquer! Quasi impossible par forum interposé et surtout si tu ne connais rien à la programmation!!! Mais bon, maintenant, (si mes explications étaient clair), tu dois avoir déjà fais de gros progrés!

Regarde ce post que j'ai fais à l'époque, il devrait bien t'aider.

Tiens nous au courant de ton avancement.

Bonne fin de WE.

(*) va dans l'éditeur de code VBA (ALT+F11), sélectionne ton UserForm, met ton curseur n'importe où dessus, puis double clic! A ce moment, la page de code de ton UserForm s'ouvrira, c'est ici qu'il faut copier les deux macros que je t'ai donné.

PS. : n'oublie pas, pour ta prochaine question, d'actualiser ton fichier sur C.joint avec les macros ci-dessus et celles que tu n'aura manqué de faire ;)
 
Dernière édition:

Excel-lent

XLDnaute Barbatruc
Re : aide sur programmation uerform

Bonsoir,

Autre astuce :
lorsque tu auras fini de renommer tes différentes "CommandButton", ... tu constateras que lorsque tu es sur ton UserForm, si tu double clic sur l'un de tes "CommandButton", "ComboBox", ... une feuille s'ouvre, où sont inscrite toutes les macro de l'UserForm.

Si pour ce "CommandButton", "ComboBox", ... il n'existe pour l'instant aucune macro, il ouvre automatiquement une nouvelle procédure

Code:
Private Sub [I][COLOR="Blue"]nom de l'objet[/COLOR][/I][COLOR="Red"][U]_Click[/U][/COLOR]()

End Sub

nom de l'objet par exemple : OptionButton96 ;)

Ainsi, il ne te reste plus qu'à rajouter juste au dessus de "End Sub" ce que tu veux qu'Excel fasse lorsque l'utilisateur cliquera sur ce bouton.

C'est pratique, cela évite de faire des erreurs de frappes en écrivant le nom de la macro.

Bravo pour ta motivation et ta patience.

Tu as compris la macro :
Code:
Private Sub OptionButton96_Click()

  Me.ComboBox1.Clear
  
  With Sheets("EspoirM Open")
        i = 8
        Do While .Cells(i, 4) <> ""
            ComboBox1.AddItem .Cells(i, 4)
            i = i + 1
        Loop
    End With
End Sub

C'est bon? Pas besoin de plus d'explication?

Tu arrives à l'adapter pour tes autres "cases à cocher" ?

A te lire
 
Dernière édition:

Excel-lent

XLDnaute Barbatruc
Re : aide sur programmation uerform

Au cas où :

Traduction en français de la macro (pour t'éviter de perdre du temps en tâtonnement et garder ton courage intact pour le reste :

Légende :
ComboBox1 => nom actuel que tu as donné à ta liste de choix : "compétiteur"

OptionButton96 => nom actuel que tu as donné à la "case à cocher" de la zone "Masculin" : "Espoir Open"

Code:
Private Sub [COLOR="Blue"][B]OptionButton96[/B][/COLOR]_Click()
[COLOR="Magenta"][B]'[/B][/COLOR] Lorsque l'utilisateur clic sur [COLOR="Blue"][B]OptionButton96[/B][/COLOR]

  Me.[COLOR="Red"][B]ComboBox1[/B][/COLOR].[COLOR="Green"]Clear[/COLOR]
[COLOR="Magenta"][B]'[/B][/COLOR] [COLOR="Green"]Efface[/COLOR] la liste des valeurs figurant dans [COLOR="Red"][B]ComboBox1[/B][/COLOR] (suite aux manip. antérieur)
  
  With Sheets("EspoirM Open")
[COLOR="Magenta"][B]'[/B][/COLOR] jusqu'au code [COLOR="DeepSkyBlue"][B]End With[/B][/COLOR] tous les codes qui commenceront par "[COLOR="SandyBrown"][B] .[/B][/COLOR]" signifiera que je travail avec la feuille nommé "EspoirM Open".
        i = 8
[COLOR="Magenta"][B]'[/B][/COLOR] la variable i est égale à 8
        Do While [COLOR="SandyBrown"][B].[/B][/COLOR]Cells(i, 4) <> ""
[COLOR="Magenta"][B]'[/B][/COLOR] tant que la cellule : colonne 4, ligne i est différente de vide 
            [COLOR="Red"][B]ComboBox1[/B][/COLOR].AddItem [COLOR="SandyBrown"][B].[/B][/COLOR]Cells(i, 4)
[COLOR="Magenta"][B]'[/B][/COLOR] prendre la valeur de la cellule et la rajouter dans la liste de choix : [COLOR="Red"][B]ComboBox1[/B][/COLOR]
            i = i + 1
[COLOR="Magenta"][B]'[/B][/COLOR] incrémenté i de 1 : i est égale à l'ancienne valeur contenu dans i (8 la première fois) auquel on rajoute 1
        Loop
[COLOR="Magenta"][B]'[/B][/COLOR] fin de la boucle Do While-Loop, donc retourner à la ligne Do While tant que la cellule colonne 4, ligne i ne sera pas vide, sinon quitter cette boucle et passer à la ligne ci-dessous
    [COLOR="DeepSkyBlue"][B]End With[/B][/COLOR]
[COLOR="Magenta"][B]'[/B][/COLOR] on arrête de travailler avec la feuille nommé "EspoirM Open"
End Sub
[COLOR="Magenta"][B]'[/B][/COLOR] fin de la macro

Si tu le souhaite, pour garder les explications (commencent par le signe ') tu peux prendre cette macro et la copier coller directement dans Excel, elle fonctionnera tout aussi bien que la version sans explication, mais au moins quand tu reprendras cette macro dans 2 mois, tu te remettras dans le bain plus vite ;)

Si tu veux plus d'explication sur la boucle Do While - Loop, tu peux regarder le didacticiel suivant qui je trouve est bien fait (merci à Cathy ;) )
 

Statistiques des forums

Discussions
312 684
Messages
2 090 916
Membres
104 697
dernier inscrit
Pierrot Hubert