Userform excel

Résolu/Fermé
Gourbi - 10 août 2016 à 19:20
 gourbi - 24 août 2016 à 15:09
Bonjour,
J'ai de grande lacune en VBA, je cherche à mettre en place un fichier excel pour la gestion de demande de câblage avec une saisie depuis un formulaire.
Le but à travers ce formulaire, une foi toutes les cellules renseignées on doit retrouver les données dans la feuille "BD" (base de données).

Les listes déroulantes sont alimentées par la feuille "Param", se sont des données fixes.

Les CheckBox (case à cocher) doivent s'enregistrer dans le fichier "BD" dans les cellules appropriées.

Les boutons
- Nouvelle demande
- Enregistrer un nouveau dossier
- Sélecteur de dossier
- Modifier un dossier non terminé
- Recherche multi critères
- Imprimer la feuille
- Quitter "fermeture du formulaire"

La partie modélisation formulaire ne pose pas de problème, mais le VBA par contre elle un véritable enfer quand on ne maitrise pas.

Si une personne pouvait m'aider cela serait merveilleux, par avance merci.



A voir également:

10 réponses

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
11 août 2016 à 08:32
Bonjour,

Avant toutes choses, nous avons besoin du classeur avec l'UserForm tel que tu l'as conçu, sans données confidentielles...

Pour joindre un fichier sur les forums de ccm il faut :
> se rendre sur le site : https://www.cjoint.com/
> cliquer sur "Parcourir"
> rechercher le fichier
> cliquer sur "Ouvrir"
> cliquer sur "Créer le lien Cjoint"
> copier le lien
> revenir ici le coller dans une réponse

0
Bonjour,
Merci pour la réponse, je met le lien du fichier:
http://www.cjoint.com/c/FHlhzaWyxrH
Merci pour votre aide
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
11 août 2016 à 09:39
On va y aller par étapes.
Commençons par le remplissage des listes déroulantes.
Pour les listes Site et Sociétés pas de souci, elles sont remplies des données de la feuille Param, col A et C.

Mais comment remplir les autres listes?
Chef de projet, validation, SFT, GDP, Etat????
0
Bonjour pijaku,

Merci pour ta réponse, les explications:
CDP dans le formulaire donne le choix de sélection du Chef de Projet (CDP) de la cellule G de la feuille Param.
Validation = choix "Oui ou Non"
Société = choix " presta1, presta2, presta3, presta4"
SFT = choix "Ok ou Ko"
Etat = choix "Oui ou Non"
GDP = choix "Oui ou Non"
Etat = Choix "En cours, Reporté, Terminé
0
Petit oubli, Etat = choix "Oui ou Non" (supprimer)
Priorité = (1 urgent, 2 Assez urgent, 3 normal)
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
11 août 2016 à 10:48
Tous ses "paramètres" servant à remplir tes combobox doivent être mis dans la feuille Param.
Je te laisse faire cette partie, pendant ce temps je fais le code de remplissage.
Envoie moi un nouveau classeur modifié.
0
le fichier modifié est ici:
http://www.cjoint.com/c/FHljOOGpEgH
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
11 août 2016 à 11:56
Ci-joint ton fichier : https://www.cjoint.com/c/FHljTij5Z3E

Tu peux continuer le code dans la procédure Userform_Initialize afin de compléter tous tes combobox, je l'ai fait pour les trois premiers.
On continue dès que tu m'auras retourné le fichier dûment complété.
Si tu as une question sur le remplissage, n'hésite pas.
0
pijaku, voila le fichier avec les modif demandés
http://www.cjoint.com/c/FHlnfPVvZCM
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
11 août 2016 à 15:58
J'ai un peu avancé, le bouton nouveau permet d'effacer tout, le bouton quitter de quitter...

Maintenant à toi.
Pour charger les données de la feuille BD dans l'userform, je t'ai fait une procédure : Private Sub Charge_Donnees()
Tu la trouveras dans le code de l'userform, à toi de la compléter.
https://www.cjoint.com/c/FHln5CR47VE

