XL 2013 je travail sur un userform VBA

SDHABARKA

XLDnaute Nouveau
bonsoir chers membre du forum!
En fait, je chercher à faire un code Vba pouvant me permettre de faire une une recherche:
d'abord on saisisi le numéro de téléphone et choisir un valeur dans le combobox du userform "service" puis on clique sur rechercher et on sera dirigé vers le second userform ci-joint ,
Ensuite, il faudra cliquer sur rechercher pour faire la recherche sur la feuille dont le nom est selectionner dans le combobox.
Les resusultats de la recherche seront afficher dans les textbox en couleur .
A savoir que les textbox "signature " et "p une ordonnance" ne seront pas cocerner; ils seront remplis par l'utilisateur.
En fin,le bouton "valider" va nous permettre de récupérer les informations des textbox "signature " et
"ordonnance"
et de les enregistrer dans la feuille sur laquelle s'est portée la rechercher.

NB: la capture joint intitulé "frm" sert de détail pour aider à mieux comprendre le travail à faire
si on clique "Cardio" dans la combobox, la recherche se fera dans la feuille "Cardio" ainsi que l'enregistrement en cliquant sur "valider", ainsi de suite pour tout les valeur de la combobox
 

Pièces jointes

  • Annotation 2022-09-02 201102.png
    Annotation 2022-09-02 201102.png
    15.1 KB · Affichages: 27
  • frm.png
    frm.png
    52.8 KB · Affichages: 24
  • Patient.xlsm
    65.5 KB · Affichages: 10

vgendron

XLDnaute Barbatruc
Bonjour

Pourquoi as tu besoin de deux formulaires pour faire une recherche?
tes plages nommées "tmedecine, tcardio...." sont inutiles car elles font référence à toute la feuille==> aucun intéret

Soit tu définies les plages de telle sorte qu'elles ne contiennent QUE les données, (voir en PJ la nouvelle définition de tmedecine) soit tu utilises des tableaux structurés (voir onglet Cardio)
 

Pièces jointes

  • Patient.xlsm
    56.4 KB · Affichages: 5

vgendron

XLDnaute Barbatruc
en PJ une proposition pour rechercher un numéro de tel dans un service
les services sont listés dans la feuille "Listes"
une fonction permet de vérifier que la feuille existe bien
les tableaux sont des tableaux structurés

une idée (parmi tant d'autres) pour le futur
il faudrait
1) ajouter des controles de saisie de numéro de tel pour forcer une saisie dans un format specifique
ex: 01.02.03.04.05

j'ai voulu essayer de retravailler ton formulaire "Acceuil", mais visiblement le fichier est incomplet car il manque le formulaire "opoui"

une remarque au sujet du nom des controles de formulaire
pour un TextBox: utilise uniquement le préfixe TB_
pour un ComboBox: le préfixe CB_
c'est plus court et plus facile à lire
 

Pièces jointes

  • Patient.xlsm
    61.6 KB · Affichages: 4

Dranreb

XLDnaute Barbatruc
Bonjour.
Pour ma part j'utilise des préfixes à 3 lettres, très pratiques.
1662214317523.png
 

SDHABARKA

XLDnaute Nouveau
en PJ une proposition pour rechercher un numéro de tel dans un service
les services sont listés dans la feuille "Listes"
une fonction permet de vérifier que la feuille existe bien
les tableaux sont des tableaux structurés

une idée (parmi tant d'autres) pour le futur
il faudrait
1) ajouter des controles de saisie de numéro de tel pour forcer une saisie dans un format specifique
ex: 01.02.03.04.05

j'ai voulu essayer de retravailler ton formulaire "Acceuil", mais visiblement le fichier est incomplet car il manque le formulaire "opoui"

une remarque au sujet du nom des controles de formulaire
pour un TextBox: utilise uniquement le préfixe TB_
pour un ComboBox: le préfixe CB_
c'est plus court et plus facile à lire
merci ça marche et surtout merci pour les conceils et suggestion j'en tiendrais compte
 

SDHABARKA

XLDnaute Nouveau

Veut tu bien m'aider à comprendre à quoi fais reference ces caractéres mises en couleur



Private Sub Commandrechercher_Click()
Dim feuille As Worksheet
If Me.TextBotell = "" Or Me.ComboBservices = "" Then
MsgBox "Veuillez remplir les deux champs ""Numéro de téléphone"" et ""Service"""
Exit Sub
End If
If FeuilleExiste(CStr(Me.ComboBservices)) Then 'on vérifie déjà que la feuille du service selectionné existe
With Sheets(CStr(Me.ComboBservices)).ListObjects(1) 'dans la feuille du service
Set trouve = .ListColumns(6).DataBodyRange.Find(Me.TextBotell, lookat:=xlWhole)
If trouve Is Nothing Then 'si on ne trouve pas le numéro de tel dans le tableau
MsgBox "Désolé,ce patient ne figure pas dans votre base de Donnée.verifiez si le numero saisi est conforme", vbInformation + vbOKOnly
Exit Sub
End If
ligne = trouve.Row - 5
'sinon, on a trouvé==> il faut remplir les différents champs du formulaire
Me.TextBndoc = .DataBodyRange(ligne, 1)
Me.TextBnfamille = .DataBodyRange(ligne, 2)
Me.TextBprenom = .DataBodyRange(ligne, 3)
Me.TextBadresse = .DataBodyRange(ligne, 5)
Me.TextBdate = .DataBodyRange(ligne, 7)
End With
End If
End Sub
......................................................
Veut tu bien m'aider à comprendre à quoi fais reference ces caractéres mises en couleur


