XL 2013 transferer données formulaire vers excel

Burnator

XLDnaute Nouveau
Bonjour à tous,

Je reviens vers vous pour de l'aide. Il y a déjà eu des posts de ce genre et j'ai essayé en récupérant le code de le reproduire sur mon fichier et malheureusement beaucou de message d'erreur. pour rappel, niveau novice.

Mon problème, je sousaiterai à partir du fichier joint , obligé les gens à saisir au minimum toutes les information du formulaire et de pouvoir les enregistrer sur la ligne n+1 (1er ligne vide).
et que si quelqu'un tente de rentrer une valeur manuellement surtout sur les colonnes (E, G, N,AG, AH,AL)
un message de rappel s'affiche et oblige la personne à cliquersur le bouton "data entry" pour ouvrir le formulaire, une fois enregistré, il peut renseigner manuellement les autres colonnes.

j'aimerais également que, avant de faire sauvegarder qu'il ait un contrôle automatique qui permet de verifier ces ces valeurs ne sont pas déjà en doublon.

J'espère avoir été clair et je vous remercie Grandement de votre aide...vous m'avez déjà aidé sur un autre sujet, j'ai été agréablement surpris par la rapidité et surtout par l'efficaicté.

Je compte sur vous ;) MERCI

Bernie,
 

Pièces jointes

  • Formulaire client.xlsx
    234 KB · Affichages: 43

bbb38

XLDnaute Accro
Bonjour Bernie, le forum,
Sauf absence de ma part, je ne trouve pas le formulaire, sur ton fichier. En cliquant sur le bouton de commande « Data Entry », un message d’erreur apparaît. En poursuivant, une boîte de dialogue indique les noms de 2 fichiers :
FAS-programs-list from the migration run for TIGER-V1.1.xls (type : fichier distant – Etat : Inconnu),
TIGER.Migration-ULS-Mapping-1-TESTmacro.xlsx(type : Feuille de calcul – Erreur : source introuvable).
Doit-on réaliser le formulaire, sur le fichier « Formulaire client.xlsx
Cordialement,
Bernard
 

Burnator

XLDnaute Nouveau
Bonjour Bernard,

Tout d'abord merci de t'intéresser à mon sujet. effectivement , il manque le formulaire et le fichier renvoie à un line exterieur.
j'ai fait un peu de ménage.
le formulaire a été ajouté.
Dans l'état, le bouton n'ouvre pas le formaulaire. Je souhaiterais qu'il ouvre le formulaire et oblige les personnes à renseigner tous les champs obligatoires données dans le formulaire comme cité ci-dessus.

Merci encore pour ton temps et ton aide ;)
Bernie
 

Pièces jointes

  • Formulaire client.xlsx
    232.3 KB · Affichages: 26

Burnator

XLDnaute Nouveau
Hello Bernard/thebenoit,

Je sais que dans mon fichier il n'y a aucune ligne de commande. C'est la 2eme fois que je demande de l'aide sur le site.
J'apprends tout doucement en relisant vos ligne de code.

Merci encore de votre temps et de votre aide.

Bernie
 

bbb38

XLDnaute Accro
Bonjour Bernie, thebenoit59, le forum,
Ton formulaire comporte des ComboBox. Dans ce cas, il est préférable d’utiliser une liste figurant dans une autre feuille. L’utilisateur pourra choisir un élément dans la liste, ou indiquer un libellé dans la zone d’entrée.
Si tu souhaites, j’effectuerai un exemple (avec des données fictives), sur la prochaine version de ton fichier.
Toutes les colonnes de ton fichier ne sont pas mentionnées dans le formulaire. La saisie des données s’effectuera, donc, en plusieurs fois ?
Cordialement,
Bernard
 

Pièces jointes

  • Formulaire client v1.xlsm
    240.2 KB · Affichages: 37

Dranreb

XLDnaute Barbatruc
Bonsoir.
Vous pourriez avoir intérêt à utiliser un objet ComboBoxLiées.
Il se charge tout seul d'établir des listes classées, sans doublon et pertinentes pour les ComboBox dont on lui confie la charge, gère les choix, et peut communiquer à l'UserForm via une procédure évènement la liste des numéros des lignes en correspondance dans la base.
Le classeur joint contient la définition de l'objet. Il est à installer comme complément xlam. La référence à son projet VBA est à cocher dans le projet du classeur d'application.
 

Pièces jointes

  • CBxL.xlsm
    117.9 KB · Affichages: 57

Burnator

XLDnaute Nouveau
MERCI !!! Messieurs,

Pour votre expertise et votre temps.

@Bernard: j'attends avec impatience la version avec données fictive.
@Dranreb: Pourriez vous m'expliquez comment intégrer le CBxL dans le fichier source car j'ai l'impression de mal me prendre car rien ne se passé....désolé de mon niveau ;)

Encore une fois merci pour votre aide.

