Formulaire de saisi en VB
kdison13
Messages postés
14
Date d'inscription
Statut
Membre
Dernière intervention
-
kdison13 Messages postés 14 Date d'inscription Statut Membre Dernière intervention -
kdison13 Messages postés 14 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
je me tourne vers vous, pros d'Excel , car j'ai un soucis depuis un moment et je commence à perdre patience ! Effectivement je suis débutante en VB et, dans le cadre de mon travail, je dois développer un formulaire de saisi pour une assistante sociale.
J'ai réussi à faire la partie 'basique', qui écrit simplement les infos saisies dans mes 17 UserForm dans des feuilles Excel. Chaque UserForm est codé de cette façon:
Je vous explique simplement le principe: En ouvrant le classeur Excel, l'assistante sociale tombera sur la première feuille 'patient'. Sur celle-ci, il y a deux boutons:
- 'nouveau questionnaire' : qui ouvre le 1er userform. L'assistante sociale le remplit puis clique sur le bouton 'suivant' afin de continuer la saisie, etc... Pour le moment il y a un bouton annuler, que j'aimerai remplacer par un bouton précédent de façon à revenir en arrière et ainsi changer les infos saisies auparavant ! problème:mon bouton suivant écrit automatiquement les données dans le fichier Excel et je ne sais donc pas comment faire pour pouvoir revenir sur le Userform précédent avec les infos remplies !
- 'revenir sur un formulaire' : qui ouvre un userform, où l'on saisi un numéro de dossier. Ensuite j'aimerai que l'on puisse naviguer sur les différents userforms remplit par les infos écrits sur les lignes indéxées par le numéro de dossier saisi! En effet, dans le classeur Excel, sur chaque feuille, les lignes sont répertoriées par un numéro de dossier!
Mes deux gros problèmes sont donc:
- rechercher le numéro de la ligne à laquelle le numéro de dossier (colonne A) correspond à ce qui a été saisi,
- charger un userform avec les infos saisies sur une ligne précise du classeur excel.
J'espère que j'ai été assez clair et que quelqu'un pourra m'aider!
merci d'avance !
je me tourne vers vous, pros d'Excel , car j'ai un soucis depuis un moment et je commence à perdre patience ! Effectivement je suis débutante en VB et, dans le cadre de mon travail, je dois développer un formulaire de saisi pour une assistante sociale.
J'ai réussi à faire la partie 'basique', qui écrit simplement les infos saisies dans mes 17 UserForm dans des feuilles Excel. Chaque UserForm est codé de cette façon:
Private Sub CommandSuivant_Click() Dim newLig As Long With Sheets("patient") newLig = .Cells(.Rows.Count, "A").End(xlUp).Row + 1 'Première cellule vide dans colonne A (ligne où on va ajouter les données) .Range("A" & newLig).Value = Me.TextSUBJID.Value .Range("B" & newLig).Value = UCase(Me.TextInitial.Value) 'initiales en majuscule même si elles sont écrites en minuscule .Range("C" & newLig).Value = Format(Me.TextDate.Value, "dd/mm/yyyy") .Range("D" & newLig).Value = UCase(Me.TextExam.Value) .Range("E" & newLig).Value = Format(Me.TextNaissance.Value, "dd/mm/yyyy") .Range("F" & newLig).Value = Me.TextResid.Value If Me.OptionCelib.Value = True Then .Range("G" & newLig).Value = Me.OptionCelib.Caption If Me.OptionMarie.Value = True Then .Range("G" & newLig).Value = Me.OptionMarie.Caption If Me.OptionDivorce.Value = True Then .Range("G" & newLig).Value = Me.OptionDivorce.Caption If Me.OptionVeuf.Value = True Then .Range("G" & newLig).Value = Me.OptionVeuf.Caption If Me.OptionCouple.Value = True Then .Range("G" & newLig).Value = Me.OptionCouple.Caption If Me.Optionnb_0.Value = True Then .Range("H" & newLig).Value = Me.Optionnb_0.Caption If Me.Optionnb_1.Value = True Then .Range("H" & newLig).Value = Me.Optionnb_1.Caption If Me.Optionnb_2.Value = True Then .Range("H" & newLig).Value = Me.Optionnb_2.Caption If Me.Optionnb_3.Value = True Then .Range("H" & newLig).Value = Me.Optionnb_3.Caption If Me.Optionnb_4.Value = True Then .Range("H" & newLig).Value = Me.Optionnb_4.Caption If Me.Optionnb_5.Value = True Then .Range("H" & newLig).Value = Me.Optionnb_5.Caption If Me.Optionnb_sup5.Value = True Then .Range("H" & newLig).Value = Me.Optionnb_sup5.Caption .Range("I" & newLig).Value = UCase(Me.TextAge_enfants.Value) .Range("J" & newLig).Value = UCase(Me.TextProf.Value) .Range("K" & newLig).Value = UCase(Me.Textrev_foy.Value) If Me.OptionNormal.Value = True Then .Range("L" & newLig).Value = Me.OptionNormal.Caption If Me.OptionConfort.Value = True Then .Range("L" & newLig).Value = Me.OptionConfort.Caption If Me.OptionConfort.Value = True Then .Range("L" & newLig).Value = Me.OptionConfort.Caption If Me.OptionTUT_OUI.Value = True Then .Range("M" & newLig).Value = Me.OptionTUT_OUI.Caption If Me.OptionTUT_NON.Value = True Then .Range("M" & newLig).Value = Me.OptionTUT_NON.Caption .Range("N" & newLig).Value = Format(Me.TextTUT_ANNEE.Value, "dd/mm/yyyy") End With Me.Hide Load UserForm2 UserForm2.TextSUBJID.Value = Me.TextSUBJID.Value 'textbox1 est le textbox de userform2 recevant le n° dossier UserForm2.Show 0 Unload Me End Sub Private Sub CommandAnnuler_Click() Unload Me End Sub
Je vous explique simplement le principe: En ouvrant le classeur Excel, l'assistante sociale tombera sur la première feuille 'patient'. Sur celle-ci, il y a deux boutons:
- 'nouveau questionnaire' : qui ouvre le 1er userform. L'assistante sociale le remplit puis clique sur le bouton 'suivant' afin de continuer la saisie, etc... Pour le moment il y a un bouton annuler, que j'aimerai remplacer par un bouton précédent de façon à revenir en arrière et ainsi changer les infos saisies auparavant ! problème:mon bouton suivant écrit automatiquement les données dans le fichier Excel et je ne sais donc pas comment faire pour pouvoir revenir sur le Userform précédent avec les infos remplies !
- 'revenir sur un formulaire' : qui ouvre un userform, où l'on saisi un numéro de dossier. Ensuite j'aimerai que l'on puisse naviguer sur les différents userforms remplit par les infos écrits sur les lignes indéxées par le numéro de dossier saisi! En effet, dans le classeur Excel, sur chaque feuille, les lignes sont répertoriées par un numéro de dossier!
Mes deux gros problèmes sont donc:
- rechercher le numéro de la ligne à laquelle le numéro de dossier (colonne A) correspond à ce qui a été saisi,
- charger un userform avec les infos saisies sur une ligne précise du classeur excel.
J'espère que j'ai été assez clair et que quelqu'un pourra m'aider!
merci d'avance !
A voir également:
- Formulaire de saisi en VB
- Whatsapp formulaire opposition - Guide
- Formulaire de réclamation facebook - Guide
- Formulaire de reclamation instagram - Guide
- Vb - Télécharger - Langages
- Confirmer le nouvel envoi du formulaire err_cache_miss - Forum Webmastering
2 réponses
Bonjour,
Pour le 1er souci. Lorsque tu cliques sur "suivanttu lances la procédure :
Les données que tu entres sont donc situées dernière ligne feuille patient. Dans ton bouton "précédent", il te faut :
- chercher ces données
- les stocker dans les contrôles de l'UserForm précédent (on va l'appeler USFPréc)
- afficher l'USFPréc :
Essaye déjà ceci, et reviens nous dire ce qu'il en est, je t'expliquerais alors la méthode .find pour trouver une valeur (ton numéro de dossier) dans une feuille
Pour le 1er souci. Lorsque tu cliques sur "suivanttu lances la procédure :
Dim newLig As Long With Sheets("patient") newLig = .Cells(.Rows.Count, "A").End(xlUp).Row + 1 'Première cellule vide dans colonne A (ligne où on va ajouter les données) .Range("A" & newLig).Value = Me.TextSUBJID.Value .Range("B" & newLig).Value = UCase(Me.TextInitial.Value) 'initiales en majuscule même si elles sont écrites en minuscule .Range("C" & newLig).Value = Format(Me.TextDate.Value, "dd/mm/yyyy") .Range("D" & newLig).Value = UCase(Me.TextExam.Value) etc ... etc...
Les données que tu entres sont donc situées dernière ligne feuille patient. Dans ton bouton "précédent", il te faut :
- chercher ces données
- les stocker dans les contrôles de l'UserForm précédent (on va l'appeler USFPréc)
- afficher l'USFPréc :
Dim derLig As Long With Sheets("patient") derLig = .Cells(.Rows.Count, "A").End(xlUp).Row 'dernière cellule non vide dans colonne A (ligne où on va extraire les données) USFPréc.TextSUBJID.Value = .Range("A" & derLig).Value USFPréc.TextInitial.Value = .Range("B" & derLig).Value USFPréc.TextDate.Value = .Range("C" & derLig).Value USFPréc.TextExam.Value = .Range("D" & derLig).Value etc... etc... USFPréc.Show
Essaye déjà ceci, et reviens nous dire ce qu'il en est, je t'expliquerais alors la méthode .find pour trouver une valeur (ton numéro de dossier) dans une feuille
merci bien!! Je regarde ça de plus près et je vous tiens au courant!! En tous cas merci de votre réponse!
Tant que j'y pense... Comment fait-on pour effacer toutes les infos qui peuvent être saisies ou cochées dans un userForm? Parce que quand je lance une nouvelle saisie, les infos de la précédentes sont encores là!
Bonne soirée! Et à bientôt je pense!! :-p
Tant que j'y pense... Comment fait-on pour effacer toutes les infos qui peuvent être saisies ou cochées dans un userForm? Parce que quand je lance une nouvelle saisie, les infos de la précédentes sont encores là!
Bonne soirée! Et à bientôt je pense!! :-p