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

Pb Macro

6 réponses
Avatar
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

6 réponses

Avatar
AB
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" a écrit dans le message de news:

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



Avatar
AB
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" a écrit dans le message de news:

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



Avatar
Anacoluthe
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

Avatar
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~

Avatar
jepac

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


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

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

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~