XL 2019 Saisie Formulaire par ComboBox, mais pas que !

Choco2x

XLDnaute Occasionnel
Bonjour à toutes et à tous !


Je n’ai pas trouvé de solution à mes besoins en cherchant dans les sujets, je me permets donc de venir vers vous.

J’ai un formulaire qui doit remplir un tableau.

Sur une autre page (Feuille 3), j’ai une « base de données » composée de deux tableaux (1 et 2) à remplir à l’aide de ce formulaire.

De même, j’aimerais que mes combobox me permettent de voir ce qui a déjà été saisi, et que si je saisis un nouveau mot il entre de ce fait dans la base de données.

Pour le moment ça ne fonctionne que si je n’ai qu’un champ rempli, sur les 3 qui m’intéressent (deux champs ont un même tableau en commun).

Sachant qu’il y aura forcément des doublons, j’ai essayé d’intégrer une macro qui les efface. Et pour terminer j’aimerais que les tableaux de ma base de données soit en ordre alphabétique, afin de mieux profiter des menus déroulants en découlant.
Tout fonctionnait jusqu'à ce que j'essaye de remplir mes champs d'après les combobox, car avant j'utilisais des textbox, mais alors je ne pouvais pas voir si ce que j'allais taper était déjà dans la base de données ou pas...


Voici dont le résultat de mes galères depuis 15 jours…

Ne critiquez pas mes formules svp, je me débrouille comme je peux, j’ai utilisé un ensemble de formules trouvées sur internet et de macros recopiées… ;)

Allez, c'est parti (je mets tout, pour ne pas passer à côté du problème !) :



Private Sub btnAjout_Click()


‘Quand je valide mon formulaire, il rempli un premier tableau journalier.

Feuil1.Activate

Range("A2:K2").Select

Selection.ListObject.ListRows.Add (1)

Range("A3:K3").Select

Selection.Copy

Range("A4").Select

Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _

SkipBlanks:=False, Transpose:=False

Application.CutCopyMode = False

Range("A2").Select

Selection.Offset(1, 0).Select

ActiveCell = txtNom.Value

ActiveCell.Offset(0, 1).Value = txtPrénom

ActiveCell.Offset(0, 3).Value = txtDateNaiss

ActiveCell.Offset(0, 4).Value = txtDateTps

ActiveCell.Offset(0, 6).Value = cboHeureDép

ActiveCell.Offset(0, 7).Value = cboServiceDép

ActiveCell.Offset(0, 8).Value = cboHeureArr

ActiveCell.Offset(0, 9).Value = cboServiceArr

ActiveCell.Offset(0, 10).Value = cboMotif

ActiveCell.Offset(0, 11).Value = txtComment



If OptbtnMme.Value = True Then

Range("C3").Value = "Femme"

End If

If OptbtnM.Value = True Then

Range("C3").Value = "Homme"

End If



If OptbtnAmb.Value = True Then

Range("F3").Value = "Ambulance"

End If

If OptbtnVSL.Value = True Then

Range("F3").Value = "VSL"

End If





Feuil3.Activate

Range("A1").Select

Selection.End(xlDown).Select 'On se positionne sur la dernière ligne

Selection.Offset(1, 0).Select 'On se décale d'une ligne vers le bas

ActiveCell = Me.cboServiceArr.Value



‘********* CA NE FONCTIONNE QUE JUSQUE LA, si je valide ce qui suit ça ferme Excel !*************



Feuil3.Activate

Range("B1").Select

Selection.End(xlDown).Select 'On se positionne sur la dernière ligne

Selection.Offset(1, 0).Select 'On se décale d'une ligne vers le bas

ActiveCell = Me.cboMotif.Value



Feuil3.Activate

Range("B1").Select

Selection.End(xlDown).Select 'On se positionne sur la dernière ligne

Selection.Offset(1, 0).Select 'On se décale d'une ligne vers le bas

