USERFORM Saisie / Modification

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

  • userform saisie.xls
    85 KB · Affichages: 82
  • userform saisie.xls
    85 KB · Affichages: 93
  • userform saisie.xls
    85 KB · Affichages: 95

Nairolf

XLDnaute Accro
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
 

sand13

XLDnaute Occasionnel
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")
 

kjin

XLDnaute Barbatruc
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

  • sand.xls
    89 KB · Affichages: 158

Nairolf

XLDnaute Accro
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.
 

sand13

XLDnaute Occasionnel
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 !
 

Statistiques des forums

Discussions
312 492
Messages
2 088 942
Membres
103 989
dernier inscrit
jralonso