Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Erreur d'exécution 13: type incompatible

9 réponses
Avatar
Pierre
Salut,

Je n'arrive pas a régler mon Erreur d'exécution 13: Type incompatible

En gestion d'erreur je ne suis pas très bon.

j'aimerais intercepter l'erreur d'exécution 13
donner un message (msbox) à l'utilisateur de corriger l'erreure qu'il a
commis

si vous pourriez me mettre un bout de code pour me diriger ver la bonne voix
j'en serais heureux.

9 réponses

Avatar
Patrick Philippot
Pierre wrote:
Je n'arrive pas a régler mon Erreur d'exécution 13: Type incompatible
j'aimerais intercepter l'erreur d'exécution 13
donner un message (msbox) à l'utilisateur de corriger l'erreure qu'il
a commis



Bonjour,

Une erreur de ce type, ce n'est pas une erreur utilisateur mais une
erreur dans votre code. Si vous nous montrez ce code, nous pourrons
peut-être vous aider à le corriger.

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr
Avatar
LE TROLL
Salut,

Le principe du captage d'erreur:

Sub Form_Load()
bis:
On Error GoTo erreur
Err.Raise 13 ' provoqu erreur volontaire
Exit Sub
erreur:
MsgBox "Erreur n° " & Err & vbLf & "Source : " & Err.Source & vbLf &
"Description : " & Err.Description
' si on veut ignorer et continuer
'On Error Resume Next
'GoTo bis
' mettre à 0
'Err.Clear
End Sub

-------------
exemple pratique, tu vas accéder à 1 fichier
--------------
bis:
on error goto erreur1
ouverture fichier en lecture
lit fichier
exit sub
erreur1: ' inexistant
création fichier
goto bis ' lit fichier, ici inutile...
---------


"Pierre" <moldry(supprimer)@hotmail.com> a écrit dans le message de news:
e5gojnE$
Salut,

Je n'arrive pas a régler mon Erreur d'exécution 13: Type incompatible

En gestion d'erreur je ne suis pas très bon.

j'aimerais intercepter l'erreur d'exécution 13
donner un message (msbox) à l'utilisateur de corriger l'erreure qu'il a
commis

si vous pourriez me mettre un bout de code pour me diriger ver la bonne
voix j'en serais heureux.



Avatar
Pierre
Merci sa fonctionne bien

j'ai du déplacer exite Sub
pour éviter que le programme se ferme

bis:
On Error GoTo erreur
Err.Raise 13 ' provoqu erreur volontaire
erreur:
MsgBox "Erreur n° " & Err & vbLf & "Source : " & Err.Source & vbLf &
Exit Sub

"LE TROLL" <le a écrit dans le message de news:
Ob3gT9H$
Salut,

Le principe du captage d'erreur:

Sub Form_Load()
bis:
On Error GoTo erreur
Err.Raise 13 ' provoqu erreur volontaire
Exit Sub
erreur:
MsgBox "Erreur n° " & Err & vbLf & "Source : " & Err.Source & vbLf &
"Description : " & Err.Description
' si on veut ignorer et continuer
'On Error Resume Next
'GoTo bis
' mettre à 0
'Err.Clear
End Sub

-------------
exemple pratique, tu vas accéder à 1 fichier
--------------
bis:
on error goto erreur1
ouverture fichier en lecture
lit fichier
exit sub
erreur1: ' inexistant
création fichier
goto bis ' lit fichier, ici inutile...
---------


"Pierre" <moldry(supprimer)@hotmail.com> a écrit dans le message de news:
e5gojnE$
Salut,

Je n'arrive pas a régler mon Erreur d'exécution 13: Type incompatible

En gestion d'erreur je ne suis pas très bon.

j'aimerais intercepter l'erreur d'exécution 13
donner un message (msbox) à l'utilisateur de corriger l'erreure qu'il a
commis

si vous pourriez me mettre un bout de code pour me diriger ver la bonne
voix j'en serais heureux.







Avatar
LE TROLL
Ah non camarade, dans ton cas tu vas tout droit à l'erreur, s'il n'y a
pas d'erreur = 0, tu vas afficher erreur "0"!!!

On Error GoTo erreur
Err.Raise 13 ' provoque erreur volontaire n°13
erreur:
MsgBox "Erreur n° " & Err & vbLf & "Source : " & Err.Source & vbLf Exit
Sub



Là ça marche mieux avec "goto" + "suite:"
Sinon, tu n'es pas obligé de terminer après une erreur, certaines sont
contournables, faut voir sur quoi ça plante... J'ai mis un goto, tu peux
aussi le faire au gosub ou dans une procédure...

On Error GoTo erreur
Err.Raise 13 ' provoqu erreur volontaire



GOTO SUITE
erreur:
MsgBox "Erreur n° " & Err & vbLf & "Source : " & Err.Source & vbLf


'---> ou reprise en main de la situation...
Exit Sub ' dans tous les cas...


SUITE: ' cntinue le programme...