Cordialement,
Bernie
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Bien. Cocher le complément "ComboBox Liées" du coté Excel est un moyen commode de l'ouvrir si son projet ne figure plus du coté VBA. Ensuite il faut aller dans Outils, Options, Références… et cocher CBxL dans la liste des références disponibles pour que tout ce qui est Public dans le projet CBxL soit connu du VBAProject de votre classeur d'application.
Une fois qu'il est en référence, plus besoin de le garder coché comme complément de coté Excel. Il sera automatiquement ouvert quand vous ouvrirez votre classeur.
 

Burnator

XLDnaute Nouveau
Bonjour Messieurs,
Je reviens vers vous je crois que je suis vraiment nul.
Je n'arrive meme pas à aller chercher les listes de la feuille 2 pour mes combobox du userform.
et meme sauvegarder sur la première ligne vide ou quitter.

ET honnêtement je n'ai pas trsè bien compris l'aide CBxL.

MErci de votre aide
Bernie
 

Pièces jointes

  • Copy of Formulaire client v1.xlsm
    237.4 KB · Affichages: 48

Dranreb

XLDnaute Barbatruc
Bonjour.
J'espère que c'est une base de données et non pas des listes indépendantes, au moins !
Si oui, il n'y a rien d'autre à faire du coté des ComboBox que ça :
VB:
Option Explicit
Private WithEvents CL As ComboBoxLiées

Private Sub UserForm_Initialize()
Set CL = Création.ComboBoxLiées
CL.Plage Sheet1.Rows(7)
CL.Add ComboBox5, 5
CL.Add ComboBox4, 8
CL.Add ComboBox3, 14
CL.Add ComboBox2, 21
CL.Add ComboBox1, 38
CL.CouleurSympa
CL.Actualiser
End Sub
Et ça a marché du premier coup. Opérationnel tout de suite !
Il ne reste qu'à sélectionner CL dans la liste de gauche qui surmonte la fenêtre de code et dans celle de droite d'autres évènements qui vous intéressent.
 

Dranreb

XLDnaute Barbatruc
Je me suis trompé pour la ComboBox5, c'est la colonne 7 pas 5. Je déteste ces noms. Ne pourriez vous les appeler CBxProgName, CBxState, CBxLnkOEM, CBxOrgani et CBxPrivPub, et les TextBox TBxProjName et TBxColabSpc pour qu'on s'y retrouve plus facilement ?
En attendant j'ai laissé les noms et ajouté de quoi garnir les TextBox :
VB:
Option Explicit
Private WithEvents CL As ComboBoxLiées, LCou As Long, TV()

Private Sub UserForm_Initialize()
Set CL = Création.ComboBoxLiées
CL.Plage Sheet1.[A7:AL7], True
CL.Add ComboBox5, 7
CL.Add ComboBox4, 8
CL.Add ComboBox3, 14
CL.Add ComboBox2, 21
CL.Add ComboBox1, 38
CL.CouleurSympa
CL.Actualiser
End Sub

Private Sub CL_Change(ByVal Complet As Boolean, ByVal NbrLgn As Long)
If NbrLgn = 1 Then Exit Sub
LCou = 0: ReDim TV(1 To 1, 1 To 38)
GarnirAutresChamps '(Les vider ici)
End Sub

Private Sub CL_Résultat(Lignes() As Long)
If UBound(Lignes) > 1 Then Exit Sub
LCou = Lignes(1): TV = CL.PlgTablo.Rows(LCou).Value
GarnirAutresChamps
End Sub

Private Sub GarnirAutresChamps()
TextBox1.Text = TV(1, 5)
TextBox2.Text = TV(1, 34)
End Sub
 

Dranreb

XLDnaute Barbatruc
Remarque: Je suis quand même un peu étonné que la donnée "Project name" ne participe pas à l'identification de la ligne. Si au contraire parmi les ComboBox gérées par l'objet ComboBoxLiées il y en a certaines qui ne doivent pas participer à l'identification de la ligne, il faut me le signaler. Il y a moyen de s'arranger avec l'objet…
Si, en plus de ne pas y participer, leur recherche dans la base ne présente aucun intérêt, il ne faut pas en confier la charge à l'objet ComboBoxLiées. Il reste néanmoins encore la possibilité de leur fabriquer des listes classées sans doublon à partir de tout ce qui existe dans une certaine colonne de la base au moyen de la la fonction SujetCBx de CBxL.
Par exemple, supposons qu'on ne veuille pas que la ComboBox3 soit gérée par l'objet parce que ce n'est ni un élément d'identification de la ligne ni un critère de recherche intéressant, mais on aimerait bien quand même que sa liste soit comme il l'aurait proposée quand rien n'est encore choisi.
On fait comme ça :
VB:
Private Sub UserForm_Initialize()
Set CL = Création.ComboBoxLiées
CBxL.TexteVide = "(nothing)"
CL.Plage Sheet1.[A7:AL7], True
CL.Add ComboBox5, 7
CL.Add ComboBox4, 8
'CL.Add ComboBox3, 14  instruction désactivée
CL.Add ComboBox2, 21
CL.Add ComboBox1, 38
CL.CouleurSympa
CL.Actualiser
ComboBox3.List = SujetCBx(CL.Plgtablo.Columns(14))(0)
End Sub
 
Dernière édition:

Discussions similaires

M
Réponses
9
Affichages
449
Maikales
M