ActiveCell = Me.cboServiceDép.Value



'Trie les tableaux



Sheets("Base de données").Select

Range("Tableau1[Etablissements]").Select

ActiveWorkbook.Worksheets("Base de données").ListObjects("Tableau1").Sort. _

SortFields.Clear

ActiveWorkbook.Worksheets("Base de données").ListObjects("Tableau1").Sort. _

SortFields.Add Key:=Range("A2"), SortOn:=xlSortOnValues, Order:= _

xlAscending, DataOption:=xlSortNormal

With ActiveWorkbook.Worksheets("Base de données").ListObjects("Tableau1").Sort

.Header = xlYes

.MatchCase = False

.Orientation = xlTopToBottom

.SortMethod = xlPinYin

.Apply

End With

Range("Tableau2[Services]").Select

ActiveWorkbook.Worksheets("Base de données").ListObjects("Tableau2").Sort. _

SortFields.Clear

ActiveWorkbook.Worksheets("Base de données").ListObjects("Tableau2").Sort. _

SortFields.Add Key:=Range("B2"), SortOn:=xlSortOnValues, Order:= _

xlAscending, DataOption:=xlSortNormal

With ActiveWorkbook.Worksheets("Base de données").ListObjects("Tableau2").Sort

.Header = xlYes

.MatchCase = False

.Orientation = xlTopToBottom

.SortMethod = xlPinYin

.Apply

End With



'***********************************************

'Enlève les doublons



Feuil3.Activate

Range("Tableau1[Etablissements]").Select

ActiveSheet.Range("Tableau1[Etablissements]").RemoveDuplicates Columns:=1, Header:= _

xlYes

Range("Tableau2[Services]").Select

ActiveSheet.Range("Tableau2[Services]").RemoveDuplicates Columns:=1, Header:= _

xlYes

Range("A6").Select



**************************la suite fonctionne*********************



OptbtnMme = ""

OptbtnM = ""

OptbtnAmb = ""

OptbtnVSL = ""

txtNom = ""

txtPrénom = ""

cboSexe = ""

txtDateNaiss = ""

txtDateTps = ""

CboModeTps = ""

cboHeureDép = ""

cboServiceDép = ""

cboHeureArr = ""

cboServiceArr = ""

cboMotif = ""

txtComment = ""



Sheets("Commandes").Select

Range("Tableau10[NOM]").Select



End Sub



‘*********************************et voilà !!*****************************





Mille remerciements par avance à qui pourra m’aider !
 

Choco2x

XLDnaute Occasionnel
j'ai bien pensé en faire un seul, pour établissement et service proposés dans un menu déroulant multi colonnes, mais je ne me suis pas encore penché sur ces options, je voudrais déjà que ce que je veux faire fonctionne, car je dois leur proposer une première version pour vendredi. Sans quoi je resterai avec une autre version, faite à partir de deux formulaires distinct qui fonctionnent très bien, celui pour alimenter la base de données et celui pour passer commande...
Mais ça aurait été tellement plus simple... tout en restant accessible à ma compréhension, afin que je puisse le modifier si besoin.
Le code proposé plus haut est bluffant de simplicité, en comparaison des 50 lignes que j'utilisais pour saisir, trier, et enlever les doublons !!! Malheureusement, je n'arrive à le faire fonctionner que pour une seule ComboBox, ça plante dés que j'essaye de le faire fonctionner sur plusieurs...
 

Dranreb

XLDnaute Barbatruc
Je ne sais pas, mais lorsqu'on modifie quelque chose dans une colonne adjacente à un ListObject il considère normalement qu'il y a lieu de l'y intégrer. Serait-ce la source de votre problème ? C'est pour cela que je vous conseillais de les séparer d'une colonne vide si vous n'envisagez pas de les fusionner.
 

Choco2x

XLDnaute Occasionnel
Ca m'ennuie de ne rien comprendre, du coup je ne pourrai pas la changer si besoin...

