OVH Cloud OVH Cloud

On ne rigole pas c'est ma 1er fois

17 réponses
Avatar
thiery
première macro à 45 ans hein !

Sub test()
Dim x As Integer
x = InputBox("tapez un nombre")

If x = 0 Then MsgBox " nombre nul "

If x < 0 Then MsgBox " ceci est un nombre négatif "

If x > 0 Then MsgBox "ceci est un nombre positif "
End Sub


tout se passe bien si je rentre un nombre "normal" si je ne rentre rien ça
me met débogage et compagnie
comment evitez cette erreur j'avais pensé à mettre en 1er ligne

If x <> 0 Then MsgBox "vous n'avez pas écrite de chiffres!"
mais ça ne fonctionne pas et pourquoi chef ?

merci d'avance je commence les macros il y a 3 mn

--
Amicalement
thiery

7 réponses

1 2
Avatar
Clément Marcotte
Bonjour,

Les objets "Application" des autres programmes (Word, PowerPOint, Publisher
etc.) n'ont pas application.inputbox, ni application.getopenfilename,
d'ailleurs. Tant que l'on reste avec Excel, ce n'est pas un réel problème,
mais dès que l'on veut porter une macro qui utilise une propriété ou une
méthode d'un objet application quelconque, il y a des risques de plantage.

Même, si un autre programme qu'Excel avait un application.inputbox les
paramètres pourraient être moins nombreux ou différents.



"michdenis" a écrit dans le message de news:
%
Bonjour Clément,

| Cela fonctionne bien dans Excel, mais comme cette
| formulation est inopérante à l'extérieur d'Excel

Et si tu précisais ta pensée...


Salutations!


"Clément Marcotte" a écrit dans le message
de news:
Bonjour,

Presque (pas) pour polémiquer, j'ai une (grosse) réserve avec
application.inputbox(). Cela fonctionne bien dans Excel, mais comme cette
formulation est inopérante à l'extérieur d'Excel; cela limite sérieusement
la "portabilité" d'une macro qui l'utilise.

Donc sans Application.inputbox (l'inputbox d'Excel), mais avec l'InputBox
de
VBA, et en remplaçant les IF avec Select Case.

Sub test()
Dim x As Variant, yabadabadoo As Boolean
Do
x = InputBox("tapez un nombre")
If IsNumeric(x) Then
Select Case x
Case 0
MsgBox " nombre nul "
Case Is < 0
MsgBox " ceci est un nombre négatif "
Case Else
MsgBox "ceci est un nombre positif "
End Select
yabadabadou = True
Else
yabadabadou = False
End If
Loop Until yabadabadou
End Sub




"thiery" a écrit dans le message de news:
43e8f141$0$19685$
première macro à 45 ans hein !

Sub test()
Dim x As Integer
x = InputBox("tapez un nombre")

If x = 0 Then MsgBox " nombre nul "

If x < 0 Then MsgBox " ceci est un nombre négatif "

If x > 0 Then MsgBox "ceci est un nombre positif "
End Sub


tout se passe bien si je rentre un nombre "normal" si je ne rentre rien
ça
me met débogage et compagnie
comment evitez cette erreur j'avais pensé à mettre en 1er ligne

If x <> 0 Then MsgBox "vous n'avez pas écrite de chiffres!"
mais ça ne fonctionne pas et pourquoi chef ?

merci d'avance je commence les macros il y a 3 mn

--
Amicalement
thiery







Avatar
thiery
Clément Marcotte wrote:
Bonjour,

Les objets "Application" des autres programmes (Word, PowerPOint,
Publisher etc.) n'ont pas application.inputbox, ni
application.getopenfilename, d'ailleurs. Tant que l'on reste avec
Excel, ce n'est pas un réel problème, mais dès que l'on veut porter
une macro qui utilise une propriété ou une méthode d'un objet
application quelconque, il y a des risques de plantage.
Même, si un autre programme qu'Excel avait un application.inputbox les
paramètres pourraient être moins nombreux ou différents.



"michdenis" a écrit dans le message de news:
%
Bonjour Clément,

Cela fonctionne bien dans Excel, mais comme cette
formulation est inopérante à l'extérieur d'Excel


Et si tu précisais ta pensée...


Salutations!





Ok donc si je comprends bien pour une meilleure "portabilitée" il vaut mieux
que j'emploie select.....case
en tout cas merci à vous tous j'attaque la deuxième aujourd'hui , aïe aïe
aïe
--
Amicalement
thiery



Avatar
JB
Bonjour,

Fonction InputNum acceptant , ou . comme séparateur de décimale.

Sub essai()
x = inputNum("Saisir un nombre?")
MsgBox x
MsgBox TypeName(x)
End Sub

Function inputNum(message) ' accepte , ou . comme séparateur de
décimale
Dim temp As String, ok As Boolean
ok = False
Do While Not ok
temp = InputBox(message)
If temp = "" Then
ok = True
inputNum = ""
Else
If IsNumeric(temp) Or IsNumeric(Replace(temp, ".", ",")) Then '
le séparateur doit être une ,
ok = True
inputNum = Val(Replace(temp, ",", ".")) 'ou
inputNumÍbl(temp)
Else
MsgBox "saisir du num"
End If
End If
Loop
End Function

