Excel et code VB
vcloclo1
Messages postés
526
Date d'inscription
Statut
Membre
Dernière intervention
-
vcloclo1 Messages postés 526 Date d'inscription Statut Membre Dernière intervention -
vcloclo1 Messages postés 526 Date d'inscription Statut Membre Dernière intervention -
Salut,
J'ai créer un code VB sur un fichier excel, avec un Userform pour inseré des info avec des champ. Sa fait 3 Userforme que je fait les deux premier marche tres bien, mais le 3° a une erreur sur ces ligne :
Sur cette ligne plus particulierement :
Hors mes autre Userform ont le meme code sur cette ligne et j'ai pas d'erreur.
Voici le code en entier :
Pouvez vous me dire d'ou vient le probleme ?
Merci
J'ai créer un code VB sur un fichier excel, avec un Userform pour inseré des info avec des champ. Sa fait 3 Userforme que je fait les deux premier marche tres bien, mais le 3° a une erreur sur ces ligne :
Worksheets("Repro").Select
Range("A6").End(xlDown).Offset(1, 0) = Format(TextBox1.Value, "dd/mm/yyyy") 'Né le
Range("A6").End(xlDown).Offset(0, 2) = Format(ComboBox1.Value) 'De
Range("A6").End(xlDown).Offset(0, 3) = Format(TextBox2.Value, NumberFormat) 'Sexe
Range("A6").End(xlDown).Offset(0, 4) = TextBox3 'Puce
End Sub
Sur cette ligne plus particulierement :
Range("A6").End(xlDown).Offset(1, 0) = Format(TextBox1.Value, "dd/mm/yyyy") 'Né le
Hors mes autre Userform ont le meme code sur cette ligne et j'ai pas d'erreur.
Voici le code en entier :
' Supprimer la croix de l'UserForm
Private Declare Function GetWindowLongA Lib "User32" _
(ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLongA Lib "User32" _
(ByVal hWnd As Long, ByVal nIndex As Long, _
ByVal dwNewLong As Long) As Long
Private Declare Function FindWindowA Lib "User32" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
' Supprimer la croix de l'UserForm suite
Private Sub UserForm_Initialize()
Dim hWnd As Long
hWnd = FindWindowA("Thunder" & IIf(Application.Version Like "8*", _
"X", "D") & "Frame", Me.Caption)
SetWindowLongA hWnd, -16, GetWindowLongA(hWnd, -16) And &HFFF7FFFF
End Sub
'Liste déroulante de "De"
Private Sub ComboBox1_Enter()
Dim c As Range
'Pour nettoyer la combobox, sinon les items s'ajoutent à l'infini
ComboBox1.Clear
Application.ScreenUpdating = False
Worksheets("Dépenses&RecettesChiens").Select
If Range("G6") <> "" Then
'On détermine la longueur de la liste existante en colonne F12
For Each c In Range("G6", Range("G6").End(xlDown).Address)
'On ajoute les items qui se trouvent déjà dans la liste
ComboBox1.AddItem c
Next
End If
End Sub
'Bouton "Effacer" pour vider les champs de la boite de dialogue
Private Sub Effacer_Click()
On Error Resume Next
'Pour nettoyer le contenu de la boite de dialogue
TextBox1 = "jj/mm/aaaa" 'Né le
ComboBox1 = "" 'De
TextBox2 = "" 'Sexe
TextBox3 = "" 'Puce
End Sub
'Bouton "Ok" pour inserer/valider
Private Sub Ok_Click()
Dim c As Range
'Si le champ Né le est vide
If TextBox1.Value = "" Then
MsgBox "Champ ''Né le'' non renseigner"
Exit Sub
End If
'Si le champ Né le n'a pas le bon format
If TextBox1.Value = "dd/mm/yyyy" Then
MsgBox "Champ ''Né le'' non renseigner, Format Incorrect"
Exit Sub
End If
'Si le champ De est vide
If ComboBox1.Value = "" Then
MsgBox "Champ ''De'' non renseigner"
Exit Sub
End If
'Si le champ Sexe est vide
If TextBox2.Value = "" Then
MsgBox "Champ ''Sexe'' non renseigner"
Exit Sub
End If
'Si le champ date na pas le bon format
If Not IsDate(TextBox1) Then
'On affiche le message d'erreur
MsgBox "Format de la date ''Né le'' Incorrect"
'Option 1 : Si on veut vidé le champ
'TextBox1 = ""
'Option 2 : Si on veut affiché l'exemple du format
TextBox1 = "jj/mm/aaaa"
Exit Sub
End If
Worksheets("Repro").Select
'Sert a l'insertion dans la colonne aproprier
Range("A6").End(xlDown).Offset(1, 0) = Format(TextBox1.Value, "dd/mm/yyyy") 'Né le
Range("A6").End(xlDown).Offset(0, 2) = Format(ComboBox1.Value) 'De
Range("A6").End(xlDown).Offset(0, 3) = Format(TextBox2.Value, NumberFormat) 'Sexe
Range("A6").End(xlDown).Offset(0, 4) = TextBox3 'Puce
End Sub
'Bouton Quitter pour fermer la boite de dialogue
Private Sub Quitter_Click()
Unload UserForm3
End Sub
Pouvez vous me dire d'ou vient le probleme ?
Merci
A voir également:
- Excel et code VB
- Code ascii - Guide
- Word et excel gratuit - Guide
- Liste déroulante excel - Guide
- Si et ou excel - Guide
- Code puk bloqué - Guide
8 réponses
Autant pour moi, j'avais complement oublier lol
Voici les captures
http://img87.imageshack.us/img87/5047/20100501152906.jpg
http://img260.imageshack.us/img260/3660/20100501152925.jpg
Voici les captures
http://img87.imageshack.us/img87/5047/20100501152906.jpg
http://img260.imageshack.us/img260/3660/20100501152925.jpg
Re,
En fait format sert à formater un affichage pour un nombre et retourne une chaine.
Toi tu veux l'inverse, cad transformer une chaine en une date numérique valide.
Utilise cdate() et met le format d'affichage voulu dans la cellule.
eric
En fait format sert à formater un affichage pour un nombre et retourne une chaine.
Toi tu veux l'inverse, cad transformer une chaine en une date numérique valide.
Utilise cdate() et met le format d'affichage voulu dans la cellule.
eric
Pourquoi avec mes autre userform ça marche, j'ai fait la meme chose pourtant.
cdate() je le mets ou exactement ?
Merci
cdate() je le mets ou exactement ?
Merci
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Pourquoi avec mes autre userform ça marche
N'hésite pas à regarder l'aide excel sur les fonctions, elle est très bien faite.
essaie avec :
Range("A6").End(xlDown).Offset(1, 0) = cdate(TextBox1.Value)
N'hésite pas à regarder l'aide excel sur les fonctions, elle est très bien faite.
essaie avec :
Range("A6").End(xlDown).Offset(1, 0) = cdate(TextBox1.Value)
Voici mon autre code fait de la meme maniere et qui fonctionne :
'Liste déroulante de "Libellé"
Private Sub ComboBox1_Enter()
Dim c As Range
'Pour nettoyer la combobox, sinon les items s'ajoutent à l'infini
ComboBox1.Clear
Application.ScreenUpdating = False
'On change de feuil
Worksheets("Paramètre").Select
If Range("A3") <> "" Then
'On détermine la longueur de la liste existante en colonne A
For Each c In Range("A3", Range("A3").End(xlDown).Address)
'On ajoute les items qui se trouvent déjà dans la liste
ComboBox1.AddItem c
Next
End If
'On revient à la bonne feuil
Worksheets("Dépenses&RecettesChiens").Select
Application.ScreenUpdating = True
End Sub
'Liste déroulante de "Nom"
Private Sub ComboBox2_Enter()
Dim c As Range
'Pour nettoyer la combobox, sinon les items s'ajoutent à l'infini
ComboBox2.Clear
Application.ScreenUpdating = False
Worksheets("Dépenses&RecettesChiens").Select
If Range("G6") <> "" Then
'On détermine la longueur de la liste existante en colonne F12
For Each c In Range("G6", Range("G6").End(xlDown).Address)
'On ajoute les items qui se trouvent déjà dans la liste
ComboBox2.AddItem c
Next
End If
End Sub
'Bouton "Effacer" pour vider les champs de la boite de dialogue
Private Sub Effacer_Click()
On Error Resume Next
'Pour nettoyer le contenu de la boite de dialogue
TextBox1 = "jj/mm/aaaa" 'Date
ComboBox1 = "" 'Libellé
TextBox2 = "" 'Somme
ComboBox2 = "" 'Nom
TextBox3 = "" 'Commentaires
End Sub
'Bouton "Ok" pour inserer/valider
Private Sub Ok_Click()
Dim c As Range
'Si le champ Date est vide
If TextBox1.Value = "" Then
MsgBox "Champ ''Date'' non renseigner"
Exit Sub
End If
'Si le champ Date n'a pas le bon format
If TextBox1.Value = "dd/mm/yyyy" Then
MsgBox "Champ ''Date'' non renseigner, Format Incorrect"
Exit Sub
End If
'Si le champ Libellé est vide
If ComboBox1.Value = "" Then
MsgBox "Champ ''Libellé'' non renseigner"
Exit Sub
End If
'Si le champ Somme est vide
If TextBox2.Value = "" Then
MsgBox "Aucune Somme entrée"
Exit Sub
End If
'Si le champ date na pas le bon format
If Not IsDate(TextBox1) Then
'On affiche le message d'erreur
MsgBox "Format de la date Incorrect"
'Option 1 : Si on veut vidé le champ
'TextBox1 = ""
'Option 2 : Si on veut affiché l'exemple du format
TextBox1 = "jj/mm/aaaa"
Exit Sub
End If
Worksheets("Dépenses&RecettesChiens").Select
'Sert a l'insertion dans la colonne aproprier
Range("A3").End(xlDown).Offset(1, 0) = Format(TextBox1.Value, "dd/mm/yyyy") 'Date
Range("A3").End(xlDown).Offset(0, 1) = Format(ComboBox1.Value) 'Libellé
Range("A3").End(xlDown).Offset(0, 2) = Format(TextBox2.Value, NumberFormat) 'Somme
Range("A3").End(xlDown).Offset(0, 3) = ComboBox2 'Nom
Range("A3").End(xlDown).Offset(0, 4) = TextBox3 'Commentaires
End Sub
'Bouton Quitter pour fermer la boite de dialogue
Private Sub Quitter_Click()
Unload UserForm1
End Sub
Difficile de savoir sans avoir le classeur...
Est-ce que le bouton ok où tu mets le code en défaut appartient bien au même formulaire que textbox1 ? Sinon il faut préciser le formulaire : UserForm1.TextBox1.Value
Mais ça ne retire rien à ce que je t'ai dit avant même si ton code fonctionne : format() te retourne une chaine et je pense que c'est du numérique que tu veux.
eric
Est-ce que le bouton ok où tu mets le code en défaut appartient bien au même formulaire que textbox1 ? Sinon il faut préciser le formulaire : UserForm1.TextBox1.Value
Mais ça ne retire rien à ce que je t'ai dit avant même si ton code fonctionne : format() te retourne une chaine et je pense que c'est du numérique que tu veux.
eric