USERFORM Saisie / Modification

  • Initiateur de la discussion Initiateur de la discussion sand13
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

sand13

XLDnaute Occasionnel
Bonjour à toutes et à tous,

Je suis en train de monter un fichier excel en VBA afin de gérer des titres financiers et je rencontre quelques petits problèmes que j'ai du mal à résoudre vu que je débute seulement sur VBA.

J'ai crée notamment deux userforms:

- un pour de la saisie
- un pour de la consultation / modification

Le premier problème que je rencontre c'est que les lignes que je saisie ne s'ajoutent pas mais viennent écraser les lignes saisies précédemment.

Le second problème concerne le userform de modif / consult: j'arrive à faire remonter les infos dans les textbox en fonction d'un critère (CODE FRONT dans ce cas) mais je n'arrive pas à adapter mon code pour permettre la modif.

Je souhaiterai pouvoir également faire remonter les infos par deux autres critères (si jamais je n'ai pas le code FRONT, je peux soit saisir le code ISIN, ou KTP). J'ai essayé de coder similairement à ce que j'ai déjà avec des if then else mais ca ne fonctionne pas.

Je vous joins le fichier ça sera plus parlant.

Merci pour votre aide en tout cas.

Bonne journée à vous
 

Pièces jointes

Re : USERFORM Saisie / Modification

Salut sand13, salut le forum,

Premier point :
LigneMax = WorksheetFunction.CountA(Columns("A:A")) + 1

Deuxième point : (pas testé)
Utilise le même code que tu as écris pour le premier cas mais remplace lignemax par:
LigneMax = WorksheetFunction.Match(UserForm.FRONT,Columns("A:A"),0)
Il faudra sans doute ajouter un suivi d'erreur pour la fonction match...

Troisième point :
Remplace:
If Not Trouve Is Nothing Then
par:
If Not Trouve = "" Then
 
Re : USERFORM Saisie / Modification

Salut Nairolf et merci de ta réponse!

Je ne comprends pas ce que tu veux dire par utiliser le même code pour le deuxième point: dois-je établir trois variable "trouve" pour les 3 possibles critères ? ou j'écris juste le ligne max comme ça ?

LigneMax = WorksheetFunction.Match(UserForm.FRONT,Columns("A: A"),0)
Range("Base!A" & LigneMax) = FRONT.Text
Range("Base!B" & LigneMax) = ISIN.Text
Range("Base!C" & LigneMax) = PRODUIT.Text
Range("Base!D" & LigneMax) = CONTREPARTIE.Text
Range("Base!E" & LigneMax) = DATE_OP.Text
Range("Base!F" & LigneMax) = DATE_EM.Text
Range("Base!G" & LigneMax) = DATE_ECH.Text
Range("Base!H" & LigneMax) = NOMINAL.Text
Range("Base!I" & LigneMax) = INDICE.Text
Range("Base!J" & LigneMax) = MARGE.Text
Range("Base!K" & LigneMax) = BO.Text
Range("Base!L" & LigneMax) = DATE_REMISE.Text
Range("Base!M" & LigneMax) = DATE_TRAIT.Text
Range("Base!N" & LigneMax) = KTP.Text
Range("Base!O" & LigneMax) = Comment.Text


Range("Base!V1") = Range("Base!V1") + 1
Range("Base!V" & LigneMax) = Range("Base!V1")
 
Re : USERFORM Saisie / Modification

Bonjour,
Voir PJ
Ne n'ai pas regardé tous les formulaires mais juste corrigé ceci dans SAISIE_TCN
Code:
LigneMax = Range("Base!A2").CurrentRegion.Rows.Count + 1
Et j'ai par contre réadapté usf3 (désolé je n'ai pas d'écran 42 pouces !) pour la recherche modif
Note qu'un seul usf devrait suffire pour ajout/modif/suppression/consultation
A toi de voir et de nous dire
A+
kjin
 

Pièces jointes

Re : USERFORM Saisie / Modification

sand13,

C'est bien ce code à reproduire, le mieux étant de le mettre dans la sub d'un nouveau bouton "validation modifications".
Tu pourrais même créer une autre sub ecriture(LigneMax) avec ce code :

sub ecriture(LigneMax)

Range("Base!A" & LigneMax) = FRONT.Text
Range("Base!B" & LigneMax) = ISIN.Text
Range("Base!C" & LigneMax) = PRODUIT.Text
Range("Base!D" & LigneMax) = CONTREPARTIE.Text
Range("Base!E" & LigneMax) = DATE_OP.Text
Range("Base!F" & LigneMax) = DATE_EM.Text
Range("Base!G" & LigneMax) = DATE_ECH.Text
Range("Base!H" & LigneMax) = NOMINAL.Text
Range("Base!I" & LigneMax) = INDICE.Text
Range("Base!J" & LigneMax) = MARGE.Text
Range("Base!K" & LigneMax) = BO.Text
Range("Base!L" & LigneMax) = DATE_REMISE.Text
Range("Base!M" & LigneMax) = DATE_TRAIT.Text
Range("Base!N" & LigneMax) = KTP.Text
Range("Base!O" & LigneMax) = Comment.Text

Range("Base!V1") = Range("Base!V1") + 1
Range("Base!V" & LigneMax) = Range("Base!V1")

End sub

et l'appeler dans tes deux boutons ainsi:
Private Sub CommandButton1_Click()

Dim LigneMax As Long
LigneMax = Range("Base!A2").CurrentRegion.Rows.Count
call ecriture(LigneMax)
Me.Hide

End Sub

Private Sub CommandButton2_Click()

Dim LigneMax As Long
LigneMax = WorksheetFunction.Match(UserForm.FRONT,Columns("A: A"),0)
call ecriture(LigneMax)
Me.Hide

End Sub

Ta fonction "recherche" fonctionnant à part.
 
Re : USERFORM Saisie / Modification

merci beaucoup à vous deux !



@Nairolf: je vais utiliser ton code ce soir et voir quelle méthode je préfère, merci beaucoup !

@kjin: merci ton fichier joint marche super je vais essayer de comprendre ton code maintenant !

Je pense que je vais garder deux userforms distincts car l'onglet de modif va me servir à faire des traitements d'échéances par la suite si j'arrive à avancer en VBA !
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
131
Réponses
2
Affichages
310
  • Question Question
Microsoft 365 affichage userform
Réponses
4
Affichages
361
Réponses
10
Affichages
291
Réponses
9
Affichages
153
  • Question Question
Microsoft 365 Contrôle sur date
Réponses
8
Affichages
276
Retour