-----Message d'origine-----
Bonjour Nadège,
Essaie ceci : à copier dans le ThisWorkbook de ton projet.
reponse = Range("C20").Value
Il est préférable d'éviter ce type de ligne de code
puisque ce dernier ne spécifie pas à quel feuille appartient
l'objet
range. Dans un tel cas, l'objet range appartient à la
feuille active... et la feuille active n'est pas nécessairement
celle qui est toujours active au moment de tester le
code... dans la procédure adapte le nom de la feuille à celle
définit dans ton projet.
En plus d'utiliser Exit sub, tu affectes la valeur true à
la variable Cancel. Cela aura pour but d'annuler l'opération
"Enregistrer".
'--------------------------------
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean,
Cancel As Boolean)
With Worksheets("Feuil1")
reponse = .Range("C20").Value
End With
Select Case reponse
Case Is <> "Non"
Select Case Len(Range("C22"))
Case Is < 7
MsgBox "N° de devis invalide !", vbCritical
Cancel = True
Exit Sub
End Select
End Select
End Sub
'--------------------------------
Salutations!
"Nadège" a écrit dans le
message de news:0a4a01c381e7$1844b3d0$
Je souhaiterai, en vba, brider la commande Fichier
Enregistrer.
Mon objectif est d'empêcher l'utilisateur d'enregistrer un
bon de commande si certaines infos sont manquantes.
J'ai créé une procédure Workbook_BeforeSave qui teste la
validité des cellules en question (dans l'exemple ci-
dessous la cellule 20 puis 22)mais malgré la présence
d"Exit sub, la boîte de dialogue Enregistrer ne se referme
pas !
reponse = Range("C20").Value
Select Case reponse
Case Is <> "Non"
Select Case Len(Range("C22"))
Case Is < 7
MsgBox "N° de devis invalide !", vbCritical
Exit Sub
End Select
End Select
Merci de votre aide
.
-----Message d'origine-----
Bonjour Nadège,
Essaie ceci : à copier dans le ThisWorkbook de ton projet.
reponse = Range("C20").Value
Il est préférable d'éviter ce type de ligne de code
puisque ce dernier ne spécifie pas à quel feuille appartient
l'objet
range. Dans un tel cas, l'objet range appartient à la
feuille active... et la feuille active n'est pas nécessairement
celle qui est toujours active au moment de tester le
code... dans la procédure adapte le nom de la feuille à celle
définit dans ton projet.
En plus d'utiliser Exit sub, tu affectes la valeur true à
la variable Cancel. Cela aura pour but d'annuler l'opération
"Enregistrer".
'--------------------------------
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean,
Cancel As Boolean)
With Worksheets("Feuil1")
reponse = .Range("C20").Value
End With
Select Case reponse
Case Is <> "Non"
Select Case Len(Range("C22"))
Case Is < 7
MsgBox "N° de devis invalide !", vbCritical
Cancel = True
Exit Sub
End Select
End Select
End Sub
'--------------------------------
Salutations!
"Nadège" <contact@top-assistante.com> a écrit dans le
message de news:0a4a01c381e7$1844b3d0$a001280a@phx.gbl...
Je souhaiterai, en vba, brider la commande Fichier
Enregistrer.
Mon objectif est d'empêcher l'utilisateur d'enregistrer un
bon de commande si certaines infos sont manquantes.
J'ai créé une procédure Workbook_BeforeSave qui teste la
validité des cellules en question (dans l'exemple ci-
dessous la cellule 20 puis 22)mais malgré la présence
d"Exit sub, la boîte de dialogue Enregistrer ne se referme
pas !
reponse = Range("C20").Value
Select Case reponse
Case Is <> "Non"
Select Case Len(Range("C22"))
Case Is < 7
MsgBox "N° de devis invalide !", vbCritical
Exit Sub
End Select
End Select
Merci de votre aide
.
-----Message d'origine-----
Bonjour Nadège,
Essaie ceci : à copier dans le ThisWorkbook de ton projet.
reponse = Range("C20").Value
Il est préférable d'éviter ce type de ligne de code
puisque ce dernier ne spécifie pas à quel feuille appartient
l'objet
range. Dans un tel cas, l'objet range appartient à la
feuille active... et la feuille active n'est pas nécessairement
celle qui est toujours active au moment de tester le
code... dans la procédure adapte le nom de la feuille à celle
définit dans ton projet.
En plus d'utiliser Exit sub, tu affectes la valeur true à
la variable Cancel. Cela aura pour but d'annuler l'opération
"Enregistrer".
'--------------------------------
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean,
Cancel As Boolean)
With Worksheets("Feuil1")
reponse = .Range("C20").Value
End With
Select Case reponse
Case Is <> "Non"
Select Case Len(Range("C22"))
Case Is < 7
MsgBox "N° de devis invalide !", vbCritical
Cancel = True
Exit Sub
End Select
End Select
End Sub
'--------------------------------
Salutations!
"Nadège" a écrit dans le
message de news:0a4a01c381e7$1844b3d0$
Je souhaiterai, en vba, brider la commande Fichier
Enregistrer.
Mon objectif est d'empêcher l'utilisateur d'enregistrer un
bon de commande si certaines infos sont manquantes.
J'ai créé une procédure Workbook_BeforeSave qui teste la
validité des cellules en question (dans l'exemple ci-
dessous la cellule 20 puis 22)mais malgré la présence
d"Exit sub, la boîte de dialogue Enregistrer ne se referme
pas !
reponse = Range("C20").Value
Select Case reponse
Case Is <> "Non"
Select Case Len(Range("C22"))
Case Is < 7
MsgBox "N° de devis invalide !", vbCritical
Exit Sub
End Select
End Select
Merci de votre aide
.
-----Message d'origine-----
Bonjour Nadège,
Essaie ceci : à copier dans le ThisWorkbook de ton projet.
reponse = Range("C20").Value
Il est préférable d'éviter ce type de ligne de code
puisque ce dernier ne spécifie pas à quel feuille appartient
l'objet
range. Dans un tel cas, l'objet range appartient à la
feuille active... et la feuille active n'est pas nécessairement
celle qui est toujours active au moment de tester le
code... dans la procédure adapte le nom de la feuille à celle
définit dans ton projet.
En plus d'utiliser Exit sub, tu affectes la valeur true à
la variable Cancel. Cela aura pour but d'annuler l'opération
"Enregistrer".
'--------------------------------
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean,
Cancel As Boolean)
With Worksheets("Feuil1")
reponse = .Range("C20").Value
End With
Select Case reponse
Case Is <> "Non"
Select Case Len(Range("C22"))
Case Is < 7
MsgBox "N° de devis invalide !", vbCritical
Cancel = True
Exit Sub
End Select
End Select
End Sub
'--------------------------------
Salutations!
"Nadège" a écrit dans le
message de news:0a4a01c381e7$1844b3d0$
Je souhaiterai, en vba, brider la commande Fichier
Enregistrer.
Mon objectif est d'empêcher l'utilisateur d'enregistrer un
bon de commande si certaines infos sont manquantes.
J'ai créé une procédure Workbook_BeforeSave qui teste la
validité des cellules en question (dans l'exemple ci-
dessous la cellule 20 puis 22)mais malgré la présence
d"Exit sub, la boîte de dialogue Enregistrer ne se referme
pas !
reponse = Range("C20").Value
Select Case reponse
Case Is <> "Non"
Select Case Len(Range("C22"))
Case Is < 7
MsgBox "N° de devis invalide !", vbCritical
Exit Sub
End Select
End Select
Merci de votre aide
.
-----Message d'origine-----
Bonjour Nadège,
Essaie ceci : à copier dans le ThisWorkbook de ton projet.
reponse = Range("C20").Value
Il est préférable d'éviter ce type de ligne de code
puisque ce dernier ne spécifie pas à quel feuille appartient
l'objet
range. Dans un tel cas, l'objet range appartient à la
feuille active... et la feuille active n'est pas nécessairement
celle qui est toujours active au moment de tester le
code... dans la procédure adapte le nom de la feuille à celle
définit dans ton projet.
En plus d'utiliser Exit sub, tu affectes la valeur true à
la variable Cancel. Cela aura pour but d'annuler l'opération
"Enregistrer".
'--------------------------------
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean,
Cancel As Boolean)
With Worksheets("Feuil1")
reponse = .Range("C20").Value
End With
Select Case reponse
Case Is <> "Non"
Select Case Len(Range("C22"))
Case Is < 7
MsgBox "N° de devis invalide !", vbCritical
Cancel = True
Exit Sub
End Select
End Select
End Sub
'--------------------------------
Salutations!
"Nadège" <contact@top-assistante.com> a écrit dans le
message de news:0a4a01c381e7$1844b3d0$a001280a@phx.gbl...
Je souhaiterai, en vba, brider la commande Fichier
Enregistrer.
Mon objectif est d'empêcher l'utilisateur d'enregistrer un
bon de commande si certaines infos sont manquantes.
J'ai créé une procédure Workbook_BeforeSave qui teste la
validité des cellules en question (dans l'exemple ci-
dessous la cellule 20 puis 22)mais malgré la présence
d"Exit sub, la boîte de dialogue Enregistrer ne se referme
pas !
reponse = Range("C20").Value
Select Case reponse
Case Is <> "Non"
Select Case Len(Range("C22"))
Case Is < 7
MsgBox "N° de devis invalide !", vbCritical
Exit Sub
End Select
End Select
Merci de votre aide
.
-----Message d'origine-----
Bonjour Nadège,
Essaie ceci : à copier dans le ThisWorkbook de ton projet.
reponse = Range("C20").Value
Il est préférable d'éviter ce type de ligne de code
puisque ce dernier ne spécifie pas à quel feuille appartient
l'objet
range. Dans un tel cas, l'objet range appartient à la
feuille active... et la feuille active n'est pas nécessairement
celle qui est toujours active au moment de tester le
code... dans la procédure adapte le nom de la feuille à celle
définit dans ton projet.
En plus d'utiliser Exit sub, tu affectes la valeur true à
la variable Cancel. Cela aura pour but d'annuler l'opération
"Enregistrer".
'--------------------------------
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean,
Cancel As Boolean)
With Worksheets("Feuil1")
reponse = .Range("C20").Value
End With
Select Case reponse
Case Is <> "Non"
Select Case Len(Range("C22"))
Case Is < 7
MsgBox "N° de devis invalide !", vbCritical
Cancel = True
Exit Sub
End Select
End Select
End Sub
'--------------------------------
Salutations!
"Nadège" a écrit dans le
message de news:0a4a01c381e7$1844b3d0$
Je souhaiterai, en vba, brider la commande Fichier
Enregistrer.
Mon objectif est d'empêcher l'utilisateur d'enregistrer un
bon de commande si certaines infos sont manquantes.
J'ai créé une procédure Workbook_BeforeSave qui teste la
validité des cellules en question (dans l'exemple ci-
dessous la cellule 20 puis 22)mais malgré la présence
d"Exit sub, la boîte de dialogue Enregistrer ne se referme
pas !
reponse = Range("C20").Value
Select Case reponse
Case Is <> "Non"
Select Case Len(Range("C22"))
Case Is < 7
MsgBox "N° de devis invalide !", vbCritical
Exit Sub
End Select
End Select
Merci de votre aide
.
Je souhaiterai, en vba, brider la commande Fichier
Enregistrer.
Mon objectif est d'empêcher l'utilisateur d'enregistrer un
bon de commande si certaines infos sont manquantes.
J'ai créé une procédure Workbook_BeforeSave qui teste la
validité des cellules en question (dans l'exemple ci-
dessous la cellule 20 puis 22)mais malgré la présence
d"Exit sub, la boîte de dialogue Enregistrer ne se referme
pas !
reponse = Range("C20").Value
Select Case reponse
Case Is <> "Non"
Select Case Len(Range("C22"))
Case Is < 7
MsgBox "N° de devis invalide !", vbCritical
Exit Sub
End Select
End Select
Merci de votre aide
Je souhaiterai, en vba, brider la commande Fichier
Enregistrer.
Mon objectif est d'empêcher l'utilisateur d'enregistrer un
bon de commande si certaines infos sont manquantes.
J'ai créé une procédure Workbook_BeforeSave qui teste la
validité des cellules en question (dans l'exemple ci-
dessous la cellule 20 puis 22)mais malgré la présence
d"Exit sub, la boîte de dialogue Enregistrer ne se referme
pas !
reponse = Range("C20").Value
Select Case reponse
Case Is <> "Non"
Select Case Len(Range("C22"))
Case Is < 7
MsgBox "N° de devis invalide !", vbCritical
Exit Sub
End Select
End Select
Merci de votre aide
Je souhaiterai, en vba, brider la commande Fichier
Enregistrer.
Mon objectif est d'empêcher l'utilisateur d'enregistrer un
bon de commande si certaines infos sont manquantes.
J'ai créé une procédure Workbook_BeforeSave qui teste la
validité des cellules en question (dans l'exemple ci-
dessous la cellule 20 puis 22)mais malgré la présence
d"Exit sub, la boîte de dialogue Enregistrer ne se referme
pas !
reponse = Range("C20").Value
Select Case reponse
Case Is <> "Non"
Select Case Len(Range("C22"))
Case Is < 7
MsgBox "N° de devis invalide !", vbCritical
Exit Sub
End Select
End Select
Merci de votre aide
-----Message d'origine-----
Bonsoir,
Comment est composé un numéro de devis valide ?
Supposons un numéro comme 12345 (5 chiffres) mais mis en
forme avec un format
personalisé (pour des raisons d'homogénéité de la
présentation pas ex) du type
"0000000".
Si tu as ce cas de figure (où une situation semblable),
la cellule affiche
0012345 (7 chiffres) mais le nombre visible dans la barre
de formule est 12345
(5 chiffres).
En VBA, dans cette situation, ton test Len(Range("C22"))
renvoie 5 alors qu'un
test sur le texte affiché dans la cellule, comme Len(Range
("C22").Text) renverra
7.
Dans l'autre sens, un nombre comme 12345,12 affiché au
format perso "0"
apparaîtra comme 12345 (5 chiffres) alors qu'en réalité
Len(Range("C22")) va
renvoyer 8...
Ceci dit, après cette remarque peut-être sans objet pour
te dépanner, je pense
que la solution proposée par Denis *devrait* fonctionner.
Ecrite très légèrement
différemment, j'obtiens le résultat que tu sembles
attendre en testant le texte
affiché dans la cellule (si le numéro est invalide, ton
message s'affiche, point
final, et si le numéro est valide la boite de dialogue
d'enregistrement
s'affiche) :
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As
Boolean, Cancel As Boolean)
reponse = Range("C20").Value
Select Case reponse
Case Is <> "Non"
Select Case Len(Range("C22").Text)
Case Is < 7
MsgBox "N° de devis invalide !", vbCritical
Cancel = True
End Select
End Select
End Sub
A moins qu'on n'ait rien compris, ni l'un ni l'autre ?..
FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !
Je souhaiterai, en vba, brider la commande Fichier
Enregistrer.
Mon objectif est d'empêcher l'utilisateur d'enregistrer
un
bon de commande si certaines infos sont manquantes.
J'ai créé une procédure Workbook_BeforeSave qui teste la
validité des cellules en question (dans l'exemple ci-
dessous la cellule 20 puis 22)mais malgré la présence
d"Exit sub, la boîte de dialogue Enregistrer ne se
referme
pas !
reponse = Range("C20").Value
Select Case reponse
Case Is <> "Non"
Select Case Len(Range("C22"))
Case Is < 7
MsgBox "N° de devis invalide !", vbCritical
Exit Sub
End Select
End Select
Merci de votre aide
.
-----Message d'origine-----
Bonsoir,
Comment est composé un numéro de devis valide ?
Supposons un numéro comme 12345 (5 chiffres) mais mis en
forme avec un format
personalisé (pour des raisons d'homogénéité de la
présentation pas ex) du type
"0000000".
Si tu as ce cas de figure (où une situation semblable),
la cellule affiche
0012345 (7 chiffres) mais le nombre visible dans la barre
de formule est 12345
(5 chiffres).
En VBA, dans cette situation, ton test Len(Range("C22"))
renvoie 5 alors qu'un
test sur le texte affiché dans la cellule, comme Len(Range
("C22").Text) renverra
7.
Dans l'autre sens, un nombre comme 12345,12 affiché au
format perso "0"
apparaîtra comme 12345 (5 chiffres) alors qu'en réalité
Len(Range("C22")) va
renvoyer 8...
Ceci dit, après cette remarque peut-être sans objet pour
te dépanner, je pense
que la solution proposée par Denis *devrait* fonctionner.
Ecrite très légèrement
différemment, j'obtiens le résultat que tu sembles
attendre en testant le texte
affiché dans la cellule (si le numéro est invalide, ton
message s'affiche, point
final, et si le numéro est valide la boite de dialogue
d'enregistrement
s'affiche) :
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As
Boolean, Cancel As Boolean)
reponse = Range("C20").Value
Select Case reponse
Case Is <> "Non"
Select Case Len(Range("C22").Text)
Case Is < 7
MsgBox "N° de devis invalide !", vbCritical
Cancel = True
End Select
End Select
End Sub
A moins qu'on n'ait rien compris, ni l'un ni l'autre ?..
FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !
Je souhaiterai, en vba, brider la commande Fichier
Enregistrer.
Mon objectif est d'empêcher l'utilisateur d'enregistrer
un
bon de commande si certaines infos sont manquantes.
J'ai créé une procédure Workbook_BeforeSave qui teste la
validité des cellules en question (dans l'exemple ci-
dessous la cellule 20 puis 22)mais malgré la présence
d"Exit sub, la boîte de dialogue Enregistrer ne se
referme
pas !
reponse = Range("C20").Value
Select Case reponse
Case Is <> "Non"
Select Case Len(Range("C22"))
Case Is < 7
MsgBox "N° de devis invalide !", vbCritical
Exit Sub
End Select
End Select
Merci de votre aide
.
-----Message d'origine-----
Bonsoir,
Comment est composé un numéro de devis valide ?
Supposons un numéro comme 12345 (5 chiffres) mais mis en
forme avec un format
personalisé (pour des raisons d'homogénéité de la
présentation pas ex) du type
"0000000".
Si tu as ce cas de figure (où une situation semblable),
la cellule affiche
0012345 (7 chiffres) mais le nombre visible dans la barre
de formule est 12345
(5 chiffres).
En VBA, dans cette situation, ton test Len(Range("C22"))
renvoie 5 alors qu'un
test sur le texte affiché dans la cellule, comme Len(Range
("C22").Text) renverra
7.
Dans l'autre sens, un nombre comme 12345,12 affiché au
format perso "0"
apparaîtra comme 12345 (5 chiffres) alors qu'en réalité
Len(Range("C22")) va
renvoyer 8...
Ceci dit, après cette remarque peut-être sans objet pour
te dépanner, je pense
que la solution proposée par Denis *devrait* fonctionner.
Ecrite très légèrement
différemment, j'obtiens le résultat que tu sembles
attendre en testant le texte
affiché dans la cellule (si le numéro est invalide, ton
message s'affiche, point
final, et si le numéro est valide la boite de dialogue
d'enregistrement
s'affiche) :
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As
Boolean, Cancel As Boolean)
reponse = Range("C20").Value
Select Case reponse
Case Is <> "Non"
Select Case Len(Range("C22").Text)
Case Is < 7
MsgBox "N° de devis invalide !", vbCritical
Cancel = True
End Select
End Select
End Sub
A moins qu'on n'ait rien compris, ni l'un ni l'autre ?..
FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !
Je souhaiterai, en vba, brider la commande Fichier
Enregistrer.
Mon objectif est d'empêcher l'utilisateur d'enregistrer
un
bon de commande si certaines infos sont manquantes.
J'ai créé une procédure Workbook_BeforeSave qui teste la
validité des cellules en question (dans l'exemple ci-
dessous la cellule 20 puis 22)mais malgré la présence
d"Exit sub, la boîte de dialogue Enregistrer ne se
referme
pas !
reponse = Range("C20").Value
Select Case reponse
Case Is <> "Non"
Select Case Len(Range("C22"))
Case Is < 7
MsgBox "N° de devis invalide !", vbCritical
Exit Sub
End Select
End Select
Merci de votre aide
.