Userform combinée, à 1ère vue compliquée, ms pas tant que ça ;-)

  • Initiateur de la discussion lapou
  • Date de début
L

lapou

Guest
Bonjour à tout le forum, et en particulier aux vétérans de celui-ci (ce n'est pas péjoratif bien au contraire ;-))

Je vais essayer d'être le plus clair possible :
- J'ai 15 onglets similaire où je rentre des performances sportives de personnes (15 personnes donc). Je leur indique Sports (A1), Concours (B1), Manches (C1), Position (D1) et Fufus (E1). Sur certains j'en suis déjà à 100 lignes...
- J'ai un onglet qui me fait le bilan de tout ça : Répartition des perfs par sports, par membres, position moyennes,....Cet onglet à été réalisé avec l'aide de Monique, que tout le monde connait ;-)

Pour visualiser et prendre des idées éventuellement je peux vous l'envoyé avec plaisir ;-)

Voici mon souhait...
Créer une userform qui me permettent de rentrer ces 5 données sur un ou plusieurs onglets suivant les résultats. J'ai déjà fait la trame mais c'est plus pour le contenu et les codes que je galère !!!

Je vous envois tout ça avec plaisir en espérant que vous pourrez m'aider à surmonter cette montagne qu'est l'Everest pour moi, simple petit utilisateur d'excel ;-)

Enorme merci à vous tous.
Je suis impatient de vous lire
Jérémie
 
@

@+Thierry

Guest
Re Lapou....

Il y a deux types de boutons... Car il y a deux types de barre d'outils :



Pour la 1)
Tu Click à droite sur le bouton et tu assignes une macro de ce type (qui sera dans un Module Standard :

Sub MontreUSF ()
UserForm1.Show
End Sub

Pour la 2)
Tu Doubles-Click sur le bouton quand tu viens à peine de le dessiner et tu te retrouves dans le Private Module de la Feuille où se trouve le bouton... Tu auras ce code déjà fait...
Private Sub CommandButton1_Click()

End Sub

Que rajouteras-tu entre ces deux lignes............ Je te le dis ?

Et oui c'est comme l'autre....


Trouvé ?

Alors bravo !!!

Et bonne découverte du VBA.... Sans vouloir t'offusquer Lapou, tu devrais quand même t'acheter un bouquin pour avoir quelques bases de programmation VBA car sinon tu vas galérer pas mal... (Enfin on est là !!)

Bonne Après Midi
@+Thierry
 
L

lapou

Guest
Salut Thierry et le forum !!!

Je sais je suis lourd scuse moi :-:)-:)-(

Mais now c'est bon j'y suis arrivé ;-)

Ne t'en fais pas je ne suis pas offusqué par ton conseil bien au contraire j'y pense mais c'est l'investissement qui me freine un peu alors si tu as des conseils ;-)
Et quand je vois l'efficacité de ce forum ça m'incite pas à chercher moi-même ;-) mais ça c'est en partie de la faute à chacun d'entre vous qui êtes trop fort :)

Bonne journée, je retourne essayé de finir tt ça ;-)
Tchao
 
L

lapou

Guest
Re: USERFORM combinée, une dernière précision ;-)

Re Bonjour tout le monde !!!

Avec la Userform, les textbow pour "position" et "fufus" doivent recevoir uniquement des chiffres !
Or pour l'instant, j'ai l'impression qu'il ne met pas le bon format et les mise en forme conditionnelent que j'ai sur ces 2 colonnes ne fonctionne pas.
J'ai le tit icone attention qui me propose d'"ignorer l'erreur",de "convertir en nombre",...et quand je fais ce dernier cela marche nickel.
j'espère que j'ai été assez clair dans mon explication ;-)

Merci beaucouppppppppppppppppppppppppp !

Tchao
 
@

@+Thierry

Guest
Salut Lapou, le Forum

Ah oui je vois, dans ce cas tu devras abandonner la boucle :
'pour les TextBox 2 to 5...
For C = 2 To 5
.Cells(L, C) = Controls("TextBox" & C)
Next

Mais te contenter d'un code comme ceci alors
.Cell(L,2) = Texbox2
.Cell(L,3) = Texbox3
.Cell(L,4) = CInt(Texbox4)
.Cell(L,5) = Texbox5