...........ou encore............
On Error GoTo erreur
Err.Raise 13 ' provoqu erreur volontaire


if erreur <> 0 then
erreur:
MsgBox "Erreur n° " & Err & vbLf & "Source : " & Err.Source & vbLf
Exit Sub
endif
' suite...
------------

"Pierre" <moldry(supprimer)@hotmail.com> a écrit dans le message de news:
entDDZJ$
Merci sa fonctionne bien

j'ai du déplacer exite Sub
pour éviter que le programme se ferme

bis:
On Error GoTo erreur
Err.Raise 13 ' provoqu erreur volontaire
erreur:
MsgBox "Erreur n° " & Err & vbLf & "Source : " & Err.Source & vbLf &
Exit Sub

"LE TROLL" <le a écrit dans le message de news:
Ob3gT9H$
Salut,

Le principe du captage d'erreur:

Sub Form_Load()
bis:
On Error GoTo erreur
Err.Raise 13 ' provoqu erreur volontaire
Exit Sub
erreur:
MsgBox "Erreur n° " & Err & vbLf & "Source : " & Err.Source & vbLf &
"Description : " & Err.Description
' si on veut ignorer et continuer
'On Error Resume Next
'GoTo bis
' mettre à 0
'Err.Clear
End Sub

-------------
exemple pratique, tu vas accéder à 1 fichier
--------------
bis:
on error goto erreur1
ouverture fichier en lecture
lit fichier
exit sub
erreur1: ' inexistant
création fichier
goto bis ' lit fichier, ici inutile...
---------


"Pierre" <moldry(supprimer)@hotmail.com> a écrit dans le message de news:
e5gojnE$
Salut,

Je n'arrive pas a régler mon Erreur d'exécution 13: Type incompatible

En gestion d'erreur je ne suis pas très bon.

j'aimerais intercepter l'erreur d'exécution 13
donner un message (msbox) à l'utilisateur de corriger l'erreure qu'il a
commis

si vous pourriez me mettre un bout de code pour me diriger ver la bonne
voix j'en serais heureux.











