[Résolu] Probleme sur textbox

Billard

XLDnaute Nouveau
Bonjour

Voici un petit code (mon premier userform), il fonction mais si j'ai des valeurs non saisie, erreur, d'après ce que je comprends c'est un problème sur textbox car je saisie des valeurs numériques.
Certainement mes déclarations.
Et si je mets userform1.Show 0 ,j'ai erreur type variablee
Si je pouvais être conseillé, merci par avance,

Code:
'***************************************************************************************
Option Explicit  'Activation de la déclaration explicite des variables
Dim Ws As Worksheet  'Variable pour un Objet Worksheet en PUBLIC pour tous les Controls de cet UserForm

Private Sub CommandButton2_Click()
  'Correspond au programme du bouton QUITTER

  Unload Me
  'Unload => Permet de fermer l'Userform et de l'effacer de la mémoire, les valeurs de ses contrôles sont à alors perdues.
  ' Me => Référence à l'objet en cours

End Sub

Private Sub UserForm_Initialize()
Sheets("Tables").Select
Dim c As Variant
Dim c2 As Variant
Dim c3 As Variant


' Combobox avec liste des noms et prenoms des joueurs
For Each c In Range("G4:G" & [G200].End(xlUp).Row)
  Me.ComboBox1.AddItem c
Next c
' combobox avec list mode paiement
For Each c2 In Range("L34:L" & [L35].End(xlUp).Row + 1)
  Me.ComboBox2.AddItem c2
Next c2
' combobox avec list observation
For Each c3 In Range("J4:J" & [J20].End(xlUp).Row + 1)
  Me.ComboBox3.AddItem c3
Next c3
Sheets("Caisse Journalière").Select
End Sub

Private Sub CommandButton1_Click()
  ' Initialise les variables
  Dim Dligne As Integer
  Dim NPiece As String
  Dim NomPrenom As String
  Dim Observation As String
  Dim DateJ As Date
  Dim NChq As Integer
  Dim ModeP As String
  Dim Mbillard As Integer
  Dim MBar As Integer
  Dim MCours As Integer
  Dim MRepas As Integer
  Dim MOffert As Integer
  Dim MVerse As Integer
  Dim RestePayer As Integer
  ' valeurs initiales
  DateJ = Date
  NPiece = ""
  NomPrenom = ""
  Observation = ""
  MBar = 0
  NChq = 0
  ModeP = ""
  Mbillard = 0
  MCours = 0
  MRepas = 0
  MOffert = 0
  MVerse = 0
  ' selectionne la feuille
  Sheets("Caisse Journalière").Select
  ' range les valeurs dans cellules
  DateJ = Me.TextBox2
  NPiece = Me.TextBox1
  NomPrenom = Me.ComboBox1
  Observation = Me.ComboBox3
  MBar = Me.TextBox4
  NChq = Me.TextBox11
  ModeP = Me.ComboBox2
  Mbillard = Me.TextBox5
  MCours = Me.TextBox7
  MRepas = Me.TextBox6
  MOffert = Me.TextBox8
  MVerse = Me.TextBox9
  RestePayer = ((MBar + Mbillard + MCours + MRepas) - MOffert) - MVerse
  ' Derniere vide du fichier
  Dligne = Range("E9500").End(xlUp).Row + 1
  Cells(Dligne, 5) = NPiece
  Cells(Dligne, 6) = NomPrenom
  Cells(Dligne, 7) = Observation
  Cells(Dligne, 8) = DateJ
  Cells(Dligne, 9) = NChq
  Cells(Dligne, 10) = ModeP
  Cells(Dligne, 11) = Mbillard
  Cells(Dligne, 12) = MBar
  Cells(Dligne, 13) = MCours
  Cells(Dligne, 14) = MRepas
  Cells(Dligne, 15) = MOffert
  Cells(Dligne, 17) = MVerse
  TextBox10 = RestePayer
  If RestePayer > 0 Then
  MsgBox "La somme restante à payer est de : " & RestePayer & " €", vbOKOnly + vbInformation, "Information"
  End If
End Sub
 
Dernière édition:

Billard

XLDnaute Nouveau
Bonsoir

L'application comporte des données confidentielles et le code présent est suffisamment explicite pour apporter une aide. Le souci est une histoire de déclaration spécifique à Excel que je ne connais pas. Ce type de souci sous python, Clipper ne me pose pas de problème. Il me manque une connaissance du vba sans plus. Par contre, une fois l'application top, je ne manquerais pas de la publier avec des données vides.
Normal, je trouve logique puisque j'obtiens de l'aide.
 

Billard

XLDnaute Nouveau
Bonjour

