userform

mpesche

XLDnaute Occasionnel
Bonsoir,
je voudrai créer un tableau avec userform mais je n' arrive pas

voici en pièce jointe le fichier type
attention pour chaque onglet, un mois
si vous y arrivez, ça me dépannerai bcq

s'il vous plait aidez moi
 

Pièces jointes

  • userform.xls
    22.5 KB · Affichages: 140
  • userform.xls
    22.5 KB · Affichages: 144
  • userform.xls
    22.5 KB · Affichages: 143

mpesche

XLDnaute Occasionnel
Re : userform

merci, mon contrat est accepté, en parti grace à toi et je t'en remercie bcq!!!
petite chose la recherche dans filtres, les ambu ne sont pas noté.
probleme, je ne peux pas t'envoyer le fichier car mes chauffeurs travail dessus, peux tu m'envoyer la correstion et me dire comment mettre et où
encore merci
 

camarchepas

XLDnaute Barbatruc
Re : userform

Bonjour ,

Génial donc ,

Je ne comprends pas car pourtant , je viens de rééssayer avec la dernière version publiée ici
et cela fonctionne , ou c'est moi qui ne comprend pas ton besoin

Voici le résultat de la recherche et les infos pour les Ambus sont dans ces 2 onglets , Non ?

Net_Jour_Ambu 16/09/2014 12:27 CAROLE A01
Desinfection 16/09/2014 12:27 CAROLE A06 Ok
 

camarchepas

XLDnaute Barbatruc
Re : userform

Re ,

et oui , je cherchais pas au même endroit , en fait il manquait 2 colonnes I et F dans la liste déroulante .

pour modifier ,

ESSAYES DEJA SUR UNE COPIE POUR PAS TOUT CASSER

depuis le classeur appuies sur les 2 touches [ALT] + [F11], ceci ouvre l'éditeur vba