Ici c'est la Texbox4 qui contient une valeur numérique...

On pourrait tout de même éviter toutes ces lignes dans le cas d'un grand nombre de TextBoxes à reporter avec une boucle comme ceci :

For C = 2 To 5
If Not C = 4 Then
.Cells(L, C) = Controls("TextBox" & C)
Else
.Cells(L, C) = CInt(Controls("TextBox" & C))
End If
Next

Ce code ferait exactement la même chose que celui précédemment exposé.

Maintenant nommer des TextBox "position" et "fufus" n'est vrament pas très conventionnel... Prends l'habitude d'adopter des Noms Clairs (exemple "TxbPosition") qui permettra au premier coup d'oeil d'identifier le type de Contrôle et de ne pas le confondre avec une Variable... (Quant à "fufus" alors là !! lol)

Bonne Journée
@+Thierry
 
L

lapou

Guest
Merci Thierry, quelle maîtrise cela marche à merveille !!!

Pour nommer mes textboxes différement, cela viendra quand j'aurais atteins ton niveau, si je l'atteins un jour...

Bonne jourée ;-)
Tchao
 
L

Lapou

Guest
Bonjour Thierry, le Forum !!!

Une précision : lorsque je valide une perfs, je vide ttes les textboxes si l'option est cochée, ça c'est nickel !!!
Mais peut-on faire pareil pour la listbox ?

Merci beaucoup

Bonne journée ! :)
 
@

@+Thierry

Guest
Bonjour Lapou, le Forum

Oui Lapou, pour une ListBox, tu peux faire ceci :
ListBox1.Clear

Pour toutes les ListBoxs...

Private Sub TheCleaner() '<<<<< MACRO DE NETTOYAGE DES TEXTBOXS
Dim CTRL As Control '<<<<<<<<<< Déclaration de Variable de Type Objet "Control"

'ICI Une Boucle sur cahque Controls avec un test sur le Nom (4 Première Lettres) pour
' Vérifier qu'on ne va vider ques des "TEXT"Box...des "COMBO"Box.... des "LIST"Box
For Each CTRL In Controls
If Left(CTRL.Name, 4) = "Text" Or Left(CTRL.Name, 5) = "Combo" Then
CTRL.Value = ""
ElseIf Left(CTRL.Name, 4) = "List" Then
CTRL.Clear
End If
Next CTRL

End Sub

Bonne Journée
@+Thierry
 
@

@+Thierry

Guest
Re Lapou, le Forum

Et Bien moi je lis le Français (lol) "Une précision : lorsque je valide une perfs, je vide ttes les textboxes si l'option est cochée, ça c'est nickel !!!
Mais peut-on faire pareil pour la listbox ?"


C'est vrai que çà pouvait sembler un peu bizarre comme demande mais le client est roi !!! lol

Bon sinon alors pour délectionner les items d'une ListBox...

Private Sub DeSelector()
Dim i As Byte
For i = 0 To Me.ListBox1.ListCount - 1
Me.ListBox1.Selected(i) = False
Next
End Sub

Bon App
@+Thierry
 
@

@+Thierry

Guest
Bonjour Lapou, le Forum

Mais si, mais si, je suis formel !!!

Je pense simplement que tu n'as pas placé ce code comme il faut...

'ICI Une Boucle sur cahque Controls avec un test sur le Nom (4 Première Lettres) pour
' Vérifier qu'on ne va vider ques des "TEXT"Box...des "COMBO"Box.... des "LIST"Box
Dim i As Byte
For Each CTRL In Controls
If Left(CTRL.Name, 4) = "Text" Or Left(CTRL.Name, 5) = "Combo" Then
CTRL.Value = ""
ElseIf Left(CTRL.Name, 4) = "List" Then
For i = 0 To CTRL.ListCount - 1
CTRL.Selected(i) = False
Next
End If
Next CTRL

NB pour autant que tu es au moins une "ListBox" nommée "Listxxxxxx" et surtout pas d'autre type de Contrôles ActiveX que "ListBox" nommés "Listxxxxxxxxxxx"

Bon App
@+Thierry
 

Statistiques des forums

Discussions
315 133
Messages
2 116 602
Membres
112 801
dernier inscrit
Yaz113