Le code fonction, si proposition plus logique, merci à vous


Code:
Private Sub CommandButton1_Click()


    ' Initialise les variables
    Dim Dligne As Integer
    Dim NPiece As String
    Dim NomPrenom As String
    Dim Observation As String
    Dim DateJ As Date
    Dim NChq As String
    Dim ModeP As String
    Dim Mbillard As Integer
    Dim MBar As Integer
    Dim MCours As Integer
    Dim MRepas As Integer
    Dim MOffert As Integer
    Dim MVerse As Integer
    Dim RestePayer As Integer
   
    ' valeurs initiales
    DateJ = Date
    NPiece = ""
    NomPrenom = ""
    Observation = ""
    MBar = 0
    NChq = ""
    ModeP = ""
    Mbillard = 0
    MCours = 0
    MRepas = 0
    MOffert = 0
    MVerse = 0
    ' selectionne la feuille
    Sheets("Caisse Journalière").Select
   
    ' range les valeurs dans cellules
    ' Date de la consommation indiqué sur le cahier journalier
   
    If Not IsDate(Me.TextBox2) Then
        MsgBox "Format de date saisie incorrect !", vbOKOnly + vbCritical, "Erreur de saisie"
        Exit Sub
    Else
        DateJ = Me.TextBox2.Value
        If DateJ > Date Then
            MsgBox "Date supérieure à date du jour", vbOKOnly + vbCritical, "Erreur de saisie"
            Me.TextBox2 = ""
            Exit Sub
        End If
       
    End If
    ' Identification cahier saisie comptable par N° Pièce
    If Me.TextBox1 <> "" Then
        NPiece = Me.TextBox1.Value
    Else
        MsgBox "Saisie N° Pièce Obligatoire", vbOKOnly + vbCritical, "Erreur de saisie"
        Exit Sub
    End If
    ' Identification du membre
    If Me.ComboBox1 <> "" Then
        NomPrenom = Me.ComboBox1
    Else
        MsgBox "Nom du membre Obligatoire", vbOKOnly + vbCritical, "Erreur de saisie"
        Exit Sub
    End If
    ' Identification du moment
    If Me.ComboBox3 <> "" Then
        Observation = Me.ComboBox3
    Else
        MsgBox "Observation Obligatoire", vbOKOnly + vbCritical, "Erreur de saisie"
        Exit Sub
    End If
   
    If Me.TextBox4 <> "" Then
        MBar = Me.TextBox4.Value
    End If
   
    If Me.TextBox11 <> "" Then
       NChq = Me.TextBox11.Value
    End If
    ModeP = Me.ComboBox2
    If Me.TextBox5 <> "" Then
        Mbillard = Me.TextBox5.Value
    End If
    If Me.TextBox7 <> "" Then
        MCours = Me.TextBox7.Value
    End If
    If Me.TextBox6 <> "" Then
        MRepas = Me.TextBox6.Value
    End If
    If Me.TextBox8 <> "" Then
        MOffert = Me.TextBox8.Value
        End If
    If Me.TextBox9 <> "" Then
        MVerse = Me.TextBox9.Value
    End If
    RestePayer = ((MBar + Mbillard + MCours + MRepas) - MOffert) - MVerse
   
    If MBar < 0 Or Mbillard < 0 Or MCours < 0 Or MRepas < 0 Then
        MsgBox "Les valeurs négatives sont iterdites", vbOKOnly + vbCritical, "Erreur de saisie"
        Exit Sub
    End If
   
    ' Derniere vide du fichier
    Dligne = Range("E9500").End(xlUp).Row + 1
   
    If (MBar + Mbillard + MCours + MRepas) <> 0 Then
        Cells(Dligne, 5) = NPiece
        Cells(Dligne, 6) = NomPrenom
        Cells(Dligne, 7) = Observation
        Cells(Dligne, 8) = DateJ
        Cells(Dligne, 9) = NChq
        Cells(Dligne, 10) = ModeP
        Cells(Dligne, 11) = Mbillard
        Cells(Dligne, 12) = MBar
        Cells(Dligne, 13) = MCours
        Cells(Dligne, 14) = MRepas
        Cells(Dligne, 15) = MOffert
        Cells(Dligne, 17) = MVerse
        TextBox10 = RestePayer
        If RestePayer > 0 Then
            MsgBox "La somme restante à payer est de : " & RestePayer & " €", vbOKOnly + vbInformation, "Information"
        End If
    Else
        MsgBox "Saisie incorrecte", vbOKOnly + vbCritical, "Erreur de saisie"
    End If
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 812
Messages
2 092 309
Membres
105 354
dernier inscrit
Green2