Cordialement JB
Avatar
thiery
michdenis wrote:
et utilise : application.inputbox ... cela t'oblige à taper un nombre
sinon tu as un message demandant de recommencer la saisie.
'---------------------------
Sub test()

Dim x As Variant
x = Application.InputBox("tapez un nombre", , , , , , , 1)
If TypeName(x) = "Boolean" Then Exit Sub
If x = 0 Then MsgBox " nombre nul "
If x < 0 Then MsgBox " ceci est un nombre négatif "
If x > 0 Then MsgBox "ceci est un nombre positif "

End Sub
'---------------------------
par contre tien si j'essaie de taper vrai j'ai une erreur dans le sens ou ça

me met un message nombre positif ou si je tape faux ça me met nombre nul
même en mettant en vert la ligne "Boolean" même symptôme bizarre ?

--
Amicalement
thiery

Avatar
michdenis
Bonjour Clément,

Ok pour l'information.

Seulement, s'il fallait entretenir des craintes quant aux méthodes qui sont
différentes d'une application Microsoft à une autre, l'effet paralysant serait
encore plus grand que les différences entre les applications elles-mêmes.


Salutations!


"Clément Marcotte" a écrit dans le message de news:
Bonjour,

Les objets "Application" des autres programmes (Word, PowerPOint, Publisher
etc.) n'ont pas application.inputbox, ni application.getopenfilename,
d'ailleurs. Tant que l'on reste avec Excel, ce n'est pas un réel problème,
mais dès que l'on veut porter une macro qui utilise une propriété ou une
méthode d'un objet application quelconque, il y a des risques de plantage.

Même, si un autre programme qu'Excel avait un application.inputbox les
paramètres pourraient être moins nombreux ou différents.



"michdenis" a écrit dans le message de news:
%
Bonjour Clément,

| Cela fonctionne bien dans Excel, mais comme cette
| formulation est inopérante à l'extérieur d'Excel

Et si tu précisais ta pensée...


Salutations!


"Clément Marcotte" a écrit dans le message
de news:
Bonjour,

Presque (pas) pour polémiquer, j'ai une (grosse) réserve avec
application.inputbox(). Cela fonctionne bien dans Excel, mais comme cette
formulation est inopérante à l'extérieur d'Excel; cela limite sérieusement
la "portabilité" d'une macro qui l'utilise.

Donc sans Application.inputbox (l'inputbox d'Excel), mais avec l'InputBox
de
VBA, et en remplaçant les IF avec Select Case.

Sub test()
Dim x As Variant, yabadabadoo As Boolean
Do
x = InputBox("tapez un nombre")
If IsNumeric(x) Then
Select Case x
Case 0
MsgBox " nombre nul "
Case Is < 0
MsgBox " ceci est un nombre négatif "
Case Else
MsgBox "ceci est un nombre positif "
End Select
yabadabadou = True
Else
yabadabadou = False
End If
Loop Until yabadabadou
End Sub




"thiery" a écrit dans le message de news:
43e8f141$0$19685$
première macro à 45 ans hein !

Sub test()
Dim x As Integer
x = InputBox("tapez un nombre")

If x = 0 Then MsgBox " nombre nul "

If x < 0 Then MsgBox " ceci est un nombre négatif "

If x > 0 Then MsgBox "ceci est un nombre positif "
End Sub


tout se passe bien si je rentre un nombre "normal" si je ne rentre rien
ça
me met débogage et compagnie
comment evitez cette erreur j'avais pensé à mettre en 1er ligne

If x <> 0 Then MsgBox "vous n'avez pas écrite de chiffres!"
mais ça ne fonctionne pas et pourquoi chef ?

merci d'avance je commence les macros il y a 3 mn

--
Amicalement
thiery







Avatar
michdenis
Bonjour Thierry,

| si je comprends bien pour une meilleure "portabilitée"

Penses-tu réellement que tout ta procédure va être à ce point générale que tu
vas pourvoir l'utiliser dans Excel, Word, PowerPoint ...?

En as-tu réellement besoin ? Est-ce l'objectif recherché ?


Salutations!
Avatar
thiery
"michdenis" a écrit dans le message de news:

Bonjour Thierry,

| si je comprends bien pour une meilleure "portabilitée"

Penses-tu réellement que tout ta procédure va être à ce point générale que
tu
vas pourvoir l'utiliser dans Excel, Word, PowerPoint ...?

En as-tu réellement besoin ? Est-ce l'objectif recherché ?


Salutations!



olà déjà je commence excel et puis tu as vu "l'appli" que c'est , c'est
juste pour me faire plaisir , comprendre les actions et évenements , en bref
être moins cons que ce que je ne suis , c'est la curiosité qui me pousse
j'aime savoir ce qui se passe qd je fais entrée ou que j'appuie bêtement sur
une touche , voilà mon objectif il est atteint et je vois qu'on peut
l'obtenir par plusieurs choix , aprés tu sais optimisé mon code hum hum j'en
suis pas là

merci à toi et continuer d'être accessible à des gugus comme moi qui cherche
à comprendre plutôt que de faire "bêtement "une macro c'est le plaisir de se
dire je l'ai réalisé "tout seul" voili voilà , excusez pour le hors-sujet
bonne journée à vous tous et toutes

Cordialement
Thiery

1 2