Ne te préoccupe pas trop des fonctions dans le module1. Elles servent à traiter des données en mémoire (récolter les données, filtrer, etc)
0
Merci, je vais passer le week end pour essayer d'avancer tout en essayant de comprendre.
Merci pijaku pour ta précieuse aide
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743 > Gourbi
11 août 2016 à 16:29
Alors à mardi, mais avant deux choses :
> dans la feuil BD, les infos doivent être rigoureusement identiques à celles que l'on trouve feuil Param

> je te livre de suite le code permettant de "voyager" d'un dossier à l'autre en cliquant sur le scrollbar :
Private Sub ScrollBar1_Change()
    On Error GoTo PasDeDonnees
    If ScrollBar1.Value + 1 > UBound(DonneesFiltrees) Then 
        ScrollBar1.Value = i: Exit Sub
    End If
    i = ScrollBar1.Value + 1
    Charge_Donnees
    Exit Sub
PasDeDonnees:
    ScrollBar1.Value = 0
End Sub

Code à intégrer à l'userform, bien entendu.

Mardi renvoie moi ton fichier modifié.
Bon weekend
0
Bonjour pijaku,
J'ai cru être déjà en week end, le fichier est complété et joint.
http://www.cjoint.com/c/FHmgLuy43XH

Est-il possible de mettre
- la valeur monétaire dans la cellule O (montant)?
Masque de saisie date aux cellules H, M, N et X?
exemple:
Private Sub TextBox1_Change()
'exemple pour format xx/xx/xxxx
Dim Valeur As Byte
TextBox1.MaxLength = 10 'nb caracteres maxi dans textbox

Valeur = Len(TextBox1)
If Valeur = 2 Or Valeur = 5 Then TextBox1 = TextBox1 & "/"
End Sub

et la vérif:
Private Sub CommandButton1_Click()
If Not IsDate(TextBox1.Value) Then
MsgBox "Format incorrect"
TextBox1 = ""
Exit Sub
Else
MsgBox "Format correct"
'...la suite de la procedure
End If
End Sub
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743 > Gourbi
12 août 2016 à 08:58
Bonjour,

1- utilise les balises code pour mettre du code sur CCM.
NB: **** Attention ****
Merci de bien vouloir utiliser la coloration syntaxique (les balises de code) lorsque tu postes du code sur le forum.
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code


2- Je suis en train d'écrire un tutoriel sur le remplissage d'un UserForm à partir de feuilles Excel. Me permets tu d'utiliser ton fichier?

3- Oui, il est possible d'utiliser des masques de saisie pour les dates. Mais pas ceux que tu as trouvé sur Développez.com... Il y a bien mieux!

4- je n'ai pas compris le la valeur monétaire dans la cellule O (montant)?
Dans les cellules, tu utilises le format que tu souhaites... Après si tu me parles de textbox, c'est également possible, avec un petit ajout.
Dis moi

5- je regarde ton fichier et reviens avec la suite, lorsque tu auras répondu à mes 4 points...
0
Désolé pour la balise, pas de problème pour utiliser mon fichier
Format monétaire dans le textBox12 le montant esavec le symbole €
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
12 août 2016 à 09:27
Voici ton fichier avec les formats de date :
https://www.cjoint.com/c/FHmhyjSerHE

Je t'ai ajouté deux lignes dans la BD. Si tu peux en ajouter encore une vingtaine, avec des sites identiques, cela permettra de mieux tester.

Fait un test en sélectionnant Boulogne, tu auras donc deux dossiers. Tu peux les visualiser en cliquant sur les boutons de ta scrollbar.
Tu peux également tester la saisie d'une date dans le champs date de mail du 1er dossier boulogne.

Fais des tests, en essaie, dans ce textbox, avant d'y saisir quoique ce soit, d'appuyer sur la barre d'espace.....

