Excel 2007 VBA : Problème de variable et de format monétaire

Bonjour, Je possède excel 2007 et suis néophyte et autodidacte en vba, macros, etc...

En m'aidant d'exemples trouvés notamment dans ce forum, j'ai créé le fichier joint et qui doit me servir pour tenir mes comptes...

L'écran de saisie apparaît lorsque on tape "ctrl" & "M" en même temps.

Mon fichier marche sauf deux bugs que j'ai découverts pour le moment :

1- Dans l'écran de saisie, lorsque on rentre le code d'une écriture déja créée, tous les champs de la donnée s'affichent dans l'écran de saisie. Si je rentre le code proposé, il doit s'agir d'une nouvelle donnée et rien ne doit donc d'afficher... Tout marche très bien pour les 19 premières données. Mais à partir de 20 rien ne va plus... : si je rentre le code 20, il affiche l'écriture 2, etc...

Je pense que c'est un problème de variable et de déclaration mais rien de ce que j'ai essayé ne marche...

2- En phase de "modification" d'une écriture, si je modifie la somme initialement saisie, la nouvelle somme saisie n'est pas dans le bon format monétaire alors qu'en "création" tout marche bien...

Quelqu'un peut-il m'aider même si je reconnais que mon système vba n'est pas forcément très clair ou très orthodoxe...

Merci d'avance

PIERREFAU

30comptes.xlsm (126.44 Ko)

Bonjour,

une réponse partielle , tu verras des formules un peu différentes dans les cellules oranges

(pas de VBA)

P.

20comptes.xlsm (124.22 Ko)

Bonjour,

Merci beaucoup de ces améliorations.

Malheureusement cela ne résout pas mon problème d'affichage à partir de la donnée n° 20...

Merci par avance de m'aider.

Cordialement,

PIERREFAU

Bonjour à tous

Essaie en modifiant ton code comme suit :

Private Sub ComboBox1_Change()
 Dim Ligne As Long
 Dim I As Integer
     If Me.ComboBox1.ListIndex = -1 Then
        Ligne = Ws.Cells(Rows.Count, "E").End(xlUp)(2).Row
        ComboBox2.ListIndex = -1
        For I = 1 To 3
           Me.Controls("TextBox" & I) = ""
        Next I
    Else
        Ligne = Me.ComboBox1.ListIndex + 2
        ComboBox2 = Ws.Cells(Ligne, "E")
        For I = 1 To 3
           Me.Controls("TextBox" & I) = Ws.Cells(Ligne, I + 1)
        Next I
    End If
End Sub

Bye !

Bonjour,

Merci beaucoup, GMB : ton code résout parfaitement mon premier problème dans le formulaire de saisie pour une nouvelle donnée.

Par contre, il reste le deuxième problème : le formatage monétaire dans la partie "modification de données".

Merci par avance de votre aide pour cette difficulté.

PIERREFAU

Bonjour

Nouvelle version à tester.

Bye !

36comptes-v2.xlsm (120.71 Ko)

Re-Bonjour,

Un grand merci, GMB : cela marche parfaitement me semble-t-il.

Cordialement

PIERREFAU

Rechercher des sujets similaires à "2007 vba probleme variable format monetaire"