Salut @Dranreb : je vois que tu t'es fait une règle de nommage: ton tableau me plait bien :)

@SDHABARKA : une nouvelle version qui contient des tableaux structurés
et le code associé modifié
regarde, j'y ai mis plein de commentaires
 

vgendron

XLDnaute Barbatruc
listobjects: c'est l'objet vba qui fait référence au "tableau structuré" qui est présent sur la feuille
(1): c'est le premier tableau de la feuille
ici.. comme il n'y en a qu'un seul, pas de risque d'erreur.

regarde le lien ci dessou: ca décrit les différentes parties d'un tableau

dans ton fichier d'origine, il n'y a pas de tableau structuré, juste un tableau "fait main"
pour transformer ton "tableau fait main" en tableau structuré
tu selectionnes ton tableau, onglet "Accueil" / Style / Mettre sous forme de tableau
tu choisis le style qui te plait et voila..
c'est devenu un tableau structuré: son nom est mis par défaut par excel: tu peux lui changer son nom pour avoir un nom plus parlant

l'avantage de ce type de tableau..
il suffit d'ajouter une donnée juste en dessous du tableau pour que cette nouvelle données soit intégrée dans le tableau
s'il y a une formule dans une des colonnes, la formule est automatiquement etirée

autre avantage.. en VBA,
quand tu fais référence au tableau (avec listobjects. justement).. l'emplacement du tableau dans la feuille n'a pas d'importance.. si jamais tu le déplaces dans la feuile, le code n'a pas besoin d'etre modifié (enfin.. presque.. à condition de savoir faire référence correctement au tableau)
 

SDHABARKA

XLDnaute Nouveau
listobjects: c'est l'objet vba qui fait référence au "tableau structuré" qui est présent sur la feuille
(1): c'est le premier tableau de la feuille
ici.. comme il n'y en a qu'un seul, pas de risque d'erreur.

regarde le lien ci dessou: ca décrit les différentes parties d'un tableau

dans ton fichier d'origine, il n'y a pas de tableau structuré, juste un tableau "fait main"
pour transformer ton "tableau fait main" en tableau structuré
tu selectionnes ton tableau, onglet "Accueil" / Style / Mettre sous forme de tableau
tu choisis le style qui te plait et voila..
c'est devenu un tableau structuré: son nom est mis par défaut par excel: tu peux lui changer son nom pour avoir un nom plus parlant

l'avantage de ce type de tableau..
il suffit d'ajouter une donnée juste en dessous du tableau pour que cette nouvelle données soit intégrée dans le tableau
s'il y a une formule dans une des colonnes, la formule est automatiquement etirée

autre avantage.. en VBA,
quand tu fais référence au tableau (avec listobjects. justement).. l'emplacement du tableau dans la feuille n'a pas d'importance.. si jamais tu le déplaces dans la feuile, le code n'a pas besoin d'etre modifié (enfin.. presque.. à condition de savoir faire référence correctement au tableau)
merci beaucoup, vous êtes geniale
 

vgendron

XLDnaute Barbatruc
Dans la PJ, j'ai ajouté un bouton pour créer les services manquants
les services sont listés dans la feuille "Liste"
si la feuille n'existe pas, le modèle "Service Template" est dupliqué et le nom du service est mis en cellule B3 et le tableau structuré est nommé correctement.

je te laisse cliquer sur le bouton

ensuite..Je ne comprend pas l'intérêt de tous les formulaires..
pour moi. UN seul suffit voire 2

pour savoir si le patient est déjà venu, tu ouvres un nouveau formulaire (Opoui) pour demander son numéro de téléphone, ensuite tu ouvres un nouveau formulaire (fmrecherchrp) pour demander le service.. et ensuite.. bah. rien. tu ne fais rien de l'information..
donc. à priori les deux formulaire "OpOui" et "FmRecherchRP" ne servent à rien et peuvent etre supprimés

quand tu cliques sur le bouton "rechercher" sur une feuille service: le formulaire "Service" est lancé pour demander un numéro de télépohne et un service

ensuite. ca ouvre un autre formulaire qui remet les meme infos (avec encore un bouton rechercher)
et les champs (textbox..) ne sont meme pas remplis..

donc. encore une fois. le formulaire "Service" ne sert à rien


il faudrait que tu expliques à quoi sert le fichier et comment il est censé etre utilisé
 

Pièces jointes

  • Patient2.xlsm
    83.9 KB · Affichages: 5

Statistiques des forums

Discussions
312 216
Messages
2 086 351
Membres
103 195
dernier inscrit
martel.jg