Je découvre tant de possibilités...

Quelle référence ?
 

Pièces jointes

  • Commande transports hôpital 6.0 Etab Arrivée OK avec CLsCAs pour XLD.xlsm
    64.8 KB · Affichages: 8

Choco2x

XLDnaute Occasionnel
Serai-je apte, à terme, d'intégrer à la base de donnée, de la même manière, les différents champs du formulaire ?
S'il suffit de faire des copier/coller à la suite dans le code, je devrais y arriver, mais je ne sais pas pourquoi, je commence à douter... 🤣 🤣 🤣
 

Choco2x

XLDnaute Occasionnel
Zut mon message s'est effacé et mon fichier n'est pas parti, désolé !
Si à terme je veux faire en sorte que les champs Nom / Prénom / Date de naissance du formulaire soient intégrés à la base de donnée, suffira-t-il que je fasse des copier/coller dans le code ?
Merci pour tout en tous cas !!
 

Pièces jointes

  • Commande transports hôpital 6.0 Etab Arrivée OK avec CLsCAs pour XLD.xlsm
    64.8 KB · Affichages: 2

Choco2x

XLDnaute Occasionnel
JM27 > c'est exactement çà ! Sauf qu'en plus je dois les mettre dans l'ordre alphabétique et éviter ou supprimer les doublons...

J'avais essayé d'intégrer un calendrier uniquement pour la date du transport, moi aussi, mais sans succès...
En tout cas fichier à décortiquer à tête reposée, il semble contenir tout ce qu'il me faut, reste à intégrer les codes dans le mien.

Merci beaucoup !
 

JM27

XLDnaute Barbatruc
Bonjour
Les doublons : de quoi ??,
Si c'est des doublons service ou établissement , il n'y en aura pas !
Ordre alphabétique noms : ok
Ordre alphabétique service : ok
Ordre alphabétique établissement : ok
Regarde particulièrement les propriété tag des objets(ce sont elles qui gère le système)
Je pense qu'il faut utiliser mon fichier car tu vas avoir beaucoup de pb pour adapter le tien , mais c'est toi qui vois!!


Ci joint le fichier
 

Pièces jointes

  • Transport Hopital.xlsm
    106 KB · Affichages: 3

Choco2x

XLDnaute Occasionnel
Les doublons des services, car eux aussi je voudrais les mémoriser pour que les infirmières n'aient pas à les taper à chaque fois, car souvent les patients ne changent pas de service entre deux transports demandés. Je vais sûrement faire en sort de les intégrer à la feuille que tu as appelé "données client"...
 

Choco2x

XLDnaute Occasionnel
"Je pense qu'il faut utiliser mon fichier car tu vas avoir beaucoup de pb pour adapter le tien , mais c'est toi qui vois!! "
Si tu m'y autorises, avec plaisir ! Ton formulaire est plus beau et plus fonctionnel que le mien, en plus.

Je vais quand même décortiquer pour comprendre le plus de code possible, je n'ai pas envie d'être un assisté passif, même si sur ce coup-là tu as fait tout le boulot.
En plus c'est exactement ce qu'il me faut !...

Peut-être pas de suite (je suis au boulot ;)), mais très vite !

Merci encore !!
 

JM27

XLDnaute Barbatruc
Une petite évolution

nota : je ne comprends pas tes doublons de service
Peut être veux u affecter un nom de patient à un service ?( pas clair pour moi , mais je ne connais pas ton mode de fonctionnement)
donnes des explications , merci
Pour l'utilisation , a partir du moment ou il est sur le site tu en fais ce que tu veux , en préservant le nom de l'auteur.
Comme tu as l'air de t'accrocher , je suis à ta disposition pour expliquer mon code et te le commenter.

Nota : je vais t'intégrer une saisie intuitive des noms
 

Pièces jointes

  • Transport Hopital.xlsm
    95.7 KB · Affichages: 3

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16