Pb Macro

Le
jepac
Bonsoir,

J'ai écrit la macro suivante [grâce à vos conseils] pour masquer une section.
Dans la macro je demande à l'utilisateur le n° de section qu'il souhaite
masquer.
Si l'utilisateur entre un n° de section inexistant, je souhaite le lui
indiquer par un message d'erreur, mais il semble que ma fonction de
comparaison entre le nombre entré par l'utilisateur et le nombre maxi de
sections ne fonctionne pas.

Pouvez-vous m'aider ?
Merci
Jean-Paul

Sub MasquageSection()
MessageMasquage = MsgBox("Les sections masquées seront toujours visibles à
l'écran mais ne seront pas imprimées", vbOKOnly, "MMMMMM")
NombreSection = ActiveDocument.Sections.Count
ActiveDocument.Unprotect Password:="xxxxx"
Numsectionmasquage = InputBox(Prompt:="Indiquer le numéro de section à
masquer - le numéro est indiqué en haut et à droite de la page - une seule
section à la fois")
Dim Resultat
Resultat = Numsectionmasquage > NombreSection
If Resultat = True Then
ActiveDocument.Protect Type:=wdAllowOnlyFormFields, NoReset:=True,
Password:="xxxxx"
SortieMacro = MsgBox("Section inexistante")
Exit Sub
End If


ActiveDocument.Sections(Numsectionmasquage).Range.Font.Hidden = True
ActiveDocument.Protect Type:=wdAllowOnlyFormFields, NoReset:=True,
Password:="xxxx"

End Sub
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
AB
Le #1734727
Bonjour Jean Paul,
Je pense que le problème vient du fait que la valeur retournée par InputBox
est une chaîne. Transforme-la en valeur numérique avec l'instruction Val
Ca devrait marcher.
AB

"jepac"
Bonsoir,

J'ai écrit la macro suivante [grâce à vos conseils] pour masquer une
section.
Dans la macro je demande à l'utilisateur le n° de section qu'il souhaite
masquer.
Si l'utilisateur entre un n° de section inexistant, je souhaite le lui
indiquer par un message d'erreur, mais il semble que ma fonction de
comparaison entre le nombre entré par l'utilisateur et le nombre maxi de
sections ne fonctionne pas.

Pouvez-vous m'aider ?
Merci
Jean-Paul

Sub MasquageSection()
MessageMasquage = MsgBox("Les sections masquées seront toujours visibles à
l'écran mais ne seront pas imprimées", vbOKOnly, "MMMMMM")
NombreSection = ActiveDocument.Sections.Count
ActiveDocument.Unprotect Password:="xxxxx"
Numsectionmasquage = InputBox(Prompt:="Indiquer le numéro de section à
masquer - le numéro est indiqué en haut et à droite de la page - une seule
section à la fois")
Dim Resultat
Resultat = Numsectionmasquage > NombreSection
If Resultat = True Then
ActiveDocument.Protect Type:=wdAllowOnlyFormFields, NoReset:=True,
Password:="xxxxx"
SortieMacro = MsgBox("Section inexistante")
Exit Sub
End If


ActiveDocument.Sections(Numsectionmasquage).Range.Font.Hidden = True
ActiveDocument.Protect Type:=wdAllowOnlyFormFields, NoReset:=True,
Password:="xxxx"

End Sub



AB
Le #1734726
J'ai oublié :
Ces lignes me semblent superfétatoires :
Dim Resultat
Resultat = Numsectionmasquage > NombreSection
If Resultat = True Then


Je préfère :
If Numsectionmasquage > NombreSection Then etc....
à condition que Numsectionmasquage soit une valeur numérique

AB

"jepac"
Bonsoir,

J'ai écrit la macro suivante [grâce à vos conseils] pour masquer une
section.
Dans la macro je demande à l'utilisateur le n° de section qu'il souhaite
masquer.
Si l'utilisateur entre un n° de section inexistant, je souhaite le lui
indiquer par un message d'erreur, mais il semble que ma fonction de
comparaison entre le nombre entré par l'utilisateur et le nombre maxi de
sections ne fonctionne pas.

Pouvez-vous m'aider ?
Merci
Jean-Paul

Sub MasquageSection()
MessageMasquage = MsgBox("Les sections masquées seront toujours visibles à
l'écran mais ne seront pas imprimées", vbOKOnly, "MMMMMM")
NombreSection = ActiveDocument.Sections.Count
ActiveDocument.Unprotect Password:="xxxxx"
Numsectionmasquage = InputBox(Prompt:="Indiquer le numéro de section à
masquer - le numéro est indiqué en haut et à droite de la page - une seule
section à la fois")
Dim Resultat
Resultat = Numsectionmasquage > NombreSection
If Resultat = True Then
ActiveDocument.Protect Type:=wdAllowOnlyFormFields, NoReset:=True,
Password:="xxxxx"
SortieMacro = MsgBox("Section inexistante")
Exit Sub
End If


ActiveDocument.Sections(Numsectionmasquage).Range.Font.Hidden = True
ActiveDocument.Protect Type:=wdAllowOnlyFormFields, NoReset:=True,
Password:="xxxx"

End Sub



Anacoluthe
Le #1734725
Bonjour !

'jepac' nous a écrit ...
NombreSection = ActiveDocument.Sections.Count
Numsectionmasquage = InputBox(Prompt:="Indiquer le numéro de section")
Dim Resultat
Resultat = Numsectionmasquage > NombreSection
If Resultat = True Then


InputBox renvoie une variable chaîne...
(l'utilisateur entre le texte qu'il veut, pas forcément un nombre)

Écrivez plutôt
Numsectionmasquage = Val(InputBox(Prompt:="Indiquer le numéro de section..."))
pour que Numsectionmasquage soit numérique. Si l'entrée n'est pas
numérique cette variable prendra la valeur zéro.

Complétez votre test de validité de la variable Numsectionmasquage :
If Numsectionmasquage < 1 OR Numsectionmasquage > NombreSection Then

Anacoluthe
« Les nombres gouvernent le monde. »
- PYTHAGORE

Anacoluthe
Le #1734723
Bonjour !

'AB' nous a écrit ...
Ces lignes me semblent superfétatoires


Oupsss ! Pas lu tes réponses André
Mais ça fait plaisir d'être d'accord ;-)

A+
A~

jepac
Le #1734720

Bonjour !

'jepac' nous a écrit ...
NombreSection = ActiveDocument.Sections.Count
Numsectionmasquage = InputBox(Prompt:="Indiquer le numéro de section")
Dim Resultat
Resultat = Numsectionmasquage > NombreSection
If Resultat = True Then


InputBox renvoie une variable chaîne...
(l'utilisateur entre le texte qu'il veut, pas forcément un nombre)

Écrivez plutôt
Numsectionmasquage = Val(InputBox(Prompt:="Indiquer le numéro de section..."))
pour que Numsectionmasquage soit numérique. Si l'entrée n'est pas
numérique cette variable prendra la valeur zéro.

Complétez votre test de validité de la variable Numsectionmasquage :
If Numsectionmasquage < 1 OR Numsectionmasquage > NombreSection Then

Anacoluthe
« Les nombres gouvernent le monde. »
- PYTHAGORE


Merci à tous

Jean-Paul


AB
Le #1734718
Hello !
C'est surtout à moi, que ça fait plaisir !
Tu connais mon niveau en VBA...
A+
André

"Anacoluthe"
Bonjour !

'AB' nous a écrit ...
Ces lignes me semblent superfétatoires


Oupsss ! Pas lu tes réponses André
Mais ça fait plaisir d'être d'accord ;-)

A+
A~



Publicité
Poster une réponse
Anonyme