puis [CTRL] + R (pour ouvrir l'explorateur de projet s'il n'y est pas )

la tu dois voir comme un dossier nommé Feuilles, cliques sur le + juste à gauche de feuilles .

cliques touche souris droite ensuite sur Recherches , dans le menu venant de s'ouvrir cliques sur code

Dans la page de code tout en bas tu vas trouver : Private Sub UserForm_Initialize()

il faut effacer de "Private Sub UserForm_Initialize()" jusqu'à "end sub" y compris

puis remplacer par celui ci grace à un copier coller et voilà :

Code:
Private Sub UserForm_Initialize()

Dim Dico As Object
Dim Courant As Range
Dim Element_Dico As Object
Dim Fin1 As Long, Fin2 As Long, Fin3 As Long, Fin4 As Long

Set Dico = CreateObject("Scripting.Dictionary")
ComboBox1.Clear
ComboBox2.Clear
'Les Personnes
With Sheets("Listes")
 Fin1 = .Range("S" & .Rows.Count).End(xlUp).Row
 For Each Courant In .Range("S2:S" & Fin1)
    If Not Dico.exists(Courant.Value) Then
      Dico.Add Courant.Value, Courant.Value
      ComboBox2.AddItem Courant.Value
    End If
 Next Courant
'Les Véhicules
 Fin1 = .Range("C" & .Rows.Count).End(xlUp).Row
 Fin2 = .Range("F" & .Rows.Count).End(xlUp).Row
 Fin3 = .Range("I" & .Rows.Count).End(xlUp).Row
 Fin4 = .Range("L" & .Rows.Count).End(xlUp).Row
 For Each Courant In .Range("C2:C" & Fin1 & ",F2:F" & Fin2 & ",I2:I" & Fin3 & ",L2:L" & Fin4)
    If Not Dico.exists(Courant.Value) Then
      Dico.Add Courant.Value, Courant.Value
      ComboBox1.AddItem Courant.Value
    End If
 Next Courant
 
End With
End Sub
 

camarchepas

XLDnaute Barbatruc
Re : userform

Merveilleux,

voilà , reste le SAV au cas ou, lol.

Bon peut être qu'avec quelques semaines ou mois des choses apparaitront .

Enfin , le fait que tu puisses monter les corrections toi même c'est super, cela t'éviteras de me payer le déplacement , lol.

Bon , si une modif est dans un module , l'on peut remplacer l'ensemble du module, un jour peut être l'on aura besoin de faire comme ça ,

cela préserve les données qui devraient vite devenir conséquantes .

A bientot
 

mpesche

XLDnaute Occasionnel
Re : userform

Salut, j'ai un petit souci (logique, mais auquel on a pas pensé)
quand je vais dans filtre, peu importe le critere (n° véhicule, ou chauffeur ou date)
il me sort bien la liste
le probleme est que dans cette liste si l'on suis les critères il ne correspondent pas forcement entre l'ambulance, et le taxi /vsl
donc serait-il possible dans cette recherche, que le tableau soit diviser en plusieurs parti
- VSL
- TAXI
- AMBU (Nettoyage journalier)
- AMBU (desinfection)
si ceux ci est possible peux tu me le dire que je puisse t'envoyer le tableau pour travailler direct dessus

merci
 

mendigot

XLDnaute Occasionnel
Re : userform

Bonjour camarchepas, mpesche, le forum, le fil

Je me permet une petite intrusion sur le fil , car je viens d'essayer ce fichier et j'ai remarqué deux petites choses concernant le contrôle d’accès.

1: Si pour une raison ou une autre on ajoute un utilisateur avec le même mdp que l'admin : il se rajoute dans la liste des chauffeurs et non dans la partie admin cachée et il aura l’accès a toutes les feuilles !

2 : actuellement si un utilisateur lambda ( dans la liste) tape le mdp ( par erreur... on ne sait jamais) de l'admistrateur mais avec son nom a lui, il aura également accès a toutes les feuilles.

C'est, deux petites choses que j'ai remarqué en essayant ce fichier.

Bonne soirée a vous tous

Mendigot
 
Dernière édition:

camarchepas

XLDnaute Barbatruc
Re : userform

Bonsoir ,

@ mpeshe : J'ai pas compris pour le tableau, peux tu me repréciser se que tu veux ?

@ Bonne remarque M. Le Perceur de coffre fort

Pour le point 2 , il peut également appuyer sur le bouton administrateur sans être lui , et j'ai pas géré la webcam et la reconnaissance faciale . , as-tu imaginé comment éviter cela ?
si oui , quel serait le moyen d'identifier réelement la personne .

La solution premiére était de choisir la personne dans une liste déroulante , et j'avais pensé pour l'admin saisir un premier code dans la box utilisateur, mais le demandeur de l'appli voulait une reconnaissance simplement par le mot de passe . voilà voilà l'histoire .
Si tu est interessé , je peux modifier en conséquence , mais il faudrait mieux créer une autre discution.

Solution pour le point 1. remplacer la routine du bouton 3 par celle ci



Code:
Private Sub CommandButton3_Click()
Dim Trouve As Range
Dim Ligne As Long
With Sheets("Listes")
 Set Trouve = .Range("S2:S" & .Range("S" & .Rows.Count).End(xlUp).Row).Find(ComboBox1.Text, lookat:=xlWhole)
 If Not Trouve Is Nothing And ComboBox1.ListIndex = 0 Then MsgBox "Personne déjà existante": Exit Sub
 If Trouve Is Nothing And TextBox1.Text <> .Range("AB2") Then
 Ligne = .Range("S" & .Rows.Count).End(xlUp).Row + 1
 .Range("S" & Ligne) = ComboBox1.Text
 .Range("S" & Ligne).Offset(0, 1) = TextBox1.Text
 Tri "Listes", "S2:T", "S2", "Ascendant"
 Else
 If TextBox1.Text <> .Range("AB2") Then .Range("S" & Trouve.Row).Offset(0, 1) = TextBox1.Text
End If

End With
End Sub
 

Discussions similaires

Réponses
14
Affichages
639