J'ai trouvé beaucoup de réponses concernant ce que je cherche, mais chaque fois soit je n'ai pas réussi à l'adapter, soit ça ne correspondait pas à mes besoins...
Précision : je suis d'un niveau très faible en VBA, si je suis déjà allé aussi loin c'est uniquement grâce à votre aide (surtout JM27 ).
J'ai deux problèmes :
- J'ai un formulaire avec des CheckBox, et quand je coche les cases pour les retrouver dans la feuille "Commande", les résultats vont toujours sur la ligne 3
, remplaçant chaque fois le résultat précédent, au lieu d'aller juste en dessous, sur la ligne correspondant à la nouvelle entrée du formulaire.
- Ensuite, mais c'est plus optionnel, je n'arrive pas à remplacer les ComboBoxCivilité et ComboTps par des OptionButon, tout en résupérant les résultats dans la feuille "Commande" pour les deux, et dans la feuille "BD Patients" pour la civilité.
La userform est en vrac, je sais, mais j'ai changé si souvent que j'attends à présent que tout fonctionne pour la mettre en forme...
Quelqu'un pourrait-il m'aider ?...
Merci d'avance...
Pièces jointes
Transport Hopital 8.6 OK avant tentative BR pour XLD.xlsm
si tu as des .Tag du Genre 1-1, 1-2, 1-3
à quoi ca correspond ces 1-1, 1-2, 1-3 ?
je n'ai as encore regardé tout le Code de ton Fichier Lol
Oupsssss !
Robert on s'est croisé excuse , je te laisse gérer Lol
jean marie
J'ai juste exploré différentes pistes, sans pour autant tout comprendre...
Robert > tu as raison , mais là je suis presque au bout de ma démarche, alors tant qu'à faire...
Je n'ai plus qu'un petit soucis, à ma connaissance : à présent j'ai des "vrai" et "faux" en résultat de mes OptionButton...
Le problème est que le code initial est très complexe au profit du visuel et au détriment de l'efficacité. C'est bien joli ces contrôles qui changent de couleur mais ça crée des codes à rallonge. Je ne comprends pas pourquoi les modules de classe n'ont pas été plus utilisés que les propriétés Tag "multifonctions". Je n'ai pas l'habitude de travailler comme ça et je t'avoue que je m'y perds. L'idéal pour toi serait que JM27 passe par là et ait le courage de revoir ses codes pour toi.
Perso, moi je ne l'ai pas. Encore une fois, trop complexe juste pour du visuel, à mon goût...
Bonjour
Le fichier que j'ai crée a été modifié en profondeur : eh oui , il faut tout dire
Pas efficace : c'est ton avis !!
Pour valider un traitement je m'assure que les données nécessaires sont bien documentées et conformes à ce que l'on attends. normal.... non ?
la qualité d'une base de données est sa documentation: normal .... non ?
issu du fichier d'origine( feuille accueil)
Particularité de la propriété tag des objets de l'userform
Cette propriété sert d'aiguillage du traitement et du transfert des données.
Une propriété tag vide n'a aucune action.
Une propriété tag documentée comporte 3 éléments.
Ces éléments sont séparées par un espace
La première valeur est la colonne de destination dans la base de donnée
La deuxième valeur indique si la valeur saisie est impérative ou facultative ( Impérative : on impose une valeur à la saisie)
La troisième valeur est le type de données que comporte l'objet:
str : pour string
num : pour numérique
date: pour une date
Une propriété tag mal documentée entraîne un plantage de l'application
Re pour ma dernière intervention lol
Tu as quoi comme Tag 1-1ou 1 oui 1
Dans ta procédure la fonction Split va scinder le .Tag en fonction des espaces entre les données de ce .Tag et(0) donnera le premier élément .
Jean marie
Bonjour
Le fichier que j'ai crée a été modifié en profondeur : eh oui , il faut tout dire
issu du fichier d'origine( feuille accueil)
Pas efficace : c'est ton avis !!
Particularité de la propriété tag des objets de l'userform
Cette propriété sert d'aiguillage du traitement et du transfert des données.
Une propriété tag vide n'a aucune action.
Une propriété tag documentée comporte 3 éléments.
Ces éléments sont séparées par un espace
La première valeur est la colonne de destination dans la base de donnée
La deuxième valeur indique si la valeur saisie est impérative ou facultative ( Impérative : on impose une valeur à la saisie)
La troisième valeur est le type de données que comporte l'objet:
str : pour string
num : pour numérique
date: pour une date
Une propriété tag mal documentée entraîne un plantage de l'application
En effet, j'ai essayé de l'adapter à mes goûts et besoins, ainsi qu'à ceux des futures utilisatrices, après concertation.
Mais il est vrai que ni elles ni moi ne nous rendons compte des conséquences, limites, ou difficultés liées au VBA !
Pour le rappel des propriétés Tag sur la feuille d'accueil, je les ai bien mémorisées, mais après avoir trouvé d'autres choses sur les forums, étant toujours aussi nul, j'ai "tenté des choses" comme 1-1 etc.
C'est aussi en se plantant qu'on apprend...
Re pour ma dernière intervention lol
Tu as quoi comme Tag 1-1ou 1 oui 1
Dans ta procédure la fonction Split va scinder le .Tag en fonction des espaces entre les données de ce .Tag et(0) donnera le premier élément .
Jean marie
Le problème est que le code initial est très complexe au profit du visuel et au détriment de l'efficacité. C'est bien joli ces contrôles qui changent de couleur mais ça crée des codes à rallonge.
C'est toi qui le dis , tu ne parles pas du code qui suis ,
mais c'est pas grave.....
C'est vrai que trois boucles de codes de 5 lignes pour gérer de multiples champs c'est long
La critique est facile mais l'art est difficile
Pour info : je ne vois pas ou très peu de lignes de code que tu as proposé dans ce fil.
il me semble que si tu rajoutes un établissement ou un service il faut l'ajouter dans les combo
excuses moi d'être "carré"
Oui tu as raison JM27, adepte des Tag c'est vrai et des usines à gaz, je te rassure, j'en ai un paquet à mon actif. Mais afficher une UserForm avec :
VB:
Sub Affichage()
' Application.ScreenUpdating = False
' For I = 1 To Sheets.Count
' Sheets(I).Unprotect
' Next
UserFormTransport.Show
Application.GoTo reference:=Sheets("Commande").Range("A1"), Scroll:=True
End Sub
Private Sub UserForm_Initialize()
Dim Collec As New Collection
Dim Itm As Long
' je charge des différents déroulants de leurs items
With Sheets("Menus")
For Each Cell In .Range("AD2:AD" & .Range("AD10").End(xlUp).Row)
Me.ComboBoxCivilité.AddItem (Cell)
Next
For Each Cell In .Range("AA2:AA" & .Range("AA100").End(xlUp).Row)
Me.ComboHeureDépart.AddItem (Cell.Text)
Me.ComboHeureArrivée.AddItem (Cell.Text)
Next
For Each Cell In .Range("A2:A" & .Range("A1000").End(xlUp).Row)
If .Range("A2") <> "" Then
Me.ComboEtablissementArrivée.AddItem (Cell)
End If
Next
For Each Cell In .Range("B2:B" & .Range("B1000").End(xlUp).Row)
Me.ComboServiceArrivée.AddItem (Cell)
Me.ComboServiceDépart.AddItem (Cell)
Next
For Each Cell In .Range("AB2:AB" & .Range("AB10").End(xlUp).Row)
Me.ComboTps.AddItem (Cell)
Next
For Each Cell In .Range("AC2:AC" & .Range("AC10").End(xlUp).Row)
Me.CboBoxPayeur.AddItem (Cell)
Next
End With
' particularité du combo nom (pour eviter les doublons)
With Sheets("BD patients")
If .Range("B3") <> "" Then
' j'aliment une collection
For Each Cell In .Range("B3:B" & .Range("B10000").End(xlUp).Row)
On Error Resume Next
Collec.Add Cell, CStr(Cell)
On Error GoTo 0
Next
'J'aliment la combo à partir des items de la collection
For Itm = 1 To Collec.Count
Me.ComboNom.AddItem Collec.Item(Itm)
Next
End If
End With
End Sub
Private Sub UserForm_Activate()
Dim I As Byte
Set MonLabel = Controls.Add("Forms.Label.1", , True)
With MonLabel
.Caption = Right(ActiveWorkbook.Names("Auteur"), Len(ActiveWorkbook.Names("Auteur")) - 1)
.Top = 565
.Left = 300
.Height = 8.4
.Width = 100
MemNom = True
.Font.Bold = True
.Font.Italic = True
.Font.Size = 6
End With
' gestion de l'affichage de l'userform en mode " expansion"
Me.Top = Application.Top + (Application.Height / 2 - Me.Height / 2)
Me.Left = Application.Left + (Application.Width / 2 - Me.Width / 2)
MémoireHauteur = Me.Height
MemoireLargeur = Me.Width
PasHauteur = (Me.Height - 27) / 80
PasLargeur = (Me.Width - 93) / 80
Me.Height = 27
Me.Width = 93
For I = 0 To 150
If Me.Height > MémoireHauteur Then
Exit For
End If
Me.Height = Me.Height + PasHauteur
Me.Width = Me.Width + PasLargeur
' Utilisation de l'api Windows
' Sleep (5)
Next
Me.Height = MémoireHauteur
Me.Width = MemoireLargeur
End Sub
J'avoue que c'est du grand art ! Ça sent un peu le gaz quand même...