Avatar
Pierre
Tu à raison sa fonctionne pas de la façons que j'ai fais ça. J'avais juste
essayer de planter le programme :o(

Mon programme plante sur un contrôle MaskEdBox si l'utilisateur ne remplie
pas le MaskEdBox
comme il faut le programme se ferme je vais voir avec ta nouvelle version.
je vous revient

"LE TROLL" <le a écrit dans le message de news:
%233epq%23J$
Ah non camarade, dans ton cas tu vas tout droit à l'erreur, s'il n'y a
pas d'erreur = 0, tu vas afficher erreur "0"!!!

On Error GoTo erreur
Err.Raise 13 ' provoque erreur volontaire n°13
erreur:
MsgBox "Erreur n° " & Err & vbLf & "Source : " & Err.Source & vbLf Exit
Sub



Là ça marche mieux avec "goto" + "suite:"
Sinon, tu n'es pas obligé de terminer après une erreur, certaines sont
contournables, faut voir sur quoi ça plante... J'ai mis un goto, tu peux
aussi le faire au gosub ou dans une procédure...

On Error GoTo erreur
Err.Raise 13 ' provoqu erreur volontaire



GOTO SUITE
erreur:
MsgBox "Erreur n° " & Err & vbLf & "Source : " & Err.Source & vbLf


'---> ou reprise en main de la situation...
Exit Sub ' dans tous les cas...


SUITE: ' cntinue le programme...

...........ou encore............
On Error GoTo erreur
Err.Raise 13 ' provoqu erreur volontaire


if erreur <> 0 then
erreur:
MsgBox "Erreur n° " & Err & vbLf & "Source : " & Err.Source & vbLf
Exit Sub
endif
' suite...
------------

"Pierre" <moldry(supprimer)@hotmail.com> a écrit dans le message de news:
entDDZJ$
Merci sa fonctionne bien

j'ai du déplacer exite Sub
pour éviter que le programme se ferme

bis:
On Error GoTo erreur
Err.Raise 13 ' provoqu erreur volontaire
erreur:
MsgBox "Erreur n° " & Err & vbLf & "Source : " & Err.Source & vbLf &
Exit Sub

"LE TROLL" <le a écrit dans le message de news:
Ob3gT9H$
Salut,

Le principe du captage d'erreur:

Sub Form_Load()
bis:
On Error GoTo erreur
Err.Raise 13 ' provoqu erreur volontaire
Exit Sub
erreur:
MsgBox "Erreur n° " & Err & vbLf & "Source : " & Err.Source & vbLf &
"Description : " & Err.Description
' si on veut ignorer et continuer
'On Error Resume Next
'GoTo bis
' mettre à 0
'Err.Clear
End Sub

-------------
exemple pratique, tu vas accéder à 1 fichier
--------------
bis:
on error goto erreur1
ouverture fichier en lecture
lit fichier
exit sub
erreur1: ' inexistant
création fichier
goto bis ' lit fichier, ici inutile...
---------


"Pierre" <moldry(supprimer)@hotmail.com> a écrit dans le message de
news: e5gojnE$
Salut,

Je n'arrive pas a régler mon Erreur d'exécution 13: Type incompatible

En gestion d'erreur je ne suis pas très bon.

j'aimerais intercepter l'erreur d'exécution 13
donner un message (msbox) à l'utilisateur de corriger l'erreure qu'il a
commis

si vous pourriez me mettre un bout de code pour me diriger ver la bonne
voix j'en serais heureux.















Avatar
LE TROLL
Re-suite

Pierre, je ne sais pas ce que c'est que ton truc, mais si c'est un mask
d'écran de saisi dans box_quelque_chose, et que si c'est vide ça plante au
n°13, voici ce qu'il faut faire en gros:

debut:
on error goto erreur
objet.x_box ' truc qui cloche, si erreur, grâce au "on error", va à
adresse "erreur:"
goto suite ' si tout est bon
'
erreur: ' si c'est as ok
if err = 13 then
msgbox "tu engueules l'utilisateur", vbexclamation
err.clear 'rab err = 0
objet.x_box.SetFocus ' tu refiles le focus à l'objet
goto debut: ' pas cerain que ce soit utile, vois, je ne suis pas
dans mon éditeur, je ne teste pas...
endif
exit sub ' si jamais 1 autre err <> de 0 arrive...
'
sute: 'on continue... (err = 0)
-------------

Si tu as un problème, envoies, je te fais avec l'éditeur...
------------- ng75 AROBASE noos.fr

"Pierre" <moldry(supprimer)@hotmail.com> a écrit dans le message de news:
eaNDGFK$
Tu à raison sa fonctionne pas de la façons que j'ai fais ça. J'avais juste
essayer de planter le programme :o(

Mon programme plante sur un contrôle MaskEdBox si l'utilisateur ne remplie
pas le MaskEdBox
comme il faut le programme se ferme je vais voir avec ta nouvelle version.
je vous revient

"LE TROLL" <le a écrit dans le message de news:
%233epq%23J$
Ah non camarade, dans ton cas tu vas tout droit à l'erreur, s'il n'y a
pas d'erreur = 0, tu vas afficher erreur "0"!!!

On Error GoTo erreur
Err.Raise 13 ' provoque erreur volontaire n°13
erreur:
MsgBox "Erreur n° " & Err & vbLf & "Source : " & Err.Source & vbLf Exit
Sub



Là ça marche mieux avec "goto" + "suite:"
Sinon, tu n'es pas obligé de terminer après une erreur, certaines sont
contournables, faut voir sur quoi ça plante... J'ai mis un goto, tu peux
aussi le faire au gosub ou dans une procédure...

On Error GoTo erreur
Err.Raise 13 ' provoqu erreur volontaire



GOTO SUITE
erreur:
MsgBox "Erreur n° " & Err & vbLf & "Source : " & Err.Source & vbLf


'---> ou reprise en main de la situation...
Exit Sub ' dans tous les cas...


SUITE: ' cntinue le programme...

...........ou encore............
On Error GoTo erreur
Err.Raise 13 ' provoqu erreur volontaire


if erreur <> 0 then
erreur:
MsgBox "Erreur n° " & Err & vbLf & "Source : " & Err.Source & vbLf
Exit Sub
endif
' suite...
------------

"Pierre" <moldry(supprimer)@hotmail.com> a écrit dans le message de news:
entDDZJ$
Merci sa fonctionne bien

j'ai du déplacer exite Sub
pour éviter que le programme se ferme

bis:
On Error GoTo erreur
Err.Raise 13 ' provoqu erreur volontaire
erreur:
MsgBox "Erreur n° " & Err & vbLf & "Source : " & Err.Source & vbLf &
Exit Sub

"LE TROLL" <le a écrit dans le message de news:
Ob3gT9H$
Salut,

Le principe du captage d'erreur:

Sub Form_Load()
bis:
On Error GoTo erreur
Err.Raise 13 ' provoqu erreur volontaire
Exit Sub
erreur:
MsgBox "Erreur n° " & Err & vbLf & "Source : " & Err.Source & vbLf &
"Description : " & Err.Description
' si on veut ignorer et continuer
'On Error Resume Next
'GoTo bis
' mettre à 0
'Err.Clear
End Sub

-------------
exemple pratique, tu vas accéder à 1 fichier
--------------
bis:
on error goto erreur1
ouverture fichier en lecture
lit fichier
exit sub
erreur1: ' inexistant
création fichier
goto bis ' lit fichier, ici inutile...
---------


"Pierre" <moldry(supprimer)@hotmail.com> a écrit dans le message de
news: e5gojnE$
Salut,

Je n'arrive pas a régler mon Erreur d'exécution 13: Type incompatible

En gestion d'erreur je ne suis pas très bon.

j'aimerais intercepter l'erreur d'exécution 13
donner un message (msbox) à l'utilisateur de corriger l'erreure qu'il
a commis

si vous pourriez me mettre un bout de code pour me diriger ver la
bonne voix j'en serais heureux.



















Avatar
Pierre
Le Troll
Bon ça semi fonctionne
comment je fait pour savoir qu'elle contrôle MaskEdBox qui plante
je vous met mon code:

Dim FileNum As Integer
Dim RecLength As Long
Dim MaxSize, T

Debut:
On Error GoTo Erreur
'MskbJours(0) ::ici sa me donne un erreure
GoTo Suite

Erreur:

If Err = 13 Then

MsgBox "Attention veillez remplire les contrôles d'heures comme suit
08.00. Tu voit pas que tu fait planter le programme #$%?&$%#@", vbCritical,
"Erreur"
Err.Clear
MskbJours(0).SetFocus :: ici je vois pas comment fair disigner le
bon contrôle j'ai MskbJours(0) à (6)
'GoTo Debut ::J'ai ignorer cette ligne redonne l'erreure deux fois:.

End If

Exit Sub

Suite:

FileNum = FreeFile
RecLength = Len(FicheTemps)

'::Ouverture de la DB Temp:.
Open App.Path & "FicheTemps.BD" For Random As FileNum Len = RecLength
MaxSize = LOF(FileNum) Len(FicheTemps)

For T = MaxSize To step - 1
Seek FileNum, T
Get FileNum, , RecLength
Next T

'::Vérifie dans la DB qu'il n'auras pas de doublon ou d'entré éroné:.
For i = 1 To T
Get FileNum, i, FicheTemps
If MskbID.Text = FicheTemps.IdEmployer Then
If DtPDu.Value = FicheTemps.Du Then
If DtpAu.Value = FicheTemps.Au Then
MsgBox "problème avec " & MskbID.Text & " Du " &
DtPDu.Value & " au " & DtpAu.Value, vbCritical, "Erreur"
GoTo Line1
End If
End If
End If
Next i


T = T + 1
With FicheTemps

.IdEmployer = MskbID.Text
.Du = DtPDu.Value
.Au = DtpAu.Value
.Dima = MskbJours(0).Text
.Lun = MskbJours(1).Text
.Mar = MskbJours(2).Text
.Mer = MskbJours(3).Text
.Jeu = MskbJours(4).Text
.Ven = MskbJours(5).Text
.Sam = MskbJours(6).Text
.Total = TxtTotal.Text
.DimRetard = ChkRetard(0).Value
.LunRetard = ChkRetard(1).Value
.MarRetard = ChkRetard(2).Value
.MerRetard = ChkRetard(3).Value
.JeuRetard = ChkRetard(4).Value
.VenRetard = ChkRetard(5).Value
.SamRetard = ChkRetard(6).Value

End With

Put FileNum, T, FicheTemps

Line1:
Close FileNum

RemplieListviewTemps
RemplieListviewConge
CalculeRetard


"LE TROLL" <le a écrit dans le message de news:
%23206%23OK$
Re-suite

Pierre, je ne sais pas ce que c'est que ton truc, mais si c'est un mask
d'écran de saisi dans box_quelque_chose, et que si c'est vide ça plante au
n°13, voici ce qu'il faut faire en gros:

debut:
on error goto erreur
objet.x_box ' truc qui cloche, si erreur, grâce au "on error", va à
adresse "erreur:"
goto suite ' si tout est bon
'
erreur: ' si c'est as ok
if err = 13 then
msgbox "tu engueules l'utilisateur", vbexclamation
err.clear 'rab err = 0
objet.x_box.SetFocus ' tu refiles le focus à l'objet
goto debut: ' pas cerain que ce soit utile, vois, je ne suis pas
dans mon éditeur, je ne teste pas...
endif
exit sub ' si jamais 1 autre err <> de 0 arrive...
'
sute: 'on continue... (err = 0)
-------------

Si tu as un problème, envoies, je te fais avec l'éditeur...
------------- ng75 AROBASE noos.fr

"Pierre" <moldry(supprimer)@hotmail.com> a écrit dans le message de news:
eaNDGFK$
Tu à raison sa fonctionne pas de la façons que j'ai fais ça. J'avais
juste essayer de planter le programme :o(

Mon programme plante sur un contrôle MaskEdBox si l'utilisateur ne
remplie pas le MaskEdBox
comme il faut le programme se ferme je vais voir avec ta nouvelle
version.
je vous revient

"LE TROLL" <le a écrit dans le message de news:
%233epq%23J$
Ah non camarade, dans ton cas tu vas tout droit à l'erreur, s'il n'y
a pas d'erreur = 0, tu vas afficher erreur "0"!!!

On Error GoTo erreur
Err.Raise 13 ' provoque erreur volontaire n°13
erreur:
MsgBox "Erreur n° " & Err & vbLf & "Source : " & Err.Source & vbLf Exit
Sub



Là ça marche mieux avec "goto" + "suite:"
Sinon, tu n'es pas obligé de terminer après une erreur, certaines sont
contournables, faut voir sur quoi ça plante... J'ai mis un goto, tu peux
aussi le faire au gosub ou dans une procédure...

On Error GoTo erreur
Err.Raise 13 ' provoqu erreur volontaire



GOTO SUITE
erreur:
MsgBox "Erreur n° " & Err & vbLf & "Source : " & Err.Source & vbLf


'---> ou reprise en main de la situation...
Exit Sub ' dans tous les cas...


SUITE: ' cntinue le programme...

...........ou encore............
On Error GoTo erreur
Err.Raise 13 ' provoqu erreur volontaire


if erreur <> 0 then
erreur:
MsgBox "Erreur n° " & Err & vbLf & "Source : " & Err.Source &
vbLf
Exit Sub
endif
' suite...
------------

"Pierre" <moldry(supprimer)@hotmail.com> a écrit dans le message de
news: entDDZJ$
Merci sa fonctionne bien

j'ai du déplacer exite Sub
pour éviter que le programme se ferme

bis:
On Error GoTo erreur
Err.Raise 13 ' provoqu erreur volontaire
erreur:
MsgBox "Erreur n° " & Err & vbLf & "Source : " & Err.Source & vbLf &
Exit Sub

"LE TROLL" <le a écrit dans le message de news:
Ob3gT9H$
Salut,

Le principe du captage d'erreur:

Sub Form_Load()
bis:
On Error GoTo erreur
Err.Raise 13 ' provoqu erreur volontaire
Exit Sub
erreur:
MsgBox "Erreur n° " & Err & vbLf & "Source : " & Err.Source & vbLf &
"Description : " & Err.Description
' si on veut ignorer et continuer
'On Error Resume Next
'GoTo bis
' mettre à 0
'Err.Clear
End Sub

-------------
exemple pratique, tu vas accéder à 1 fichier
--------------
bis:
on error goto erreur1
ouverture fichier en lecture
lit fichier
exit sub
erreur1: ' inexistant
création fichier
goto bis ' lit fichier, ici inutile...
---------


"Pierre" <moldry(supprimer)@hotmail.com> a écrit dans le message de
news: e5gojnE$
Salut,

Je n'arrive pas a régler mon Erreur d'exécution 13: Type incompatible

En gestion d'erreur je ne suis pas très bon.

j'aimerais intercepter l'erreur d'exécution 13
donner un message (msbox) à l'utilisateur de corriger l'erreure qu'il
a commis

si vous pourriez me mettre un bout de code pour me diriger ver la
bonne voix j'en serais heureux.























Avatar
Pierre
Merci Le Troll
pour l"exemple de code, que je vais étudier

j'utilise les maskEdBox pour la rapidité et non pour la beauté
utiliser un combobox pour entrer plus de 80 employer à 5 jours semaine sa
fait 800 fois a ouvrir et a chercher la bonne heure.
je serais pas aimer si je fait ça.

avec le maskEdBox je n'est de besoin que tu clavier numérique, rapide et
efficace sauf quand ont a un problème de code :o(

merci pour ton aide je vais potasser sur les bouts de codes d'erreurs que tu
viens de me refiler.
ton aide m'a été précieux.

j'ai apprit qu'elle que chose aujourd'hui. merci


"LE TROLL" <le a écrit dans le message de news:
%23spUfbR$
Bonjour Pierre,

Ah les mask, en plus c'est pas beau, lol, déjà tu peux éliminer tous
tes problèmes, soit en fixant la saisie par de comboBox, soit en la
supervisant par le contrôle de la saisie, ou encore en mettant les objets
appropriés "calendar":

Voici un code, ci-joint la source
--------------------------------------
' ExpAideSaisieDates form1
'
Option Explicit
'
Dim i As Long
Dim nomJour As String
Dim Jour As Byte
'


Sub Form_Load()
Frame1.Visible = False
Frame2.Visible = False
Frame3.Visible = False
End Sub


Sub NomDuJour()
Select Case Jour
Case 1: nomJour = "dim"
Case 2: nomJour = "lun"
Case 3: nomJour = "mar"
Case 4: nomJour = "mer"
Case 5: nomJour = "jeu"
Case 6: nomJour = "ven"
Case 7: nomJour = "sam"
End Select
End Sub


'###########################################################################
'############### SAISIE CALENDRIER
#########################################
'---------------------------------------------------------------------------
Sub m_calendar_Click() ' menu saisie par calendar
Frame1.Visible = True
Frame2.Visible = False
Frame3.Visible = False
'
Calendar1.Day = Day(Date) ' j
Calendar1.Month = Month(Date) ' m
Calendar1.Year = Year(Date) ' a4
'
Combo1.Clear
Combo2.Clear
For i = 0 To 59
If i < 24 Then Combo1.AddItem Format(i, "00") 'h
Combo2.AddItem Format(i, "00") 'n
Next i
' initialisation
Combo1.ListIndex = Hour(Time) ' h
Combo2.ListIndex = Minute(Time) ' n
End Sub


'###########################################################################
'############### SAISIE COMBOBOX
###########################################
'---------------------------------------------------------------------------
Sub m_combo_Click() ' menu saisie par combo
Frame1.Visible = False
Frame2.Visible = True
Frame3.Visible = False
'
Combo3.Clear
Combo4.Clear
Combo5.Clear
Combo6.Clear
Combo7.Clear
For i = 0 To 59
If i > 0 And i < 32 Then Combo3.AddItem Format(i, "00") 'j
If i > 0 And i < 13 Then Combo4.AddItem Format(i, "00") 'm
Combo5.AddItem Format((i + 2000), "0000") 'a4 (de 2000 à 2000 + 59(i))
If i < 24 Then Combo6.AddItem Format(i, "00") 'h
Combo7.AddItem Format(i, "00") 'n
Next i
' initialisation
Combo3.ListIndex = Day(Date) - 1 ' numérote à partir de 0 le combo j
Combo4.ListIndex = Month(Date) - 1
Combo5.ListIndex = Year(Date) - 2000
Combo6.ListIndex = Hour(Time) ' h
Combo7.ListIndex = Minute(Time) ' n
End Sub


Sub Command1_Click() ' valide saisie frame1
Jour = Weekday(Calendar1.Value)
Call NomDuJour
Label4.Caption = nomJour & " " & Calendar1.Value & " : " &
Format(Combo1.ListIndex, "00") & " h " & Format(Combo2.ListIndex, "00")
End Sub


Sub Command2_Click() 'valide saisie frame2
Dim jj As Byte
Dim mm As Byte
Dim a4 As Integer
'
jj = Combo3.ListIndex + 1
mm = Combo4.ListIndex + 1
a4 = Combo5.ListIndex + 2000
Jour = Weekday(jj & "/" & mm & "/" & a4)
Call NomDuJour
Label5.Caption = nomJour & " " & Format(Combo3.ListIndex + 1, "00") & "/"
& Format(Combo4.ListIndex + 1, "00") & "/" & Combo5.ListIndex + 2000
End Sub


'###########################################################################
'############### SAISIE TEXT
###############################################
'---------------------------------------------------------------------------
Sub m_text_Click() 'frame3 saisie text
Frame1.Visible = False
Frame2.Visible = False
Frame3.Visible = True
Text1 = ""
Text2 = ""
End Sub


Sub Text1_KeyPress(KeyAscii As Integer)
' évènement "KeyPress de text1, chaque touche = code ascii dans KeyAscii"
If KeyAscii = 8 Then Exit Sub ' effacement
If KeyAscii = 13 Then
KeyAscii = 0 ' evite le bang
Text2.SetFocus
End If
If KeyAscii < 47 Or KeyAscii > 57 Then
KeyAscii = 0
Exit Sub
End If
End Sub


Sub Text2_KeyPress(KeyAscii As Integer)
' évènement "KeyPress de text1, chaque touche = code ascii dans KeyAscii"
Select Case KeyAscii
Case 8: Exit Sub ' effacement
Case 13
KeyAscii = 0 ' evite le bang
Command3.SetFocus
Case 48 To 57: Exit Sub
Case 72, 104: Exit Sub
End Select
KeyAscii = 0
End Sub


Sub Command3_Click() 'valider saisie textes
Dim testDate As Date
Dim hh As Byte
Dim separe As String * 1
Dim mm As Byte
'
' NOTA BENE
' pour l'heure il est plus logique de prendre
' le point comme sépateur, car ainsi on reste
' au clavier numérique, ou encore et mieux,
' de prendre deux TextBox, l'un pour les heures,
' l'autre pour les minutes
' officiellement c'est ":" qui sépare l'heure
' On peut avec les fonctions qui gèrent les dates,
' balancer directement (date + heure), mais ça
' complique les tests de localisation d'erreur...
'
On Error GoTo erreur1
testDate = Text1
GoTo suite1
erreur1:
MsgBox "Date (jj/jj/aaaa) invalide", vbExclamation
Err.Clear
Text1.SetFocus
Exit Sub
'
suite1:
' la variable date va mettre au format, contrôler
' la validité et refuser une date inexistante (3 avantages)
Text1 = testDate
On Error GoTo erreur2
' morceau_extrait = MID(chaine, début, longueur)
hh = Val(Mid(Text2, 1, 2))
mm = Val(Mid(Text2, 4, 2))
GoTo suite2
'
erreur2:
MsgBox "Heure (00H00) invalide", vbExclamation
Err.Clear
Text2.SetFocus
Exit Sub
'
suite2:
separe = Mid(Text2, 3, 1)
If separe = "H" Then separe = "h"
If separe <> "h" Then GoTo erreur2
If Len(Text2) <> 5 Then GoTo erreur2
'
Text2 = Format(hh, "00") & separe & Format(mm, "00")
Jour = Weekday(Text1)
Call NomDuJour
Label8.Caption = nomJour & " " & Text1 & " : " & Text2
End Sub

'-------------
' explications
'-------------
' ---> Pour contrôler les dates tu peux faire:
' dim dateMini as date
' dim dateMaxi as date
' dim laDate as date
' '
' dateMini = "12/12/2004"
' dateMini = "23/01/2006"
' if laDate < dateMini or laDate > dateMaxi then exit sub
' '
' ---> Pour contrôler les heures tu peux faire:
' dim hh as byte
' dim mn as byte
' dim mnTotal as integer
' hh = heures_saisies
' mn = minutes_saisies
' mnTotal = (hh * 60) + mn
' if mnTotal < à X or mnTotal > Y then exit sub

' ---> Ne pas omettre les propriétés de chaque objet
' tabStop si le focus doit s'y arrêter
' TabIndex pour l'odre des focus quand tu fais <Tab> =suivant...






Avatar
LE TROLL
Pierre,

Avec le calendar, tu as la journée en un click, si tu saisis pour au
moins le lendemain, tu as juste les heures à rentrer, à cette fin, et sauf
s'il existe déjà un tel objet, avec un pavé heure et un pavé minutes, en
trois clicks tu as la date et l'heure, et toute autre heure en 2 clicks,
c'est plus rapide qu'une saisie entière à la main...

Sinon, on peut aussi prendre la conception a contrario, à savoir: entrer
pour chaque dates des heures supposées, et si ce n'est pas fait, on corrige
seulement ceux qui n'ont pas fait, en dernier tu peux peut être gérer par
quart d'heure, là ça te permet (en présumant que ça ne travaille pas 24
heures), d'avoir l'heure en 1 click, etc...
-------

"Pierre" <moldry(supprimer)@hotmail.com> a écrit dans le message de news:
uiEmWcS$
Merci Le Troll
pour l"exemple de code, que je vais étudier

j'utilise les maskEdBox pour la rapidité et non pour la beauté
utiliser un combobox pour entrer plus de 80 employer à 5 jours semaine sa
fait 800 fois a ouvrir et a chercher la bonne heure.
je serais pas aimer si je fait ça.

avec le maskEdBox je n'est de besoin que tu clavier numérique, rapide et
efficace sauf quand ont a un problème de code :o(

merci pour ton aide je vais potasser sur les bouts de codes d'erreurs que
tu viens de me refiler.
ton aide m'a été précieux.

j'ai apprit qu'elle que chose aujourd'hui. merci


"LE TROLL" <le a écrit dans le message de news:
%23spUfbR$
Bonjour Pierre,

Ah les mask, en plus c'est pas beau, lol, déjà tu peux éliminer tous
tes problèmes, soit en fixant la saisie par de comboBox, soit en la
supervisant par le contrôle de la saisie, ou encore en mettant les objets
appropriés "calendar":

Voici un code, ci-joint la source
--------------------------------------
' ExpAideSaisieDates form1
'
Option Explicit
'
Dim i As Long
Dim nomJour As String
Dim Jour As Byte
'


Sub Form_Load()
Frame1.Visible = False
Frame2.Visible = False
Frame3.Visible = False
End Sub


Sub NomDuJour()
Select Case Jour
Case 1: nomJour = "dim"
Case 2: nomJour = "lun"
Case 3: nomJour = "mar"
Case 4: nomJour = "mer"
Case 5: nomJour = "jeu"
Case 6: nomJour = "ven"
Case 7: nomJour = "sam"
End Select
End Sub


'###########################################################################
'############### SAISIE CALENDRIER
#########################################
'---------------------------------------------------------------------------
Sub m_calendar_Click() ' menu saisie par calendar
Frame1.Visible = True
Frame2.Visible = False
Frame3.Visible = False
'
Calendar1.Day = Day(Date) ' j
Calendar1.Month = Month(Date) ' m
Calendar1.Year = Year(Date) ' a4
'
Combo1.Clear
Combo2.Clear
For i = 0 To 59
If i < 24 Then Combo1.AddItem Format(i, "00") 'h
Combo2.AddItem Format(i, "00") 'n
Next i
' initialisation
Combo1.ListIndex = Hour(Time) ' h
Combo2.ListIndex = Minute(Time) ' n
End Sub


'###########################################################################
'############### SAISIE COMBOBOX
###########################################
'---------------------------------------------------------------------------
Sub m_combo_Click() ' menu saisie par combo
Frame1.Visible = False
Frame2.Visible = True
Frame3.Visible = False
'
Combo3.Clear
Combo4.Clear
Combo5.Clear
Combo6.Clear
Combo7.Clear
For i = 0 To 59
If i > 0 And i < 32 Then Combo3.AddItem Format(i, "00") 'j
If i > 0 And i < 13 Then Combo4.AddItem Format(i, "00") 'm
Combo5.AddItem Format((i + 2000), "0000") 'a4 (de 2000 à 2000 + 59(i))
If i < 24 Then Combo6.AddItem Format(i, "00") 'h
Combo7.AddItem Format(i, "00") 'n
Next i
' initialisation
Combo3.ListIndex = Day(Date) - 1 ' numérote à partir de 0 le combo j
Combo4.ListIndex = Month(Date) - 1
Combo5.ListIndex = Year(Date) - 2000
Combo6.ListIndex = Hour(Time) ' h
Combo7.ListIndex = Minute(Time) ' n
End Sub


Sub Command1_Click() ' valide saisie frame1
Jour = Weekday(Calendar1.Value)
Call NomDuJour
Label4.Caption = nomJour & " " & Calendar1.Value & " : " &
Format(Combo1.ListIndex, "00") & " h " & Format(Combo2.ListIndex, "00")
End Sub


Sub Command2_Click() 'valide saisie frame2
Dim jj As Byte
Dim mm As Byte
Dim a4 As Integer
'
jj = Combo3.ListIndex + 1
mm = Combo4.ListIndex + 1
a4 = Combo5.ListIndex + 2000
Jour = Weekday(jj & "/" & mm & "/" & a4)
Call NomDuJour
Label5.Caption = nomJour & " " & Format(Combo3.ListIndex + 1, "00") &
"/" & Format(Combo4.ListIndex + 1, "00") & "/" & Combo5.ListIndex + 2000
End Sub


'###########################################################################
'############### SAISIE TEXT
###############################################
'---------------------------------------------------------------------------
Sub m_text_Click() 'frame3 saisie text
Frame1.Visible = False
Frame2.Visible = False
Frame3.Visible = True
Text1 = ""
Text2 = ""
End Sub


Sub Text1_KeyPress(KeyAscii As Integer)
' évènement "KeyPress de text1, chaque touche = code ascii dans
KeyAscii"
If KeyAscii = 8 Then Exit Sub ' effacement
If KeyAscii = 13 Then
KeyAscii = 0 ' evite le bang
Text2.SetFocus
End If
If KeyAscii < 47 Or KeyAscii > 57 Then
KeyAscii = 0
Exit Sub
End If
End Sub


Sub Text2_KeyPress(KeyAscii As Integer)
' évènement "KeyPress de text1, chaque touche = code ascii dans
KeyAscii"
Select Case KeyAscii
Case 8: Exit Sub ' effacement
Case 13
KeyAscii = 0 ' evite le bang
Command3.SetFocus
Case 48 To 57: Exit Sub
Case 72, 104: Exit Sub
End Select
KeyAscii = 0
End Sub


Sub Command3_Click() 'valider saisie textes
Dim testDate As Date
Dim hh As Byte
Dim separe As String * 1
Dim mm As Byte
'
' NOTA BENE
' pour l'heure il est plus logique de prendre
' le point comme sépateur, car ainsi on reste
' au clavier numérique, ou encore et mieux,
' de prendre deux TextBox, l'un pour les heures,
' l'autre pour les minutes
' officiellement c'est ":" qui sépare l'heure
' On peut avec les fonctions qui gèrent les dates,
' balancer directement (date + heure), mais ça
' complique les tests de localisation d'erreur...
'
On Error GoTo erreur1
testDate = Text1
GoTo suite1
erreur1:
MsgBox "Date (jj/jj/aaaa) invalide", vbExclamation
Err.Clear
Text1.SetFocus
Exit Sub
'
suite1:
' la variable date va mettre au format, contrôler
' la validité et refuser une date inexistante (3 avantages)
Text1 = testDate
On Error GoTo erreur2
' morceau_extrait = MID(chaine, début, longueur)
hh = Val(Mid(Text2, 1, 2))
mm = Val(Mid(Text2, 4, 2))
GoTo suite2
'
erreur2:
MsgBox "Heure (00H00) invalide", vbExclamation
Err.Clear
Text2.SetFocus
Exit Sub
'
suite2:
separe = Mid(Text2, 3, 1)
If separe = "H" Then separe = "h"
If separe <> "h" Then GoTo erreur2
If Len(Text2) <> 5 Then GoTo erreur2
'
Text2 = Format(hh, "00") & separe & Format(mm, "00")
Jour = Weekday(Text1)
Call NomDuJour
Label8.Caption = nomJour & " " & Text1 & " : " & Text2
End Sub

'-------------
' explications
'-------------
' ---> Pour contrôler les dates tu peux faire:
' dim dateMini as date
' dim dateMaxi as date
' dim laDate as date
' '
' dateMini = "12/12/2004"
' dateMini = "23/01/2006"
' if laDate < dateMini or laDate > dateMaxi then exit sub
' '
' ---> Pour contrôler les heures tu peux faire:
' dim hh as byte
' dim mn as byte
' dim mnTotal as integer
' hh = heures_saisies
' mn = minutes_saisies
' mnTotal = (hh * 60) + mn
' if mnTotal < à X or mnTotal > Y then exit sub

' ---> Ne pas omettre les propriétés de chaque objet
' tabStop si le focus doit s'y arrêter
' TabIndex pour l'odre des focus quand tu fais <Tab> =suivant...