Enjoy it!
ps : c'est tout de même beaucoup mieux que celui de DVP...
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
12 août 2016 à 09:46
Voici ton fichier avec saisie numérique, monétaire et séparateur de milliers du TextBox12 :
https://www.cjoint.com/c/FHmhRRjywuE


Pour la suite, on va passer maintenant aux boutons modifier et enregistrer.
Perso, je ne vois pas de différence entre les 2 et n'en mettrais qu'un seul, enregistrer. (modifier étant l'enregistrement d'une modification).

Qu'en penses tu?

Si tu es ok, il faudrait que tu me dises si les numéros de devis (colonne L) sont unique. Différents sur chaque ligne ou il peut y avoir des doublons???
0
Encore merci pour ton aide précieuse

Pour la colonne L (Demande d'Achat) n'est pas identique mais peut être répété x fois en fonction des projets, il peut y avoir des doublons.

Pour les bouttons
- Modifer c'est pour reprendre un enregistrement non terminé
- Enregistrer (on peux le supprimer puisque les données seront dans BD)
- Chercher (un site, un demandeur, un devis, une date, un chef de projet)
- Exporter ( on peux le supprimer puisque les données seront dans BD)
- Imprimer (impression de la feuille)

Comme toutes les données seront dans la feuille BD, après en créant des filtres je pourrais retrouver mes petits.
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743 > Gourbi
12 août 2016 à 12:11
Pour la colonne L (Demande d'Achat) n'est pas identique mais peut être répété x fois en fonction des projets, il peut y avoir des doublons.
- Modifer c'est pour reprendre un enregistrement non terminé

Toute la problématique est là.
Comment peut-on différencier (en automatique, informatiquement) deux dossiers donc deux lignes de ta BD ?

Perso, j'ajouterai une colonne n° à ta BD en colonne Z par exemple...
0
Oui pourquoi pas ou alors il manque une collone "Clos", mais normalment tant que la fiche est different de "Terminer" on peut la rappeler pour la modifier.
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743 > Gourbi
12 août 2016 à 13:43
J'ajoute une colonne.
Voici le fichier sur lequel j'ai un peu avancé :
https://www.cjoint.com/c/FHmlRi8PWXE

Dans le prochain, tu auras la recherche (par tous les critères possibles et imaginables)
0
Je viens de tester supper travail, franchement merci il ne me restera qu' a interpréter tes codes depuis le site, pour enrichire mon cerveau.
Petite question, lorsque l'on ouvre le formulaire,tu ne peux accèder aux feuilles tu es obliger de le fermer pour y accèder.
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
12 août 2016 à 14:23
Allez hop hop hop! On enchaîne...
Voici le Gourbi V2 :
https://www.cjoint.com/c/FHmmwGS7RpE

Tu as toutes tes fonctionnalités, sauf Imprimer...
Tu veux imprimer qu'elle feuille, quoi????
0
Impression de la feuille.
Je viens de faire le test sur la recherche , il me trouve une erreure
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743 > Gourbi
12 août 2016 à 14:45
Maintenant, nous entrons en phase dite de débugage.
Il faut être plus précis que cela.
il me trouve une erreur
Qu'elle erreur?
Impression de la feuille. Laquelle???
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
12 août 2016 à 14:54
J'ai pu corriger trois erreurs...
Effectivement, la recherche remontait 2 erreurs. Si on cherche une date ou un chiffre.
C'est corrigé.
J'ai également viré le séparateur de milliers qui foutait le boxon (montant)...

Il faudrait que tu complètes la fonction : Private Function VerifSaisie() As Boolean
dans le userform...

https://www.cjoint.com/c/FHmm1qrZrqE
0
Lors de la création d'un enregistrement, il se copie dans BD à la première ligne et ne lui attribu pas de N° dossier
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743 > Gourbi
12 août 2016 à 15:01
Quand la BD est vide ou tout le temps???
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
12 août 2016 à 15:38
Voici avec un abandon possible par l'utilisateur (clic non sur le message)

https://www.cjoint.com/c/FHmnLFuEtsE

Pas la peine d'ajouter If Labelnumero = "" Then Exit Function à la fonction Private Function VerifSaisie() je l'ai fait dans le bouton d'enregistrement...

Teste....
0
Splendide la fonction "Recherche", tout foncfionnent à merveil, la partie N° Dossier, les derniers enregistrement se font sur 5 caractères.encore merci
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743 > Gourbi
12 août 2016 à 16:02
ne dis pas encore merci, teste encore en réel.....

Bon courage pour la suite.
0
Un petit soucis lorsque je rempli le formulaire, avec les données que j'ai, je suis dans l'obligation de replir toutes les cellules si non j'ai le message incomplet, alors que je dois attendre la fin des travaux pour pouvoir renseigner certains chapms.
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743 > Gourbi
12 août 2016 à 16:14
Tout se passe dans la fonction que je t'ai dit d'adapter :
    Private Function VerifSaisie() As Boolean
        VerifSaisie = False
        'A compléter de tous les champs obligatoires
        If ComboBox1.Value = "" Then Exit Function
        If TextBox1.Value = "" Then Exit Function
        If ComboBox8.Value = "" Then Exit Function
        If ComboBox2.Value = "" Then Exit Function
        'ajoute ici tous les champs que tu souhaites voir "non vide" pour enregistrer
        'cette ligne doit être la dernière de la fonction :
        VerifSaisie = True
    End Function

Tu ne doit y trouver que les champs obligatoire, que je ne connais pas!
0
Ok Merci, maintenant j'ai tout le week end pour réaliser mes tests. Encore merci pour l'aide que tu m'a apporté car je ne savait pas par quel bout commencé.
Mille merci, bon week End
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
16 août 2016 à 10:39
Salut,

Voici ton fichier corrigé :
https://www.cjoint.com/c/FHqiMPhWexE
il y avait bien une erreur dans l'enregistrement quand aucun montant n'est saisi...
Corrigé.
Reste un problème avec les checkbox qui enregistrent systématiquement non dans la BD lors d'une nouvelle demande...
Teste et dis moi
0
Salut,
Je n'ai pas eu le temps de tester ce matin (trop de travail).
Ça fonctionne à merveille je viens de faire plusieurs essaies, peut-on apporter une petite modification, la suppression de "Réparation et Création"?

En tous les cas chapeau pour la qualité et ta grande disponibilité
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743 > gourbi
16 août 2016 à 15:39
Normalement c'est bon :
https://www.cjoint.com/c/FHqnNxayN7E
A tester...
0
gourbi > pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024
16 août 2016 à 16:12
pijaku,

marche trés bien, merci mon ami. Il ne me restera qu'a faire un menu exportation avec une sélection des "Terminé, En cours et Reporté" puis puis la gestion budgétaire "FG et CAB2"., quand je recevrai mon livre VBA.

Merci mon ami pour ta générosité et ton aide.
0
Salut pijaku,

Je viens de faire le test je rencontre un petit soucis: Après avoir effacé toutes les fiches pour y inserer les autentiques, lorsque je créé une demande (nouveau) le numéro d'enregistrement ne change pas et l'enregistrement se fait sur la même ligne.
J'ai ajouté DSI - 091 - SE dans param "site".
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743 > gourbi
17 août 2016 à 14:57
Salut,

Pour que cela fonctionne, tu dois avoir, en dernière colonne (X de mémoire) une liste des numéros des lignes que tu dois saisir sur 6 chiffres. Cette colonne doit être au format texte.

Pour cela :
1- sélectionne toute la colonne X en cliquant sur l'entête
2- clic droit dans une des cellules sélectionnées
3- format de cellule
4- choisir "texte" puis valider
5- en X2 saisir : 000001
6- en X3 saisir : 000002

Si la manipulation est bien faite, tu dois voir apparaître en X2 et X3 le petit commentaire vert indiquant une erreur...
Ne te reste qu'à prolonger vers le bas de ta colonne.

Si tu as encore un souci, envoie moi ton fichier.
0