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

erreur d'exécution 13

7 réponses
Avatar
j-pascal
Bonjour,

J'ai un message d'erreur 13 (incompatibilité de type) sur la ligne :

nouvelle_année = InputBox("Entrez une année comprise entre 2007 et 2010")

... si je clique sur "Annuler" au lieu de sélectionner une année !

J'ai essayé avec une macro en enregistrement automatique de voir ce que
générait un "Annuler" dans ce cas, mais je n'ai rien pu en tirer !!

Voici le code (la ligne qui pose problème est à peu près au milieu) :

'----------------------------------------------------------------
Sub NouvelleAnnée()

Dim réponse1 As String
Dim réponse11
Dim nouvelle_année As Integer

réponse1 = MsgBox("Voulez-vous générer une nouvelle année ?", vbYesNo +
vbQuestion, "actualisation")

If réponse1 = vbNo Then

Exit Sub

Else

'---------------------
MsgBox "Cette action va réinitialiser le classeur !"
réponse11 = MsgBox("Voulez-vous vraiment réinitialiser le classeur ?",
vbYesNo + vbQuestion, "actualisation")
If réponse11 = vbNo Then
Exit Sub
Else

nouvelle_année = InputBox("Entrez une année comprise entre 2007 et
2010")
If nouvelle_année = False Then 'ajout 14/08/07
Exit Sub 'ajout 14/08/07
Else 'ajout 14/08/07

Range("A1") = nouvelle_année
'
i = ActiveSheet.Index
For x = 4 To 15

j = Len(Sheets(x + 1).Name)
Sheets(x + 1).Name = Mid(Sheets(x + 1).Name, 1, j - 1) &
Right(Sheets(i).Cells(1, 1).Value, 1)

Next

MsgBox "en cours d'élaboration ..."
End If
End If 'ajout 14/08/07

'---------------------

End If

End Sub
'----------------------------------------------------------------

Merci d'avance pour vos lumières


--
Cordialement @+
JP

7 réponses

Avatar
Daniel
Bonsoir.
La variable "nouvelle_année" doit être définie comme Variant ou String.
Est-ce le cas ?
"j-pascal" a écrit dans le message de news:
e2GP6%
Bonjour,

J'ai un message d'erreur 13 (incompatibilité de type) sur la ligne :

nouvelle_année = InputBox("Entrez une année comprise entre 2007 et 2010")

... si je clique sur "Annuler" au lieu de sélectionner une année !

J'ai essayé avec une macro en enregistrement automatique de voir ce que
générait un "Annuler" dans ce cas, mais je n'ai rien pu en tirer !!

Voici le code (la ligne qui pose problème est à peu près au milieu) :

'----------------------------------------------------------------
Sub NouvelleAnnée()

Dim réponse1 As String
Dim réponse11
Dim nouvelle_année As Integer

réponse1 = MsgBox("Voulez-vous générer une nouvelle année ?", vbYesNo +
vbQuestion, "actualisation")

If réponse1 = vbNo Then

Exit Sub

Else

'---------------------
MsgBox "Cette action va réinitialiser le classeur !"
réponse11 = MsgBox("Voulez-vous vraiment réinitialiser le classeur ?",
vbYesNo + vbQuestion, "actualisation")
If réponse11 = vbNo Then
Exit Sub
Else

nouvelle_année = InputBox("Entrez une année comprise entre 2007 et
2010")
If nouvelle_année = False Then 'ajout 14/08/07
Exit Sub 'ajout 14/08/07
Else 'ajout 14/08/07

Range("A1") = nouvelle_année
'
i = ActiveSheet.Index
For x = 4 To 15

j = Len(Sheets(x + 1).Name)
Sheets(x + 1).Name = Mid(Sheets(x + 1).Name, 1, j - 1) &
Right(Sheets(i).Cells(1, 1).Value, 1)

Next

MsgBox "en cours d'élaboration ..."
End If
End If 'ajout 14/08/07

'---------------------

End If

End Sub
'----------------------------------------------------------------

Merci d'avance pour vos lumières


--
Cordialement @+
JP


Avatar
JB
Bonsoir,

Il faut utiliser Application.InputBox et spécifier le type 1:

age = Application.InputBox("Votre age", Type:=1)
If age > 18 Then
MsgBox "Majeur"
End If

http://boisgontierjacques.free.fr/pages_site/inpubox.htm

JB


On 14 août, 20:19, "j-pascal" wrote:
Bonjour,

J'ai un message d'erreur 13 (incompatibilité de type) sur la ligne :

nouvelle_année = InputBox("Entrez une année comprise entre 2007 et 2010")

... si je clique sur "Annuler" au lieu de sélectionner une année !

J'ai essayé avec une macro en enregistrement automatique de voir ce que
générait un "Annuler" dans ce cas, mais je n'ai rien pu en tirer !!

Voici le code (la ligne qui pose problème est à peu près au milieu) :

'----------------------------------------------------------------
Sub NouvelleAnnée()

Dim réponse1 As String
Dim réponse11
Dim nouvelle_année As Integer

réponse1 = MsgBox("Voulez-vous générer une nouvelle année ? ", vbYesNo +
vbQuestion, "actualisation")

If réponse1 = vbNo Then

Exit Sub

Else

'---------------------
MsgBox "Cette action va réinitialiser le classeur !"
réponse11 = MsgBox("Voulez-vous vraiment réinitialiser le class eur ?",
vbYesNo + vbQuestion, "actualisation")
If réponse11 = vbNo Then
Exit Sub
Else

nouvelle_année = InputBox("Entrez une année comprise entre 2007 et
2010")
If nouvelle_année = False Then 'ajout 14/08/07
Exit Sub 'ajout 14/08/07
Else 'ajout 14/08/07

Range("A1") = nouvelle_année
'
i = ActiveSheet.Index
For x = 4 To 15

j = Len(Sheets(x + 1).Name)
Sheets(x + 1).Name = Mid(Sheets(x + 1).Name, 1, j - 1) &
Right(Sheets(i).Cells(1, 1).Value, 1)

Next

MsgBox "en cours d'élaboration ..."
End If
End If 'ajout 14/08/07

'---------------------

End If

End Sub
'----------------------------------------------------------------

Merci d'avance pour vos lumières

--
Cordialement @+
JP


Avatar
j-pascal
Re ;-)

"Daniel" a écrit dans le message de news:

Bonsoir.
La variable "nouvelle_année" doit être définie comme Variant ou String.
Est-ce le cas ?


Non, c'est integer !

Avec "String" ça bugue, avec "Variant" ça marche ! Sauf que ça ne passe pas
à Exit Sub, mais ça change mes onglets en "jan 0", "fév 0", etc !!
J'imagine qu'il doit être possible d'annuler toute modification de la date
actuelle si on clique sur "Annuler" ??

La déclaration des variables est souvent mystérieuse pour moi. Dans le cas
présent, si la macro fonctionne lorsqu'elle nouvelle_année est sur Integer,
je ne vois pas pourquoi, ça bugue quand on annule !!
Comme je crois savoir que "Variant" c'est ce qui consomme le plus de
ressources, j'essaye d'éviter... Là, il s'agit de mettre des dates, donc
Integer me semblait approprié, et je n'en ai même pas douté une seconde !

@+ ?

JP
"j-pascal" a écrit dans le message de news:
e2GP6%
Bonjour,

J'ai un message d'erreur 13 (incompatibilité de type) sur la ligne :

nouvelle_année = InputBox("Entrez une année comprise entre 2007 et 2010")

... si je clique sur "Annuler" au lieu de sélectionner une année !

J'ai essayé avec une macro en enregistrement automatique de voir ce que
générait un "Annuler" dans ce cas, mais je n'ai rien pu en tirer !!

Voici le code (la ligne qui pose problème est à peu près au milieu) :

'----------------------------------------------------------------
Sub NouvelleAnnée()

Dim réponse1 As String
Dim réponse11
Dim nouvelle_année As Integer

réponse1 = MsgBox("Voulez-vous générer une nouvelle année ?", vbYesNo
+ vbQuestion, "actualisation")

If réponse1 = vbNo Then

Exit Sub

Else

'---------------------
MsgBox "Cette action va réinitialiser le classeur !"
réponse11 = MsgBox("Voulez-vous vraiment réinitialiser le classeur ?",
vbYesNo + vbQuestion, "actualisation")
If réponse11 = vbNo Then
Exit Sub
Else

nouvelle_année = InputBox("Entrez une année comprise entre 2007 et
2010")
If nouvelle_année = False Then 'ajout 14/08/07
Exit Sub 'ajout 14/08/07
Else 'ajout 14/08/07

Range("A1") = nouvelle_année
'
i = ActiveSheet.Index
For x = 4 To 15

j = Len(Sheets(x + 1).Name)
Sheets(x + 1).Name = Mid(Sheets(x + 1).Name, 1, j - 1) &
Right(Sheets(i).Cells(1, 1).Value, 1)

Next

MsgBox "en cours d'élaboration ..."
End If
End If 'ajout 14/08/07

'---------------------

End If

End Sub
'----------------------------------------------------------------

Merci d'avance pour vos lumières


--
Cordialement @+
JP






Avatar
j-pascal
Bonsoir,

Je ne comprends pas. Je ne veux pas informer l'utilisateur que le nombre est
invalide, je veux qu'il puisse annuler sans qu'aucune modification de la
date actuelle soit effectuée.

Que se passe-il lorsqu'on clique sur "Annuler", cela génére-t-il une valeur
récupérable ?

JP


"JB" a écrit dans le message de news:

Bonsoir,

Il faut utiliser Application.InputBox et spécifier le type 1:

age = Application.InputBox("Votre age", Type:=1)
If age > 18 Then
MsgBox "Majeur"
End If

http://boisgontierjacques.free.fr/pages_site/inpubox.htm

JB


On 14 août, 20:19, "j-pascal" wrote:
Bonjour,

J'ai un message d'erreur 13 (incompatibilité de type) sur la ligne :

nouvelle_année = InputBox("Entrez une année comprise entre 2007 et 2010")

... si je clique sur "Annuler" au lieu de sélectionner une année !

J'ai essayé avec une macro en enregistrement automatique de voir ce que
générait un "Annuler" dans ce cas, mais je n'ai rien pu en tirer !!

Voici le code (la ligne qui pose problème est à peu près au milieu) :

'----------------------------------------------------------------
Sub NouvelleAnnée()

Dim réponse1 As String
Dim réponse11
Dim nouvelle_année As Integer

réponse1 = MsgBox("Voulez-vous générer une nouvelle année ?", vbYesNo
+
vbQuestion, "actualisation")

If réponse1 = vbNo Then

Exit Sub

Else

'---------------------
MsgBox "Cette action va réinitialiser le classeur !"
réponse11 = MsgBox("Voulez-vous vraiment réinitialiser le classeur ?",
vbYesNo + vbQuestion, "actualisation")
If réponse11 = vbNo Then
Exit Sub
Else

nouvelle_année = InputBox("Entrez une année comprise entre 2007 et
2010")
If nouvelle_année = False Then 'ajout 14/08/07
Exit Sub 'ajout 14/08/07
Else 'ajout 14/08/07

Range("A1") = nouvelle_année
'
i = ActiveSheet.Index
For x = 4 To 15

j = Len(Sheets(x + 1).Name)
Sheets(x + 1).Name = Mid(Sheets(x + 1).Name, 1, j - 1) &
Right(Sheets(i).Cells(1, 1).Value, 1)

Next

MsgBox "en cours d'élaboration ..."
End If
End If 'ajout 14/08/07

'---------------------

End If

End Sub
'----------------------------------------------------------------

Merci d'avance pour vos lumières

--
Cordialement @+
JP


Avatar
j-pascal
Désolé ++++

J'ai lu très attentivement ton code sur ton lien, mais je n'ai pas fait
l'essai sur mon code.

C'est PARFAIT ++++

Merci beaucoup !

JP
"JB" a écrit dans le message de news:

Bonsoir,

Il faut utiliser Application.InputBox et spécifier le type 1:

age = Application.InputBox("Votre age", Type:=1)
If age > 18 Then
MsgBox "Majeur"
End If

http://boisgontierjacques.free.fr/pages_site/inpubox.htm

JB


On 14 août, 20:19, "j-pascal" wrote:
Bonjour,

J'ai un message d'erreur 13 (incompatibilité de type) sur la ligne :

nouvelle_année = InputBox("Entrez une année comprise entre 2007 et 2010")

... si je clique sur "Annuler" au lieu de sélectionner une année !

J'ai essayé avec une macro en enregistrement automatique de voir ce que
générait un "Annuler" dans ce cas, mais je n'ai rien pu en tirer !!

Voici le code (la ligne qui pose problème est à peu près au milieu) :

'----------------------------------------------------------------
Sub NouvelleAnnée()

Dim réponse1 As String
Dim réponse11
Dim nouvelle_année As Integer

réponse1 = MsgBox("Voulez-vous générer une nouvelle année ?", vbYesNo
+
vbQuestion, "actualisation")

If réponse1 = vbNo Then

Exit Sub

Else

'---------------------
MsgBox "Cette action va réinitialiser le classeur !"
réponse11 = MsgBox("Voulez-vous vraiment réinitialiser le classeur ?",
vbYesNo + vbQuestion, "actualisation")
If réponse11 = vbNo Then
Exit Sub
Else

nouvelle_année = InputBox("Entrez une année comprise entre 2007 et
2010")
If nouvelle_année = False Then 'ajout 14/08/07
Exit Sub 'ajout 14/08/07
Else 'ajout 14/08/07

Range("A1") = nouvelle_année
'
i = ActiveSheet.Index
For x = 4 To 15

j = Len(Sheets(x + 1).Name)
Sheets(x + 1).Name = Mid(Sheets(x + 1).Name, 1, j - 1) &
Right(Sheets(i).Cells(1, 1).Value, 1)

Next

MsgBox "en cours d'élaboration ..."
End If
End If 'ajout 14/08/07

'---------------------

End If

End Sub
'----------------------------------------------------------------

Merci d'avance pour vos lumières

--
Cordialement @+
JP


Avatar
JB
-Avec x=inputbbox("xxxx") on récupère une chaine vide si l'opérateur
clique sur Annuler
-Avec x=application.inputbox("xxx",type:=1) on récupère false si
l'opérateur clique sur Annuler

JB

On 14 août, 21:06, "j-pascal" wrote:
Bonsoir,

Je ne comprends pas. Je ne veux pas informer l'utilisateur que le nombre est
invalide, je veux qu'il puisse annuler sans qu'aucune modification de la
date actuelle soit effectuée.

Que se passe-il lorsqu'on clique sur "Annuler", cela génére-t-il une valeur
récupérable ?

JP

"JB" a écrit dans le message de news:

Bonsoir,

Il faut utiliser Application.InputBox et spécifier le type 1:

age = Application.InputBox("Votre age", Type:=1)
If age > 18 Then
MsgBox "Majeur"
End If

http://boisgontierjacques.free.fr/pages_site/inpubox.htm

JB

On 14 août, 20:19, "j-pascal" wrote:



Bonjour,

J'ai un message d'erreur 13 (incompatibilité de type) sur la ligne :

nouvelle_année = InputBox("Entrez une année comprise entre 2007 e t 2010")

... si je clique sur "Annuler" au lieu de sélectionner une année !

J'ai essayé avec une macro en enregistrement automatique de voir ce q ue
générait un "Annuler" dans ce cas, mais je n'ai rien pu en tirer !!

Voici le code (la ligne qui pose problème est à peu près au milie u) :

'----------------------------------------------------------------
Sub NouvelleAnnée()

Dim réponse1 As String
Dim réponse11
Dim nouvelle_année As Integer

réponse1 = MsgBox("Voulez-vous générer une nouvelle année ?", vbYesNo
+
vbQuestion, "actualisation")

If réponse1 = vbNo Then

Exit Sub

Else

'---------------------
MsgBox "Cette action va réinitialiser le classeur !"
réponse11 = MsgBox("Voulez-vous vraiment réinitialiser le cla sseur ?",
vbYesNo + vbQuestion, "actualisation")
If réponse11 = vbNo Then
Exit Sub
Else

nouvelle_année = InputBox("Entrez une année comprise entr e 2007 et
2010")
If nouvelle_année = False Then 'ajout 14/08/07
Exit Sub 'ajout 14/08/07
Else 'ajout 14/08/07

Range("A1") = nouvelle_année
'
i = ActiveSheet.Index
For x = 4 To 15

j = Len(Sheets(x + 1).Name)
Sheets(x + 1).Name = Mid(Sheets(x + 1).Name, 1, j - 1 ) &
Right(Sheets(i).Cells(1, 1).Value, 1)

Next

MsgBox "en cours d'élaboration ..."
End If
End If 'ajout 14/08/07

'---------------------

End If

End Sub
'----------------------------------------------------------------

Merci d'avance pour vos lumières

--
Cordialement @+
JP- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -



Avatar
j-pascal
Re,

Merci, c'est peut-être l'origine de mon nouveau pb !
Cf, (si tu veux !), ce que je viens de répondre à Daniel ... En fait,
j'aurais préféré récupérer ma valeur initiale en cliquant sur "Annuler".
Encore une fois, je ne sais pas si cette modif est à l'origine de mon pb,
mais maintenant mes onglets affichent "jan 8", etc au lieu de "jan 08" , etc
...

"JB" a écrit dans le message de news:

-Avec x=inputbbox("xxxx") on récupère une chaine vide si l'opérateur
clique sur Annuler

Et comme j'avais restreint les valeurs possibles, ça a buggué ! Je vois !

-Avec x=application.inputbox("xxx",type:=1) on récupère false si
l'opérateur clique sur Annuler

Et on ne peut pas tout simplement conserver la valeur initiale ?

JP

JB

On 14 août, 21:06, "j-pascal" wrote:
Bonsoir,

Je ne comprends pas. Je ne veux pas informer l'utilisateur que le nombre
est
invalide, je veux qu'il puisse annuler sans qu'aucune modification de la
date actuelle soit effectuée.

Que se passe-il lorsqu'on clique sur "Annuler", cela génére-t-il une
valeur
récupérable ?

JP

"JB" a écrit dans le message de news:

Bonsoir,

Il faut utiliser Application.InputBox et spécifier le type 1:

age = Application.InputBox("Votre age", Type:=1)
If age > 18 Then
MsgBox "Majeur"
End If

http://boisgontierjacques.free.fr/pages_site/inpubox.htm

JB

On 14 août, 20:19, "j-pascal" wrote:



Bonjour,

J'ai un message d'erreur 13 (incompatibilité de type) sur la ligne :

nouvelle_année = InputBox("Entrez une année comprise entre 2007 et
2010")

... si je clique sur "Annuler" au lieu de sélectionner une année !

J'ai essayé avec une macro en enregistrement automatique de voir ce que
générait un "Annuler" dans ce cas, mais je n'ai rien pu en tirer !!

Voici le code (la ligne qui pose problème est à peu près au milieu) :

'----------------------------------------------------------------
Sub NouvelleAnnée()

Dim réponse1 As String
Dim réponse11
Dim nouvelle_année As Integer

réponse1 = MsgBox("Voulez-vous générer une nouvelle année ?",
vbYesNo
+
vbQuestion, "actualisation")

If réponse1 = vbNo Then

Exit Sub

Else

'---------------------
MsgBox "Cette action va réinitialiser le classeur !"
réponse11 = MsgBox("Voulez-vous vraiment réinitialiser le classeur
?",
vbYesNo + vbQuestion, "actualisation")
If réponse11 = vbNo Then
Exit Sub
Else

nouvelle_année = InputBox("Entrez une année comprise entre 2007
et
2010")
If nouvelle_année = False Then 'ajout 14/08/07
Exit Sub 'ajout 14/08/07
Else 'ajout 14/08/07

Range("A1") = nouvelle_année
'
i = ActiveSheet.Index
For x = 4 To 15

j = Len(Sheets(x + 1).Name)
Sheets(x + 1).Name = Mid(Sheets(x + 1).Name, 1, j - 1) &
Right(Sheets(i).Cells(1, 1).Value, 1)

Next

MsgBox "en cours d'élaboration ..."
End If
End If 'ajout 14/08/07

'---------------------

End If

End Sub
'----------------------------------------------------------------

Merci d'avance pour vos lumières

--
Cordialement @+
JP- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -