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,
 

Fichiers joints

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
 

Fichiers joints

thebenoit59

XLDnaute Accro
Bonjour Bernie.
Bonjour bbb.

Le fichier transmis est en xlsx, sans ouvrir le fichier nous pouvons dire qu'il n'y a pas de formulaire. Ce type de fichier n'accepte pas les macros.

Il faut enregistrer le fichier soit en xls soit en xlsm.
 

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
 

Fichiers joints

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.
 

Fichiers joints

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
 

Burnator

XLDnaute Nouveau
Je crois que j'ai réussi d'intégrer le fichier et j'ai pu cocher la case dans "addin excel" ;)
je ne suis pas si nul que ça ;)

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
 

Fichiers joints

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:

Dranreb

XLDnaute Barbatruc
En résumé, comme je n'ai aucune idée de ce que représentent ces données, il faut me préciser pour qu'on se comprenne mieux quels sont :
1) — Les identifiants. C'est à dire les colonnes dont la combinaison de valeurs doit être unique dans la base et ne plus pouvoir être changée sur une ligne existante. Elles doivent être impérativement saisies pour ajout puis ultérieurement retrouvées pour modification dans des ComboBox.
2) — Les critères de recherches intéressants ne faisant pas partie de l'identification de la ligne, et qu'on doit donc pouvoir changer sur une ligne existante. Ils doivent être impérativement saisis ou choisis pour recherche dans des ComboBox. Mais ils nécessiteront un dispositif spécial (CheckBox, paire d'OptionButton, ToggleButton ou CommandButton+Label indiquant l'état actuel) pour changer le mode de fonctionnement (Search mode/Update mode) pour que leur modification soit possible.
3) — Les simples donnés associées à l'identification. Le plus souvent des TextBox. Toutefois ce peut à la rigueur aussi être toutes sortes d'autres contrôles pour diverses raisons pratiques particulières, y compris des ComboBox, dont on peut même alimenter la liste au moyen de la fonction SujetCBx de CBxL.

Là, à réexaminer votre exemple et reconsidérer votre poste #12, j'ai un peu l'impression, pour caricaturer, que vous avez mis des ComboBox là où il fallait des TextBox, et vice versa. Ou tout du moins que les ComboBox que vous avez prévues ne le sont que dans le cadre du cas 3, celui des simples données associées à l'identifiant, ce dernier n'ayant pas, quant à lui, ses ComboBox obligatoires.
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Bonjour.
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.
C'est un peu vague n'est-ce pas.
Si ça signifie que chacune des valeurs dans chaque colonne soit être unique on se demande pourquoi la propriété ShowDropButtonWhen des ComoBox n'est pas à 0—fmShowDropButtonWhenNever vu que le bouton fait apparaître une liste de valeurs qui existent déjà et seraient donc forcément en double si on en sélectionne une.
Si ça signifie que c'est la combinaison de toutes les valeurs doit être unique, chacun des éléments la composant pouvant appaître plusieurs fois dans la colonne, il faut des ComboBox partout pour que la vérification soit aisée à l'aide de l'objet ComboBoxLiées, puisqu'il communique directement le numéro de la ligne à son UserForm propriétaire quand celle ci existe.
Et si c'est la combinaison de certaines valeurs seulement qui doit être unique il faut préciser lesquelles.
 
Dernière édition:

Burnator

XLDnaute Nouveau
Un grand MERCI Dranreb, pour ton temps et tes réponses.

C'est super instructif ;) je regarde et reviens vers vous.

Cdlt,
Bernie
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Voilà une semaine de passée.
Toujours rien de nouveau ?
 

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas