Incrémentation numéro de ligne Visual Basic
kdison13
Messages postés
14
Date d'inscription
Statut
Membre
Dernière intervention
-
Jean-Marie -
Jean-Marie -
Bonjour,
Je poste ce message car j'ai un problème de programmation!
Je fais actuellement un masque de saisie pour une enquête de façon à ce que ce soit plus simple pour la personne qui va saisir les données, mais aussi que je récupère une table 'propre' pour analyser (je suis statisticienne).
Il s'agit d'un formulaire simple qui demande de renseigner les initiales, le n°de dossier, la date de naissance, etc Et deux boutons: l'un qui permet d'annuler ce qui a été saisi et l'autre qui permet de poursuivre la saisie avec un autre userform et d'enregistrer.
Ce que je voudrais c'est que lorsque le userform1 est ouvert :
1. un numéro de ligne soit incrémenté automatiquement
2. que la saisie se fasse sur la première ligne vide
J'ai codé une partie, mais là je sèche! Lorsque je rentre un numéro de dossier, par exemple 123, alors je me retrouve avec trois lignes ayant: 1, 12, 123. Je ne comprends pas car les autres champs texte ne me font pas ça!
Voilà ce que j'ai écris:
Je n'ai pas de grande notion de Visual Basic donc si quelqu'un peut m'aider, je serai comblée !
Merci d'avance!!
Je poste ce message car j'ai un problème de programmation!
Je fais actuellement un masque de saisie pour une enquête de façon à ce que ce soit plus simple pour la personne qui va saisir les données, mais aussi que je récupère une table 'propre' pour analyser (je suis statisticienne).
Il s'agit d'un formulaire simple qui demande de renseigner les initiales, le n°de dossier, la date de naissance, etc Et deux boutons: l'un qui permet d'annuler ce qui a été saisi et l'autre qui permet de poursuivre la saisie avec un autre userform et d'enregistrer.
Ce que je voudrais c'est que lorsque le userform1 est ouvert :
1. un numéro de ligne soit incrémenté automatiquement
2. que la saisie se fasse sur la première ligne vide
J'ai codé une partie, mais là je sèche! Lorsque je rentre un numéro de dossier, par exemple 123, alors je me retrouve avec trois lignes ayant: 1, 12, 123. Je ne comprends pas car les autres champs texte ne me font pas ça!
Voilà ce que j'ai écris:
'initialement Private Sub UserForm_Initialize() 'met sous format français la date du jour dans le textbox date. TextDate.Value = Format(Now(), "dd/mm/yyyy") TextNaissance.Value = Format("dd/mm/yyyy") TextTUT_ANNEE.Value = Format("dd/mm/yyyy") End Sub 'n°de dossier Private Sub TextSUBJID_Change() Sheets("patient").Range("A" & Range("A65536").End(xlUp).Offset(1, 0).Row).Value = TextSUBJID.Value 'Sheets("aidant").Range("A" & Range("A65536").End(xlUp).Offset(1, 0).Row).Value = TextSUBJID.Value 'Sheets("votre santé").Range("A" & Range("A65536").End(xlUp).Offset(1, 0).Row).Value = TextSUBJID.Value End Sub 'date Private Sub TextDate_Change() Sheets("patient").Activate Sheets("patient").Range("C" & Range("A65536").End(xlUp).Offset(1, 0).Row).Value = TextDate.Value End Sub 'examen effectué par Private Sub TextExam_Change() Sheets("patient").Activate Sheets("patient").Range("D" & Range("A65536").End(xlUp).Offset(1, 0).Row).Value = TextExam.Value End Sub 'initiales du patient Private Sub TextInitial_Change() Sheets("patient").Activate Sheets("patient").Range("B" & Range("A65536").End(xlUp).Offset(1, 0).Row).Value = TextInitial.Value End Sub 'date de naissance Private Sub TextNaissance_Change() Sheets("patient").Activate Sheets("patient").Range("E" & Range("A65536").End(xlUp).Offset(1, 0).Row).Value = TextNaissance.Value End Sub 'lieu de résidence Private Sub TextResid_Change() Sheets("patient").Activate Sheets("patient").Range("F" & Range("A65536").End(xlUp).Offset(1, 0).Row).Value = TextResid.Value End Sub 'statut famo 'célibataire Private Sub OptionCelib_Click() If OptionCelib.Value = True Then Sheets("patient").Range("G" & Range("A65536").End(xlUp).Offset(1, 0).Row).Value = OptionCelib.Caption End If End Sub 'marié Private Sub OptionMarie_Click() If OptionMarie.Value = True Then Sheets("patient").Range("G" & Range("A65536").End(xlUp).Offset(1, 0).Row).Value = OptionMarie.Caption End If End Sub 'divorcé Private Sub OptionDivorce_Click() If OptionDivorce.Value = True Then Sheets("patient").Range("G" & Range("A6|").End(xlUp).Offset(1, 0).Row).Value = OptionDivorce.Caption End If End Sub ' v| Private Sub OptionVeuf_Click() If OptionVeuf.Value = True Then Sheets("patient").Range("G" & Range("A65536").End(xlUp).Offset(1, 0).Row).Value = OptionVeuf.Caption End If End Sub 'vit en couple Private Sub OptionCouple_Click() If OptionCouple.Value = True Then Sheets("patient").Range("G" & Range("A65536").End(xlUp).Offset(1, 0).Row).Value = OptionCouple.Caption End If End Sub 'nombre d'enfants '0 Private Sub Optionnb_0_Click() If Optionnb_0.Value = True Then Sheets("patient").Range("H" & Range("A65536").End(xlUp).Offset(1, 0).Row).Value = Optionnb_0.Caption End If End Sub '1 Private Sub Optionnb_1_Click() If Optionnb_1.Value = True Then Sheets("patient").Range("H" & Range("A65536").End(xlUp).Offset(1, 0).Row).Value = Optionnb_1.Caption End If End Sub '2 Private Sub Optionnb_2_Click() If Optionnb_2.Value = True Then Sheets("patient").Range("H" & Range("A65536").End(xlUp).Offset(1, 0).Row).Value = Optionnb_2.Caption End If End Sub '3 Private Sub Optionnb_3_Click() If Optionnb_3.Value = True Then Sheets("patient").Range("H" & Range("A65536").End(xlUp).Offset(1, 0).Row).Value = Optionnb_3.Caption End If End Sub '4 Private Sub Optionnb_4_Click() If Optionnb_4.Value = True Then Sheets("patient").Range("H" & Range("A65536").End(xlUp).Offset(1, 0).Row).Value = Optionnb_4.Caption End If End Sub '5 Private Sub Optionnb_5_Click() If Optionnb_5.Value = True Then Sheets("patient").Range("H" & Range("A65536").End(xlUp).Offset(1, 0).Row).Value = Optionnb_5.Caption End If End Sub 'plus de 5 Private Sub Optionnb_sup5_Click() If Optionnb_sup5.Value = True Then Sheets("patient").Range("H" & Range("A65536").End(xlUp).Offset(1, 0).Row).Value = Optionnb_sup5.Caption End If End Sub 'age des enfants Private Sub TextAge_enfants_Change() Sheets("patient").Activate Sheets("patient").Range("I" & Range("A65536").End(xlUp).Offset(1, 0).Row).Value = TextAge_enfants.Value End Sub 'ancienne profession Private Sub TextProf_Change() Sheets("patient").Activate Sheets("patient").Range("J" & Range("A65536").End(xlUp).Offset(1, 0).Row).Value = TextProf.Value End Sub 'revenus du foyer Private Sub Textrev_foy_Change() Sheets("patient").Activate Sheets("patient").Range("K" & Range("A65536").End(xlUp).Offset(1, 0).Row).Value = Textrev_foy.Value End Sub 'estimez-vous que vos revenus vous permettent de vivre 'Normalement Private Sub OptionNormal_Click() If OptionNormal.Value = True Then Sheets("patient").Range("L" & Range("A65536").End(xlUp).Offset(1, 0).Row).Value = OptionNormal.Caption End If End Sub 'confortablement Private Sub OptionConfort_Click() If OptionConfort.Value = True Then Sheets("patient").Range("L" & Range("A65536").End(xlUp).Offset(1, 0).Row).Value = OptionConfort.Caption End If End Sub 'difficilement Private Sub OptionDifficult_Click() If OptionConfort.Value = True Then Sheets("patient").Range("L" & Range("A65536").End(xlUp).Offset(1, 0).Row).Value = OptionConfort.Caption End If End Sub 'existe-t-il une mesure sous tutelle? Private Sub FrameTutelle_Click() 'oui Private Sub OptionTUT_OUI_Click() If OptionTUT_OUI.Value = True Then Sheets("patient").Range("M" & Range("A65536").End(xlUp).Offset(1, 0).Row).Value = OptionTUT_OUI.Caption End If End Sub 'non Private Sub OptionTUT_NON_Click() If OptionTUT_NON.Value = True Then Sheets("patient").Range("M" & Range("A65536").End(xlUp).Offset(1, 0).Row).Value = OptionTUT_NON.Caption End If End Sub End Sub 'si oui, depuis quelle date? Private Sub TextTUT_ANNEE_Change() Sheets("patient").Activate Sheets("patient").Range("N" & Range("A65536").End(xlUp).Offset(1, 0).Row).Value = TextTUT_ANNEE.Value End Sub 'bouton Annuler Private Sub CommandAnnuler_Click() Unload UserForm1 End Sub 'bouton suivant Private Sub CommandSuivant_Click() Load UserForm1 UserForm2.Show End Sub
Je n'ai pas de grande notion de Visual Basic donc si quelqu'un peut m'aider, je serai comblée !
Merci d'avance!!
A voir également:
- Incrémentation numéro de ligne Visual Basic
- Visual basic - Télécharger - Langages
- Partage de photos en ligne - Guide
- Numero prive - Guide
- Numéro père noël whatsapp - Accueil - Messagerie instantanée
- Microsoft 365 basic - Accueil - Microsoft Office
3 réponses
Salut,
1- quelle version d'excel tu utilise ?
2- si tu saisi comme dossier 1234, tu obtient 4 lignes ?
1
12
123
1234 ?
auquel cas c'est ta fonction TextSUBJID_Change() qui est "appelée" trop souvent, en l'occurence dès que tu saisi un chiffre dans ton champs.
a+
1- quelle version d'excel tu utilise ?
2- si tu saisi comme dossier 1234, tu obtient 4 lignes ?
1
12
123
1234 ?
auquel cas c'est ta fonction TextSUBJID_Change() qui est "appelée" trop souvent, en l'occurence dès que tu saisi un chiffre dans ton champs.
a+
Salut!
1- J'utilise Excel 2003
2- C'est bien ça ! Je suis d'accord avec toi: ça doit être la fonction qui est appelée trop souvent, mais j'ai codé exactement de la même façon les autres champs et je n'ai pas ce problème! Bizarre ...
A+
1- J'utilise Excel 2003
2- C'est bien ça ! Je suis d'accord avec toi: ça doit être la fonction qui est appelée trop souvent, mais j'ai codé exactement de la même façon les autres champs et je n'ai pas ce problème! Bizarre ...
A+
si effectivement la fonction _change est systematiquement appellée des qu'on saisis quelque chose, je vois 2 solutions :
- remplacer la zone de saisie par une liste deroulante
ou
- ne pas affecter de macro sur la zone de saisie mais creer un bouton sur lequel tu cliques quand tu as fini ta saisie.
a+
- remplacer la zone de saisie par une liste deroulante
ou
- ne pas affecter de macro sur la zone de saisie mais creer un bouton sur lequel tu cliques quand tu as fini ta saisie.
a+