Bonjour,
Dans un classeur, j'ai 2 feuilles du nom de: Devis1page, Devis2pages.
Je voudrais quand Devis1page en J3
si je rentre un N° de feuille qui correspondrai
à Devis2pages j'ai un message d'erreur.
J'ai écrit cela mais ça ne fonctionne pas.
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
Dim vNom As String
vNom = ("Devis1page")
If Target.Address = "$J$6" Then
ValideSaisie
LectureDeJ6
ActiveSheet.Unprotect
EcritureDeB10
ActiveSheet.Protect
ElseIf Target.Address = "$J$3" Then
RéouvreDevis1page Target.Value
If vNom = ("Devis2pages") Then
Message = MsgBox("ERREUR, c'est un Devis 2 Pages",
,
"FERRE Jean-Raymond")
ActiveSheet.Unprotect
Range("B10,B11,J3").Select
Selection.ClearContents
ActiveSheet.Protect
Range("J3").Select
Range("J3").Activate
Else
MaValeurDeB10
MaValeurDeJ6
ActiveSheet.Protect
End If
End If
End Sub
Si quelqu'un veut bien m'aider à corriger !!
Merci par avance.
Peponne31
Bonjour,
Dans un classeur, j'ai 2 feuilles du nom de: Devis1page, Devis2pages.
Je voudrais quand Devis1page en J3
si je rentre un N° de feuille qui correspondrai
à Devis2pages j'ai un message d'erreur.
J'ai écrit cela mais ça ne fonctionne pas.
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
Dim vNom As String
vNom = ("Devis1page")
If Target.Address = "$J$6" Then
ValideSaisie
LectureDeJ6
ActiveSheet.Unprotect
EcritureDeB10
ActiveSheet.Protect
ElseIf Target.Address = "$J$3" Then
RéouvreDevis1page Target.Value
If vNom = ("Devis2pages") Then
Message = MsgBox("ERREUR, c'est un Devis 2 Pages",
,
"FERRE Jean-Raymond")
ActiveSheet.Unprotect
Range("B10,B11,J3").Select
Selection.ClearContents
ActiveSheet.Protect
Range("J3").Select
Range("J3").Activate
Else
MaValeurDeB10
MaValeurDeJ6
ActiveSheet.Protect
End If
End If
End Sub
Si quelqu'un veut bien m'aider à corriger !!
Merci par avance.
Peponne31
Bonjour,
Dans un classeur, j'ai 2 feuilles du nom de: Devis1page, Devis2pages.
Je voudrais quand Devis1page en J3
si je rentre un N° de feuille qui correspondrai
à Devis2pages j'ai un message d'erreur.
J'ai écrit cela mais ça ne fonctionne pas.
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
Dim vNom As String
vNom = ("Devis1page")
If Target.Address = "$J$6" Then
ValideSaisie
LectureDeJ6
ActiveSheet.Unprotect
EcritureDeB10
ActiveSheet.Protect
ElseIf Target.Address = "$J$3" Then
RéouvreDevis1page Target.Value
If vNom = ("Devis2pages") Then
Message = MsgBox("ERREUR, c'est un Devis 2 Pages",
,
"FERRE Jean-Raymond")
ActiveSheet.Unprotect
Range("B10,B11,J3").Select
Selection.ClearContents
ActiveSheet.Protect
Range("J3").Select
Range("J3").Activate
Else
MaValeurDeB10
MaValeurDeJ6
ActiveSheet.Protect
End If
End If
End Sub
Si quelqu'un veut bien m'aider à corriger !!
Merci par avance.
Peponne31
Bonsoir Peponne31,
J'ai un peu de mal à saisir ce que tu veux faire, désolé :o(
En début de proc tu défini "vNom" à "Devis1page" il ne peut donc pas être à
"Devis2pages" dans la suite du code ??? (tu contrôle sa valeur à "If vNom =
("Devis2pages") Then").
En attente de plus de précisions.
Hervé.
"Peponne31" a écrit dans le message de
news:
> Bonjour,
>
> Dans un classeur, j'ai 2 feuilles du nom de: Devis1page, Devis2pages.
> Je voudrais quand Devis1page en J3
> si je rentre un N° de feuille qui correspondrai
> à Devis2pages j'ai un message d'erreur.
> J'ai écrit cela mais ça ne fonctionne pas.
>
> Private Sub Worksheet_Change(ByVal Target As Range)
> Application.ScreenUpdating = False
> Dim vNom As String
> vNom = ("Devis1page")
> If Target.Address = "$J$6" Then
> ValideSaisie
> LectureDeJ6
> ActiveSheet.Unprotect
> EcritureDeB10
> ActiveSheet.Protect
> ElseIf Target.Address = "$J$3" Then
> RéouvreDevis1page Target.Value
> If vNom = ("Devis2pages") Then
> Message = MsgBox("ERREUR, c'est un Devis 2 Pages",
> ,
> "FERRE Jean-Raymond")
> ActiveSheet.Unprotect
> Range("B10,B11,J3").Select
> Selection.ClearContents
> ActiveSheet.Protect
> Range("J3").Select
> Range("J3").Activate
> Else
> MaValeurDeB10
> MaValeurDeJ6
> ActiveSheet.Protect
> End If
> End If
> End Sub
> Si quelqu'un veut bien m'aider à corriger !!
> Merci par avance.
> Peponne31
Bonsoir Peponne31,
J'ai un peu de mal à saisir ce que tu veux faire, désolé :o(
En début de proc tu défini "vNom" à "Devis1page" il ne peut donc pas être à
"Devis2pages" dans la suite du code ??? (tu contrôle sa valeur à "If vNom =
("Devis2pages") Then").
En attente de plus de précisions.
Hervé.
"Peponne31" <Peponne31@discussions.microsoft.com> a écrit dans le message de
news:F19755BF-2F6D-4715-9F39-F55174F2850E@microsoft.com...
> Bonjour,
>
> Dans un classeur, j'ai 2 feuilles du nom de: Devis1page, Devis2pages.
> Je voudrais quand Devis1page en J3
> si je rentre un N° de feuille qui correspondrai
> à Devis2pages j'ai un message d'erreur.
> J'ai écrit cela mais ça ne fonctionne pas.
>
> Private Sub Worksheet_Change(ByVal Target As Range)
> Application.ScreenUpdating = False
> Dim vNom As String
> vNom = ("Devis1page")
> If Target.Address = "$J$6" Then
> ValideSaisie
> LectureDeJ6
> ActiveSheet.Unprotect
> EcritureDeB10
> ActiveSheet.Protect
> ElseIf Target.Address = "$J$3" Then
> RéouvreDevis1page Target.Value
> If vNom = ("Devis2pages") Then
> Message = MsgBox("ERREUR, c'est un Devis 2 Pages",
> ,
> "FERRE Jean-Raymond")
> ActiveSheet.Unprotect
> Range("B10,B11,J3").Select
> Selection.ClearContents
> ActiveSheet.Protect
> Range("J3").Select
> Range("J3").Activate
> Else
> MaValeurDeB10
> MaValeurDeJ6
> ActiveSheet.Protect
> End If
> End If
> End Sub
> Si quelqu'un veut bien m'aider à corriger !!
> Merci par avance.
> Peponne31
Bonsoir Peponne31,
J'ai un peu de mal à saisir ce que tu veux faire, désolé :o(
En début de proc tu défini "vNom" à "Devis1page" il ne peut donc pas être à
"Devis2pages" dans la suite du code ??? (tu contrôle sa valeur à "If vNom =
("Devis2pages") Then").
En attente de plus de précisions.
Hervé.
"Peponne31" a écrit dans le message de
news:
> Bonjour,
>
> Dans un classeur, j'ai 2 feuilles du nom de: Devis1page, Devis2pages.
> Je voudrais quand Devis1page en J3
> si je rentre un N° de feuille qui correspondrai
> à Devis2pages j'ai un message d'erreur.
> J'ai écrit cela mais ça ne fonctionne pas.
>
> Private Sub Worksheet_Change(ByVal Target As Range)
> Application.ScreenUpdating = False
> Dim vNom As String
> vNom = ("Devis1page")
> If Target.Address = "$J$6" Then
> ValideSaisie
> LectureDeJ6
> ActiveSheet.Unprotect
> EcritureDeB10
> ActiveSheet.Protect
> ElseIf Target.Address = "$J$3" Then
> RéouvreDevis1page Target.Value
> If vNom = ("Devis2pages") Then
> Message = MsgBox("ERREUR, c'est un Devis 2 Pages",
> ,
> "FERRE Jean-Raymond")
> ActiveSheet.Unprotect
> Range("B10,B11,J3").Select
> Selection.ClearContents
> ActiveSheet.Protect
> Range("J3").Select
> Range("J3").Activate
> Else
> MaValeurDeB10
> MaValeurDeJ6
> ActiveSheet.Protect
> End If
> End If
> End Sub
> Si quelqu'un veut bien m'aider à corriger !!
> Merci par avance.
> Peponne31
Bonsoir Hervé,
je voudrais empècher la recopie d'une feuille Devis2pages dans la feuille
Devis1page et vice versa, ces feuilles étant des formulaires, J'ai modifié
If vNom = ("Devis2pages") Then
en If vNom <> ("Devis1page") Then
mais ça ne fonctionne pas
"Hervé" a écrit :Bonsoir Peponne31,
J'ai un peu de mal à saisir ce que tu veux faire, désolé :o(
En début de proc tu défini "vNom" à "Devis1page" il ne peut donc pas être à
"Devis2pages" dans la suite du code ??? (tu contrôle sa valeur à "If vNom =
("Devis2pages") Then").
En attente de plus de précisions.
Hervé.
"Peponne31" a écrit dans le message de
news:Bonjour,
Dans un classeur, j'ai 2 feuilles du nom de: Devis1page, Devis2pages.
Je voudrais quand Devis1page en J3
si je rentre un N° de feuille qui correspondrai
à Devis2pages j'ai un message d'erreur.
J'ai écrit cela mais ça ne fonctionne pas.
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
Dim vNom As String
vNom = ("Devis1page")
If Target.Address = "$J$6" Then
ValideSaisie
LectureDeJ6
ActiveSheet.Unprotect
EcritureDeB10
ActiveSheet.Protect
ElseIf Target.Address = "$J$3" Then
RéouvreDevis1page Target.Value
If vNom = ("Devis2pages") Then
Message = MsgBox("ERREUR, c'est un Devis 2 Pages",
,
"FERRE Jean-Raymond")
ActiveSheet.Unprotect
Range("B10,B11,J3").Select
Selection.ClearContents
ActiveSheet.Protect
Range("J3").Select
Range("J3").Activate
Else
MaValeurDeB10
MaValeurDeJ6
ActiveSheet.Protect
End If
End If
End Sub
Si quelqu'un veut bien m'aider à corriger !!
Merci par avance.
Peponne31
Bonsoir Hervé,
je voudrais empècher la recopie d'une feuille Devis2pages dans la feuille
Devis1page et vice versa, ces feuilles étant des formulaires, J'ai modifié
If vNom = ("Devis2pages") Then
en If vNom <> ("Devis1page") Then
mais ça ne fonctionne pas
"Hervé" a écrit :
Bonsoir Peponne31,
J'ai un peu de mal à saisir ce que tu veux faire, désolé :o(
En début de proc tu défini "vNom" à "Devis1page" il ne peut donc pas être à
"Devis2pages" dans la suite du code ??? (tu contrôle sa valeur à "If vNom =
("Devis2pages") Then").
En attente de plus de précisions.
Hervé.
"Peponne31" <Peponne31@discussions.microsoft.com> a écrit dans le message de
news:F19755BF-2F6D-4715-9F39-F55174F2850E@microsoft.com...
Bonjour,
Dans un classeur, j'ai 2 feuilles du nom de: Devis1page, Devis2pages.
Je voudrais quand Devis1page en J3
si je rentre un N° de feuille qui correspondrai
à Devis2pages j'ai un message d'erreur.
J'ai écrit cela mais ça ne fonctionne pas.
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
Dim vNom As String
vNom = ("Devis1page")
If Target.Address = "$J$6" Then
ValideSaisie
LectureDeJ6
ActiveSheet.Unprotect
EcritureDeB10
ActiveSheet.Protect
ElseIf Target.Address = "$J$3" Then
RéouvreDevis1page Target.Value
If vNom = ("Devis2pages") Then
Message = MsgBox("ERREUR, c'est un Devis 2 Pages",
,
"FERRE Jean-Raymond")
ActiveSheet.Unprotect
Range("B10,B11,J3").Select
Selection.ClearContents
ActiveSheet.Protect
Range("J3").Select
Range("J3").Activate
Else
MaValeurDeB10
MaValeurDeJ6
ActiveSheet.Protect
End If
End If
End Sub
Si quelqu'un veut bien m'aider à corriger !!
Merci par avance.
Peponne31
Bonsoir Hervé,
je voudrais empècher la recopie d'une feuille Devis2pages dans la feuille
Devis1page et vice versa, ces feuilles étant des formulaires, J'ai modifié
If vNom = ("Devis2pages") Then
en If vNom <> ("Devis1page") Then
mais ça ne fonctionne pas
"Hervé" a écrit :Bonsoir Peponne31,
J'ai un peu de mal à saisir ce que tu veux faire, désolé :o(
En début de proc tu défini "vNom" à "Devis1page" il ne peut donc pas être à
"Devis2pages" dans la suite du code ??? (tu contrôle sa valeur à "If vNom =
("Devis2pages") Then").
En attente de plus de précisions.
Hervé.
"Peponne31" a écrit dans le message de
news:Bonjour,
Dans un classeur, j'ai 2 feuilles du nom de: Devis1page, Devis2pages.
Je voudrais quand Devis1page en J3
si je rentre un N° de feuille qui correspondrai
à Devis2pages j'ai un message d'erreur.
J'ai écrit cela mais ça ne fonctionne pas.
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
Dim vNom As String
vNom = ("Devis1page")
If Target.Address = "$J$6" Then
ValideSaisie
LectureDeJ6
ActiveSheet.Unprotect
EcritureDeB10
ActiveSheet.Protect
ElseIf Target.Address = "$J$3" Then
RéouvreDevis1page Target.Value
If vNom = ("Devis2pages") Then
Message = MsgBox("ERREUR, c'est un Devis 2 Pages",
,
"FERRE Jean-Raymond")
ActiveSheet.Unprotect
Range("B10,B11,J3").Select
Selection.ClearContents
ActiveSheet.Protect
Range("J3").Select
Range("J3").Activate
Else
MaValeurDeB10
MaValeurDeJ6
ActiveSheet.Protect
End If
End If
End Sub
Si quelqu'un veut bien m'aider à corriger !!
Merci par avance.
Peponne31
Bonsoir,
Pour empêcher toute recopie (ou copie) une solution radicale :
Private Sub Workbook_SheetSelectionChange( _
ByVal Sh As Object, ByVal Target As Range)
Application.CutCopyMode = False
End Sub
A recopier dans le module ThisWorkbook du classeur qui t'intéresse.
Attention, ça empêche tout copier/coller (tant que les macros sont
activées).
FS
--
Frédéric SIGONNEAU
Modules et modèles pour Excel :
http://frederic.sigonneau.free.fr/
Peponne31 a écrit :
> Bonsoir Hervé,
>
> je voudrais empècher la recopie d'une feuille Devis2pages dans la feuille
> Devis1page et vice versa, ces feuilles étant des formulaires, J'ai modifié
> If vNom = ("Devis2pages") Then
> en If vNom <> ("Devis1page") Then
> mais ça ne fonctionne pas
> "Hervé" a écrit :
>
>> Bonsoir Peponne31,
>>
>> J'ai un peu de mal à saisir ce que tu veux faire, désolé :o(
>>
>> En début de proc tu défini "vNom" à "Devis1page" il ne peut donc pas être à
>> "Devis2pages" dans la suite du code ??? (tu contrôle sa valeur à "If vNom =
>> ("Devis2pages") Then").
>>
>> En attente de plus de précisions.
>>
>> Hervé.
>>
>>
>> "Peponne31" a écrit dans le message de
>> news:
>>> Bonjour,
>>>
>>> Dans un classeur, j'ai 2 feuilles du nom de: Devis1page, Devis2pages.
>>> Je voudrais quand Devis1page en J3
>>> si je rentre un N° de feuille qui correspondrai
>>> à Devis2pages j'ai un message d'erreur.
>>> J'ai écrit cela mais ça ne fonctionne pas.
>>>
>>> Private Sub Worksheet_Change(ByVal Target As Range)
>>> Application.ScreenUpdating = False
>>> Dim vNom As String
>>> vNom = ("Devis1page")
>>> If Target.Address = "$J$6" Then
>>> ValideSaisie
>>> LectureDeJ6
>>> ActiveSheet.Unprotect
>>> EcritureDeB10
>>> ActiveSheet.Protect
>>> ElseIf Target.Address = "$J$3" Then
>>> RéouvreDevis1page Target.Value
>>> If vNom = ("Devis2pages") Then
>>> Message = MsgBox("ERREUR, c'est un Devis 2 Pages",
>>> ,
>>> "FERRE Jean-Raymond")
>>> ActiveSheet.Unprotect
>>> Range("B10,B11,J3").Select
>>> Selection.ClearContents
>>> ActiveSheet.Protect
>>> Range("J3").Select
>>> Range("J3").Activate
>>> Else
>>> MaValeurDeB10
>>> MaValeurDeJ6
>>> ActiveSheet.Protect
>>> End If
>>> End If
>>> End Sub
>>> Si quelqu'un veut bien m'aider à corriger !!
>>> Merci par avance.
>>> Peponne31
Bonsoir,
Pour empêcher toute recopie (ou copie) une solution radicale :
Private Sub Workbook_SheetSelectionChange( _
ByVal Sh As Object, ByVal Target As Range)
Application.CutCopyMode = False
End Sub
A recopier dans le module ThisWorkbook du classeur qui t'intéresse.
Attention, ça empêche tout copier/coller (tant que les macros sont
activées).
FS
--
Frédéric SIGONNEAU
Modules et modèles pour Excel :
http://frederic.sigonneau.free.fr/
Peponne31 a écrit :
> Bonsoir Hervé,
>
> je voudrais empècher la recopie d'une feuille Devis2pages dans la feuille
> Devis1page et vice versa, ces feuilles étant des formulaires, J'ai modifié
> If vNom = ("Devis2pages") Then
> en If vNom <> ("Devis1page") Then
> mais ça ne fonctionne pas
> "Hervé" a écrit :
>
>> Bonsoir Peponne31,
>>
>> J'ai un peu de mal à saisir ce que tu veux faire, désolé :o(
>>
>> En début de proc tu défini "vNom" à "Devis1page" il ne peut donc pas être à
>> "Devis2pages" dans la suite du code ??? (tu contrôle sa valeur à "If vNom =
>> ("Devis2pages") Then").
>>
>> En attente de plus de précisions.
>>
>> Hervé.
>>
>>
>> "Peponne31" <Peponne31@discussions.microsoft.com> a écrit dans le message de
>> news:F19755BF-2F6D-4715-9F39-F55174F2850E@microsoft.com...
>>> Bonjour,
>>>
>>> Dans un classeur, j'ai 2 feuilles du nom de: Devis1page, Devis2pages.
>>> Je voudrais quand Devis1page en J3
>>> si je rentre un N° de feuille qui correspondrai
>>> à Devis2pages j'ai un message d'erreur.
>>> J'ai écrit cela mais ça ne fonctionne pas.
>>>
>>> Private Sub Worksheet_Change(ByVal Target As Range)
>>> Application.ScreenUpdating = False
>>> Dim vNom As String
>>> vNom = ("Devis1page")
>>> If Target.Address = "$J$6" Then
>>> ValideSaisie
>>> LectureDeJ6
>>> ActiveSheet.Unprotect
>>> EcritureDeB10
>>> ActiveSheet.Protect
>>> ElseIf Target.Address = "$J$3" Then
>>> RéouvreDevis1page Target.Value
>>> If vNom = ("Devis2pages") Then
>>> Message = MsgBox("ERREUR, c'est un Devis 2 Pages",
>>> ,
>>> "FERRE Jean-Raymond")
>>> ActiveSheet.Unprotect
>>> Range("B10,B11,J3").Select
>>> Selection.ClearContents
>>> ActiveSheet.Protect
>>> Range("J3").Select
>>> Range("J3").Activate
>>> Else
>>> MaValeurDeB10
>>> MaValeurDeJ6
>>> ActiveSheet.Protect
>>> End If
>>> End If
>>> End Sub
>>> Si quelqu'un veut bien m'aider à corriger !!
>>> Merci par avance.
>>> Peponne31
Bonsoir,
Pour empêcher toute recopie (ou copie) une solution radicale :
Private Sub Workbook_SheetSelectionChange( _
ByVal Sh As Object, ByVal Target As Range)
Application.CutCopyMode = False
End Sub
A recopier dans le module ThisWorkbook du classeur qui t'intéresse.
Attention, ça empêche tout copier/coller (tant que les macros sont
activées).
FS
--
Frédéric SIGONNEAU
Modules et modèles pour Excel :
http://frederic.sigonneau.free.fr/
Peponne31 a écrit :
> Bonsoir Hervé,
>
> je voudrais empècher la recopie d'une feuille Devis2pages dans la feuille
> Devis1page et vice versa, ces feuilles étant des formulaires, J'ai modifié
> If vNom = ("Devis2pages") Then
> en If vNom <> ("Devis1page") Then
> mais ça ne fonctionne pas
> "Hervé" a écrit :
>
>> Bonsoir Peponne31,
>>
>> J'ai un peu de mal à saisir ce que tu veux faire, désolé :o(
>>
>> En début de proc tu défini "vNom" à "Devis1page" il ne peut donc pas être à
>> "Devis2pages" dans la suite du code ??? (tu contrôle sa valeur à "If vNom =
>> ("Devis2pages") Then").
>>
>> En attente de plus de précisions.
>>
>> Hervé.
>>
>>
>> "Peponne31" a écrit dans le message de
>> news:
>>> Bonjour,
>>>
>>> Dans un classeur, j'ai 2 feuilles du nom de: Devis1page, Devis2pages.
>>> Je voudrais quand Devis1page en J3
>>> si je rentre un N° de feuille qui correspondrai
>>> à Devis2pages j'ai un message d'erreur.
>>> J'ai écrit cela mais ça ne fonctionne pas.
>>>
>>> Private Sub Worksheet_Change(ByVal Target As Range)
>>> Application.ScreenUpdating = False
>>> Dim vNom As String
>>> vNom = ("Devis1page")
>>> If Target.Address = "$J$6" Then
>>> ValideSaisie
>>> LectureDeJ6
>>> ActiveSheet.Unprotect
>>> EcritureDeB10
>>> ActiveSheet.Protect
>>> ElseIf Target.Address = "$J$3" Then
>>> RéouvreDevis1page Target.Value
>>> If vNom = ("Devis2pages") Then
>>> Message = MsgBox("ERREUR, c'est un Devis 2 Pages",
>>> ,
>>> "FERRE Jean-Raymond")
>>> ActiveSheet.Unprotect
>>> Range("B10,B11,J3").Select
>>> Selection.ClearContents
>>> ActiveSheet.Protect
>>> Range("J3").Select
>>> Range("J3").Activate
>>> Else
>>> MaValeurDeB10
>>> MaValeurDeJ6
>>> ActiveSheet.Protect
>>> End If
>>> End If
>>> End Sub
>>> Si quelqu'un veut bien m'aider à corriger !!
>>> Merci par avance.
>>> Peponne31
Bonsoir FS
Merci pour ta réponse, mais ce n'est pas ce que je recherche
les feuille Devis1page et Devis2pages sont des formulaires qui me servent
à
réaliser des devis en maçonnerie. Ces devis sont imprimé soit sur une
feuille
ou sur 2 feuilles papier tout dépand du travail à faire. C'est pour cela
que
dans le classeur j'ai une feuille nommée Devis1page et une autre
Devis2pages
.Si je veux modifier un devis je le rappelle par son N° en J3 et ça
fonctionne, mais je ne sais pas faire la differance entre 1 feuille et 2
feuilles, si je rappelle un devis sur 2 feuilles dans le formulaire
Devis1page il y va avec des erreurs dans les cellules, c'est pour ça que
je
voudrais interdire la recopie d'un devis 2 pages sur sur le formulaire
Devis1page et vice versa.
Merci
"FS" a écrit :Bonsoir,
Pour empêcher toute recopie (ou copie) une solution radicale :
Private Sub Workbook_SheetSelectionChange( _
ByVal Sh As Object, ByVal Target As Range)
Application.CutCopyMode = False
End Sub
A recopier dans le module ThisWorkbook du classeur qui t'intéresse.
Attention, ça empêche tout copier/coller (tant que les macros sont
activées).
FS
--
Frédéric SIGONNEAU
Modules et modèles pour Excel :
http://frederic.sigonneau.free.fr/
Peponne31 a écrit :
> Bonsoir Hervé,
>
> je voudrais empècher la recopie d'une feuille Devis2pages dans la
> feuille
> Devis1page et vice versa, ces feuilles étant des formulaires, J'ai
> modifié
> If vNom = ("Devis2pages") Then
> en If vNom <> ("Devis1page") Then
> mais ça ne fonctionne pas
> "Hervé" a écrit :
>
>> Bonsoir Peponne31,
>>
>> J'ai un peu de mal à saisir ce que tu veux faire, désolé :o(
>>
>> En début de proc tu défini "vNom" à "Devis1page" il ne peut donc pas
>> être à
>> "Devis2pages" dans la suite du code ??? (tu contrôle sa valeur à "If
>> vNom >> >> ("Devis2pages") Then").
>>
>> En attente de plus de précisions.
>>
>> Hervé.
>>
>>
>> "Peponne31" a écrit dans le
>> message de
>> news:
>>> Bonjour,
>>>
>>> Dans un classeur, j'ai 2 feuilles du nom de: Devis1page, Devis2pages.
>>> Je voudrais quand Devis1page en J3
>>> si je rentre un N° de feuille qui correspondrai
>>> à Devis2pages j'ai un message d'erreur.
>>> J'ai écrit cela mais ça ne fonctionne pas.
>>>
>>> Private Sub Worksheet_Change(ByVal Target As Range)
>>> Application.ScreenUpdating = False
>>> Dim vNom As String
>>> vNom = ("Devis1page")
>>> If Target.Address = "$J$6" Then
>>> ValideSaisie
>>> LectureDeJ6
>>> ActiveSheet.Unprotect
>>> EcritureDeB10
>>> ActiveSheet.Protect
>>> ElseIf Target.Address = "$J$3" Then
>>> RéouvreDevis1page Target.Value
>>> If vNom = ("Devis2pages") Then
>>> Message = MsgBox("ERREUR, c'est un Devis 2
>>> Pages",
>>> ,
>>> "FERRE Jean-Raymond")
>>> ActiveSheet.Unprotect
>>> Range("B10,B11,J3").Select
>>> Selection.ClearContents
>>> ActiveSheet.Protect
>>> Range("J3").Select
>>> Range("J3").Activate
>>> Else
>>> MaValeurDeB10
>>> MaValeurDeJ6
>>> ActiveSheet.Protect
>>> End If
>>> End If
>>> End Sub
>>> Si quelqu'un veut bien m'aider à corriger !!
>>> Merci par avance.
>>> Peponne31
Bonsoir FS
Merci pour ta réponse, mais ce n'est pas ce que je recherche
les feuille Devis1page et Devis2pages sont des formulaires qui me servent
à
réaliser des devis en maçonnerie. Ces devis sont imprimé soit sur une
feuille
ou sur 2 feuilles papier tout dépand du travail à faire. C'est pour cela
que
dans le classeur j'ai une feuille nommée Devis1page et une autre
Devis2pages
.Si je veux modifier un devis je le rappelle par son N° en J3 et ça
fonctionne, mais je ne sais pas faire la differance entre 1 feuille et 2
feuilles, si je rappelle un devis sur 2 feuilles dans le formulaire
Devis1page il y va avec des erreurs dans les cellules, c'est pour ça que
je
voudrais interdire la recopie d'un devis 2 pages sur sur le formulaire
Devis1page et vice versa.
Merci
"FS" a écrit :
Bonsoir,
Pour empêcher toute recopie (ou copie) une solution radicale :
Private Sub Workbook_SheetSelectionChange( _
ByVal Sh As Object, ByVal Target As Range)
Application.CutCopyMode = False
End Sub
A recopier dans le module ThisWorkbook du classeur qui t'intéresse.
Attention, ça empêche tout copier/coller (tant que les macros sont
activées).
FS
--
Frédéric SIGONNEAU
Modules et modèles pour Excel :
http://frederic.sigonneau.free.fr/
Peponne31 a écrit :
> Bonsoir Hervé,
>
> je voudrais empècher la recopie d'une feuille Devis2pages dans la
> feuille
> Devis1page et vice versa, ces feuilles étant des formulaires, J'ai
> modifié
> If vNom = ("Devis2pages") Then
> en If vNom <> ("Devis1page") Then
> mais ça ne fonctionne pas
> "Hervé" a écrit :
>
>> Bonsoir Peponne31,
>>
>> J'ai un peu de mal à saisir ce que tu veux faire, désolé :o(
>>
>> En début de proc tu défini "vNom" à "Devis1page" il ne peut donc pas
>> être à
>> "Devis2pages" dans la suite du code ??? (tu contrôle sa valeur à "If
>> vNom >> >> ("Devis2pages") Then").
>>
>> En attente de plus de précisions.
>>
>> Hervé.
>>
>>
>> "Peponne31" <Peponne31@discussions.microsoft.com> a écrit dans le
>> message de
>> news:F19755BF-2F6D-4715-9F39-F55174F2850E@microsoft.com...
>>> Bonjour,
>>>
>>> Dans un classeur, j'ai 2 feuilles du nom de: Devis1page, Devis2pages.
>>> Je voudrais quand Devis1page en J3
>>> si je rentre un N° de feuille qui correspondrai
>>> à Devis2pages j'ai un message d'erreur.
>>> J'ai écrit cela mais ça ne fonctionne pas.
>>>
>>> Private Sub Worksheet_Change(ByVal Target As Range)
>>> Application.ScreenUpdating = False
>>> Dim vNom As String
>>> vNom = ("Devis1page")
>>> If Target.Address = "$J$6" Then
>>> ValideSaisie
>>> LectureDeJ6
>>> ActiveSheet.Unprotect
>>> EcritureDeB10
>>> ActiveSheet.Protect
>>> ElseIf Target.Address = "$J$3" Then
>>> RéouvreDevis1page Target.Value
>>> If vNom = ("Devis2pages") Then
>>> Message = MsgBox("ERREUR, c'est un Devis 2
>>> Pages",
>>> ,
>>> "FERRE Jean-Raymond")
>>> ActiveSheet.Unprotect
>>> Range("B10,B11,J3").Select
>>> Selection.ClearContents
>>> ActiveSheet.Protect
>>> Range("J3").Select
>>> Range("J3").Activate
>>> Else
>>> MaValeurDeB10
>>> MaValeurDeJ6
>>> ActiveSheet.Protect
>>> End If
>>> End If
>>> End Sub
>>> Si quelqu'un veut bien m'aider à corriger !!
>>> Merci par avance.
>>> Peponne31
Bonsoir FS
Merci pour ta réponse, mais ce n'est pas ce que je recherche
les feuille Devis1page et Devis2pages sont des formulaires qui me servent
à
réaliser des devis en maçonnerie. Ces devis sont imprimé soit sur une
feuille
ou sur 2 feuilles papier tout dépand du travail à faire. C'est pour cela
que
dans le classeur j'ai une feuille nommée Devis1page et une autre
Devis2pages
.Si je veux modifier un devis je le rappelle par son N° en J3 et ça
fonctionne, mais je ne sais pas faire la differance entre 1 feuille et 2
feuilles, si je rappelle un devis sur 2 feuilles dans le formulaire
Devis1page il y va avec des erreurs dans les cellules, c'est pour ça que
je
voudrais interdire la recopie d'un devis 2 pages sur sur le formulaire
Devis1page et vice versa.
Merci
"FS" a écrit :Bonsoir,
Pour empêcher toute recopie (ou copie) une solution radicale :
Private Sub Workbook_SheetSelectionChange( _
ByVal Sh As Object, ByVal Target As Range)
Application.CutCopyMode = False
End Sub
A recopier dans le module ThisWorkbook du classeur qui t'intéresse.
Attention, ça empêche tout copier/coller (tant que les macros sont
activées).
FS
--
Frédéric SIGONNEAU
Modules et modèles pour Excel :
http://frederic.sigonneau.free.fr/
Peponne31 a écrit :
> Bonsoir Hervé,
>
> je voudrais empècher la recopie d'une feuille Devis2pages dans la
> feuille
> Devis1page et vice versa, ces feuilles étant des formulaires, J'ai
> modifié
> If vNom = ("Devis2pages") Then
> en If vNom <> ("Devis1page") Then
> mais ça ne fonctionne pas
> "Hervé" a écrit :
>
>> Bonsoir Peponne31,
>>
>> J'ai un peu de mal à saisir ce que tu veux faire, désolé :o(
>>
>> En début de proc tu défini "vNom" à "Devis1page" il ne peut donc pas
>> être à
>> "Devis2pages" dans la suite du code ??? (tu contrôle sa valeur à "If
>> vNom >> >> ("Devis2pages") Then").
>>
>> En attente de plus de précisions.
>>
>> Hervé.
>>
>>
>> "Peponne31" a écrit dans le
>> message de
>> news:
>>> Bonjour,
>>>
>>> Dans un classeur, j'ai 2 feuilles du nom de: Devis1page, Devis2pages.
>>> Je voudrais quand Devis1page en J3
>>> si je rentre un N° de feuille qui correspondrai
>>> à Devis2pages j'ai un message d'erreur.
>>> J'ai écrit cela mais ça ne fonctionne pas.
>>>
>>> Private Sub Worksheet_Change(ByVal Target As Range)
>>> Application.ScreenUpdating = False
>>> Dim vNom As String
>>> vNom = ("Devis1page")
>>> If Target.Address = "$J$6" Then
>>> ValideSaisie
>>> LectureDeJ6
>>> ActiveSheet.Unprotect
>>> EcritureDeB10
>>> ActiveSheet.Protect
>>> ElseIf Target.Address = "$J$3" Then
>>> RéouvreDevis1page Target.Value
>>> If vNom = ("Devis2pages") Then
>>> Message = MsgBox("ERREUR, c'est un Devis 2
>>> Pages",
>>> ,
>>> "FERRE Jean-Raymond")
>>> ActiveSheet.Unprotect
>>> Range("B10,B11,J3").Select
>>> Selection.ClearContents
>>> ActiveSheet.Protect
>>> Range("J3").Select
>>> Range("J3").Activate
>>> Else
>>> MaValeurDeB10
>>> MaValeurDeJ6
>>> ActiveSheet.Protect
>>> End If
>>> End If
>>> End Sub
>>> Si quelqu'un veut bien m'aider à corriger !!
>>> Merci par avance.
>>> Peponne31
Bonsoir Peponne31,
Je pense avoir compris ce que tu désire réaliser.
Pour savoir si le devis que tu souhaite ouvrir se trouve sur une ou deux
pages (à l'impression bien sûr !) il suffit de connaître le nombre de saut
de pages, si il est égal à zéro, c'est un devis sur une page, dans le cas
contraire, c'est un devis sur deux pages (ou plus si tu le désire, il suffit
d'adapter).
J'ai un peu modifié ta procédure. En admettant que la valeur est changée
dans J3, la proc "RéouvreDevis1page(Target.Value)" devrait retourner un
objet feuille (je pense que le nom de la feuille est la valeur en J3 ?)
ensuite, un contrôle est fait sur le nombre de sauts de pages horizontaux,
si il y à au moins un saut de page, le devis est sur deux pages et ton
message d'erreur sera affiché. Adapte au mieux et revient si tu a d'autres
soucis.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim vNom As String
Dim Fe As Worksheet
Application.ScreenUpdating = False
vNom = ("Devis1page")
If Target.Address = "$J$6" Then
ValideSaisie
LectureDeJ6
ActiveSheet.Unprotect
EcritureDeB10
ActiveSheet.Protect
ElseIf Target.Address = "$J$3" Then
'ici, la proc "RéouvreDevis1page" devrait
'retourner un objet feuille
Set Fe = RéouvreDevis1page(Target.Value)
'si la feuille contient un saut de page
'c'est une feuille à 2 pages à l'impression
If Fe.HPageBreaks.Count >= 1 Then
Message = MsgBox("ERREUR, c'est un Devis 2 Pages", _
, _
"FERRE Jean-Raymond")
ActiveSheet.Unprotect
Range("B10,B11,J3").Select
Selection.ClearContents
ActiveSheet.Protect
Range("J3").Select
Range("J3").Activate
Else
MaValeurDeB10
MaValeurDeJ6
ActiveSheet.Protect
End If
End If
Application.ScreenUpdating = True
Set Fe = Nothing
End Sub
'exemple de fonction (très simple) que retourne une feuille
Function RéouvreDevis1page(C As String) As Worksheet
Set RéouvreDevis1page = Worksheets(C)
End Function
Hervé.
"Peponne31" a écrit dans le message de
news:
> Bonsoir FS
>
> Merci pour ta réponse, mais ce n'est pas ce que je recherche
> les feuille Devis1page et Devis2pages sont des formulaires qui me servent
> à
> réaliser des devis en maçonnerie. Ces devis sont imprimé soit sur une
> feuille
> ou sur 2 feuilles papier tout dépand du travail à faire. C'est pour cela
> que
> dans le classeur j'ai une feuille nommée Devis1page et une autre
> Devis2pages
> .Si je veux modifier un devis je le rappelle par son N° en J3 et ça
> fonctionne, mais je ne sais pas faire la differance entre 1 feuille et 2
> feuilles, si je rappelle un devis sur 2 feuilles dans le formulaire
> Devis1page il y va avec des erreurs dans les cellules, c'est pour ça que
> je
> voudrais interdire la recopie d'un devis 2 pages sur sur le formulaire
> Devis1page et vice versa.
> Merci
>
> "FS" a écrit :
>
>> Bonsoir,
>>
>> Pour empêcher toute recopie (ou copie) une solution radicale :
>>
>> Private Sub Workbook_SheetSelectionChange( _
>> ByVal Sh As Object, ByVal Target As Range)
>> Application.CutCopyMode = False
>> End Sub
>>
>> A recopier dans le module ThisWorkbook du classeur qui t'intéresse.
>> Attention, ça empêche tout copier/coller (tant que les macros sont
>> activées).
>>
>> FS
>> --
>> Frédéric SIGONNEAU
>> Modules et modèles pour Excel :
>> http://frederic.sigonneau.free.fr/
>>
>> Peponne31 a écrit :
>> > Bonsoir Hervé,
>> >
>> > je voudrais empècher la recopie d'une feuille Devis2pages dans la
>> > feuille
>> > Devis1page et vice versa, ces feuilles étant des formulaires, J'ai
>> > modifié
>> > If vNom = ("Devis2pages") Then
>> > en If vNom <> ("Devis1page") Then
>> > mais ça ne fonctionne pas
>> > "Hervé" a écrit :
>> >
>> >> Bonsoir Peponne31,
>> >>
>> >> J'ai un peu de mal à saisir ce que tu veux faire, désolé :o(
>> >>
>> >> En début de proc tu défini "vNom" à "Devis1page" il ne peut donc pas
>> >> être à
>> >> "Devis2pages" dans la suite du code ??? (tu contrôle sa valeur à "If
>> >> vNom > >> >> ("Devis2pages") Then").
>> >>
>> >> En attente de plus de précisions.
>> >>
>> >> Hervé.
>> >>
>> >>
>> >> "Peponne31" a écrit dans le
>> >> message de
>> >> news:
>> >>> Bonjour,
>> >>>
>> >>> Dans un classeur, j'ai 2 feuilles du nom de: Devis1page, Devis2pages.
>> >>> Je voudrais quand Devis1page en J3
>> >>> si je rentre un N° de feuille qui correspondrai
>> >>> à Devis2pages j'ai un message d'erreur.
>> >>> J'ai écrit cela mais ça ne fonctionne pas.
>> >>>
>> >>> Private Sub Worksheet_Change(ByVal Target As Range)
>> >>> Application.ScreenUpdating = False
>> >>> Dim vNom As String
>> >>> vNom = ("Devis1page")
>> >>> If Target.Address = "$J$6" Then
>> >>> ValideSaisie
>> >>> LectureDeJ6
>> >>> ActiveSheet.Unprotect
>> >>> EcritureDeB10
>> >>> ActiveSheet.Protect
>> >>> ElseIf Target.Address = "$J$3" Then
>> >>> RéouvreDevis1page Target.Value
>> >>> If vNom = ("Devis2pages") Then
>> >>> Message = MsgBox("ERREUR, c'est un Devis 2
>> >>> Pages",
>> >>> ,
>> >>> "FERRE Jean-Raymond")
>> >>> ActiveSheet.Unprotect
>> >>> Range("B10,B11,J3").Select
>> >>> Selection.ClearContents
>> >>> ActiveSheet.Protect
>> >>> Range("J3").Select
>> >>> Range("J3").Activate
>> >>> Else
>> >>> MaValeurDeB10
>> >>> MaValeurDeJ6
>> >>> ActiveSheet.Protect
>> >>> End If
>> >>> End If
>> >>> End Sub
>> >>> Si quelqu'un veut bien m'aider à corriger !!
>> >>> Merci par avance.
>> >>> Peponne31
>>
Bonsoir Peponne31,
Je pense avoir compris ce que tu désire réaliser.
Pour savoir si le devis que tu souhaite ouvrir se trouve sur une ou deux
pages (à l'impression bien sûr !) il suffit de connaître le nombre de saut
de pages, si il est égal à zéro, c'est un devis sur une page, dans le cas
contraire, c'est un devis sur deux pages (ou plus si tu le désire, il suffit
d'adapter).
J'ai un peu modifié ta procédure. En admettant que la valeur est changée
dans J3, la proc "RéouvreDevis1page(Target.Value)" devrait retourner un
objet feuille (je pense que le nom de la feuille est la valeur en J3 ?)
ensuite, un contrôle est fait sur le nombre de sauts de pages horizontaux,
si il y à au moins un saut de page, le devis est sur deux pages et ton
message d'erreur sera affiché. Adapte au mieux et revient si tu a d'autres
soucis.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim vNom As String
Dim Fe As Worksheet
Application.ScreenUpdating = False
vNom = ("Devis1page")
If Target.Address = "$J$6" Then
ValideSaisie
LectureDeJ6
ActiveSheet.Unprotect
EcritureDeB10
ActiveSheet.Protect
ElseIf Target.Address = "$J$3" Then
'ici, la proc "RéouvreDevis1page" devrait
'retourner un objet feuille
Set Fe = RéouvreDevis1page(Target.Value)
'si la feuille contient un saut de page
'c'est une feuille à 2 pages à l'impression
If Fe.HPageBreaks.Count >= 1 Then
Message = MsgBox("ERREUR, c'est un Devis 2 Pages", _
, _
"FERRE Jean-Raymond")
ActiveSheet.Unprotect
Range("B10,B11,J3").Select
Selection.ClearContents
ActiveSheet.Protect
Range("J3").Select
Range("J3").Activate
Else
MaValeurDeB10
MaValeurDeJ6
ActiveSheet.Protect
End If
End If
Application.ScreenUpdating = True
Set Fe = Nothing
End Sub
'exemple de fonction (très simple) que retourne une feuille
Function RéouvreDevis1page(C As String) As Worksheet
Set RéouvreDevis1page = Worksheets(C)
End Function
Hervé.
"Peponne31" <Peponne31@discussions.microsoft.com> a écrit dans le message de
news:2F1841AA-B6E5-4FC5-B12C-0C73E470B051@microsoft.com...
> Bonsoir FS
>
> Merci pour ta réponse, mais ce n'est pas ce que je recherche
> les feuille Devis1page et Devis2pages sont des formulaires qui me servent
> à
> réaliser des devis en maçonnerie. Ces devis sont imprimé soit sur une
> feuille
> ou sur 2 feuilles papier tout dépand du travail à faire. C'est pour cela
> que
> dans le classeur j'ai une feuille nommée Devis1page et une autre
> Devis2pages
> .Si je veux modifier un devis je le rappelle par son N° en J3 et ça
> fonctionne, mais je ne sais pas faire la differance entre 1 feuille et 2
> feuilles, si je rappelle un devis sur 2 feuilles dans le formulaire
> Devis1page il y va avec des erreurs dans les cellules, c'est pour ça que
> je
> voudrais interdire la recopie d'un devis 2 pages sur sur le formulaire
> Devis1page et vice versa.
> Merci
>
> "FS" a écrit :
>
>> Bonsoir,
>>
>> Pour empêcher toute recopie (ou copie) une solution radicale :
>>
>> Private Sub Workbook_SheetSelectionChange( _
>> ByVal Sh As Object, ByVal Target As Range)
>> Application.CutCopyMode = False
>> End Sub
>>
>> A recopier dans le module ThisWorkbook du classeur qui t'intéresse.
>> Attention, ça empêche tout copier/coller (tant que les macros sont
>> activées).
>>
>> FS
>> --
>> Frédéric SIGONNEAU
>> Modules et modèles pour Excel :
>> http://frederic.sigonneau.free.fr/
>>
>> Peponne31 a écrit :
>> > Bonsoir Hervé,
>> >
>> > je voudrais empècher la recopie d'une feuille Devis2pages dans la
>> > feuille
>> > Devis1page et vice versa, ces feuilles étant des formulaires, J'ai
>> > modifié
>> > If vNom = ("Devis2pages") Then
>> > en If vNom <> ("Devis1page") Then
>> > mais ça ne fonctionne pas
>> > "Hervé" a écrit :
>> >
>> >> Bonsoir Peponne31,
>> >>
>> >> J'ai un peu de mal à saisir ce que tu veux faire, désolé :o(
>> >>
>> >> En début de proc tu défini "vNom" à "Devis1page" il ne peut donc pas
>> >> être à
>> >> "Devis2pages" dans la suite du code ??? (tu contrôle sa valeur à "If
>> >> vNom > >> >> ("Devis2pages") Then").
>> >>
>> >> En attente de plus de précisions.
>> >>
>> >> Hervé.
>> >>
>> >>
>> >> "Peponne31" <Peponne31@discussions.microsoft.com> a écrit dans le
>> >> message de
>> >> news:F19755BF-2F6D-4715-9F39-F55174F2850E@microsoft.com...
>> >>> Bonjour,
>> >>>
>> >>> Dans un classeur, j'ai 2 feuilles du nom de: Devis1page, Devis2pages.
>> >>> Je voudrais quand Devis1page en J3
>> >>> si je rentre un N° de feuille qui correspondrai
>> >>> à Devis2pages j'ai un message d'erreur.
>> >>> J'ai écrit cela mais ça ne fonctionne pas.
>> >>>
>> >>> Private Sub Worksheet_Change(ByVal Target As Range)
>> >>> Application.ScreenUpdating = False
>> >>> Dim vNom As String
>> >>> vNom = ("Devis1page")
>> >>> If Target.Address = "$J$6" Then
>> >>> ValideSaisie
>> >>> LectureDeJ6
>> >>> ActiveSheet.Unprotect
>> >>> EcritureDeB10
>> >>> ActiveSheet.Protect
>> >>> ElseIf Target.Address = "$J$3" Then
>> >>> RéouvreDevis1page Target.Value
>> >>> If vNom = ("Devis2pages") Then
>> >>> Message = MsgBox("ERREUR, c'est un Devis 2
>> >>> Pages",
>> >>> ,
>> >>> "FERRE Jean-Raymond")
>> >>> ActiveSheet.Unprotect
>> >>> Range("B10,B11,J3").Select
>> >>> Selection.ClearContents
>> >>> ActiveSheet.Protect
>> >>> Range("J3").Select
>> >>> Range("J3").Activate
>> >>> Else
>> >>> MaValeurDeB10
>> >>> MaValeurDeJ6
>> >>> ActiveSheet.Protect
>> >>> End If
>> >>> End If
>> >>> End Sub
>> >>> Si quelqu'un veut bien m'aider à corriger !!
>> >>> Merci par avance.
>> >>> Peponne31
>>
Bonsoir Peponne31,
Je pense avoir compris ce que tu désire réaliser.
Pour savoir si le devis que tu souhaite ouvrir se trouve sur une ou deux
pages (à l'impression bien sûr !) il suffit de connaître le nombre de saut
de pages, si il est égal à zéro, c'est un devis sur une page, dans le cas
contraire, c'est un devis sur deux pages (ou plus si tu le désire, il suffit
d'adapter).
J'ai un peu modifié ta procédure. En admettant que la valeur est changée
dans J3, la proc "RéouvreDevis1page(Target.Value)" devrait retourner un
objet feuille (je pense que le nom de la feuille est la valeur en J3 ?)
ensuite, un contrôle est fait sur le nombre de sauts de pages horizontaux,
si il y à au moins un saut de page, le devis est sur deux pages et ton
message d'erreur sera affiché. Adapte au mieux et revient si tu a d'autres
soucis.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim vNom As String
Dim Fe As Worksheet
Application.ScreenUpdating = False
vNom = ("Devis1page")
If Target.Address = "$J$6" Then
ValideSaisie
LectureDeJ6
ActiveSheet.Unprotect
EcritureDeB10
ActiveSheet.Protect
ElseIf Target.Address = "$J$3" Then
'ici, la proc "RéouvreDevis1page" devrait
'retourner un objet feuille
Set Fe = RéouvreDevis1page(Target.Value)
'si la feuille contient un saut de page
'c'est une feuille à 2 pages à l'impression
If Fe.HPageBreaks.Count >= 1 Then
Message = MsgBox("ERREUR, c'est un Devis 2 Pages", _
, _
"FERRE Jean-Raymond")
ActiveSheet.Unprotect
Range("B10,B11,J3").Select
Selection.ClearContents
ActiveSheet.Protect
Range("J3").Select
Range("J3").Activate
Else
MaValeurDeB10
MaValeurDeJ6
ActiveSheet.Protect
End If
End If
Application.ScreenUpdating = True
Set Fe = Nothing
End Sub
'exemple de fonction (très simple) que retourne une feuille
Function RéouvreDevis1page(C As String) As Worksheet
Set RéouvreDevis1page = Worksheets(C)
End Function
Hervé.
"Peponne31" a écrit dans le message de
news:
> Bonsoir FS
>
> Merci pour ta réponse, mais ce n'est pas ce que je recherche
> les feuille Devis1page et Devis2pages sont des formulaires qui me servent
> à
> réaliser des devis en maçonnerie. Ces devis sont imprimé soit sur une
> feuille
> ou sur 2 feuilles papier tout dépand du travail à faire. C'est pour cela
> que
> dans le classeur j'ai une feuille nommée Devis1page et une autre
> Devis2pages
> .Si je veux modifier un devis je le rappelle par son N° en J3 et ça
> fonctionne, mais je ne sais pas faire la differance entre 1 feuille et 2
> feuilles, si je rappelle un devis sur 2 feuilles dans le formulaire
> Devis1page il y va avec des erreurs dans les cellules, c'est pour ça que
> je
> voudrais interdire la recopie d'un devis 2 pages sur sur le formulaire
> Devis1page et vice versa.
> Merci
>
> "FS" a écrit :
>
>> Bonsoir,
>>
>> Pour empêcher toute recopie (ou copie) une solution radicale :
>>
>> Private Sub Workbook_SheetSelectionChange( _
>> ByVal Sh As Object, ByVal Target As Range)
>> Application.CutCopyMode = False
>> End Sub
>>
>> A recopier dans le module ThisWorkbook du classeur qui t'intéresse.
>> Attention, ça empêche tout copier/coller (tant que les macros sont
>> activées).
>>
>> FS
>> --
>> Frédéric SIGONNEAU
>> Modules et modèles pour Excel :
>> http://frederic.sigonneau.free.fr/
>>
>> Peponne31 a écrit :
>> > Bonsoir Hervé,
>> >
>> > je voudrais empècher la recopie d'une feuille Devis2pages dans la
>> > feuille
>> > Devis1page et vice versa, ces feuilles étant des formulaires, J'ai
>> > modifié
>> > If vNom = ("Devis2pages") Then
>> > en If vNom <> ("Devis1page") Then
>> > mais ça ne fonctionne pas
>> > "Hervé" a écrit :
>> >
>> >> Bonsoir Peponne31,
>> >>
>> >> J'ai un peu de mal à saisir ce que tu veux faire, désolé :o(
>> >>
>> >> En début de proc tu défini "vNom" à "Devis1page" il ne peut donc pas
>> >> être à
>> >> "Devis2pages" dans la suite du code ??? (tu contrôle sa valeur à "If
>> >> vNom > >> >> ("Devis2pages") Then").
>> >>
>> >> En attente de plus de précisions.
>> >>
>> >> Hervé.
>> >>
>> >>
>> >> "Peponne31" a écrit dans le
>> >> message de
>> >> news:
>> >>> Bonjour,
>> >>>
>> >>> Dans un classeur, j'ai 2 feuilles du nom de: Devis1page, Devis2pages.
>> >>> Je voudrais quand Devis1page en J3
>> >>> si je rentre un N° de feuille qui correspondrai
>> >>> à Devis2pages j'ai un message d'erreur.
>> >>> J'ai écrit cela mais ça ne fonctionne pas.
>> >>>
>> >>> Private Sub Worksheet_Change(ByVal Target As Range)
>> >>> Application.ScreenUpdating = False
>> >>> Dim vNom As String
>> >>> vNom = ("Devis1page")
>> >>> If Target.Address = "$J$6" Then
>> >>> ValideSaisie
>> >>> LectureDeJ6
>> >>> ActiveSheet.Unprotect
>> >>> EcritureDeB10
>> >>> ActiveSheet.Protect
>> >>> ElseIf Target.Address = "$J$3" Then
>> >>> RéouvreDevis1page Target.Value
>> >>> If vNom = ("Devis2pages") Then
>> >>> Message = MsgBox("ERREUR, c'est un Devis 2
>> >>> Pages",
>> >>> ,
>> >>> "FERRE Jean-Raymond")
>> >>> ActiveSheet.Unprotect
>> >>> Range("B10,B11,J3").Select
>> >>> Selection.ClearContents
>> >>> ActiveSheet.Protect
>> >>> Range("J3").Select
>> >>> Range("J3").Activate
>> >>> Else
>> >>> MaValeurDeB10
>> >>> MaValeurDeJ6
>> >>> ActiveSheet.Protect
>> >>> End If
>> >>> End If
>> >>> End Sub
>> >>> Si quelqu'un veut bien m'aider à corriger !!
>> >>> Merci par avance.
>> >>> Peponne31
>>
Bonjour Hervé,
Merci pour ton aide, j'ai encore un souci au niveau de:
Set Fe = RéouvreDevis1page(Target.Value)
Erreur de compilation:
Fonction ou variable attendue
Merci encore pour ton aide
Peponne31
"Hervé" a écrit :
Bonsoir Peponne31,
Je pense avoir compris ce que tu désire réaliser.
Pour savoir si le devis que tu souhaite ouvrir se trouve sur une ou deux
pages (à l'impression bien sûr !) il suffit de connaître le nombre de
saut
de pages, si il est égal à zéro, c'est un devis sur une page, dans le cas
contraire, c'est un devis sur deux pages (ou plus si tu le désire, il
suffit
d'adapter).
J'ai un peu modifié ta procédure. En admettant que la valeur est changée
dans J3, la proc "RéouvreDevis1page(Target.Value)" devrait retourner un
objet feuille (je pense que le nom de la feuille est la valeur en J3 ?)
ensuite, un contrôle est fait sur le nombre de sauts de pages
horizontaux,
si il y à au moins un saut de page, le devis est sur deux pages et ton
message d'erreur sera affiché. Adapte au mieux et revient si tu a
d'autres
soucis.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim vNom As String
Dim Fe As Worksheet
Application.ScreenUpdating = False
vNom = ("Devis1page")
If Target.Address = "$J$6" Then
ValideSaisie
LectureDeJ6
ActiveSheet.Unprotect
EcritureDeB10
ActiveSheet.Protect
ElseIf Target.Address = "$J$3" Then
'ici, la proc "RéouvreDevis1page" devrait
'retourner un objet feuille
Set Fe = RéouvreDevis1page(Target.Value)
'si la feuille contient un saut de page
'c'est une feuille à 2 pages à l'impression
If Fe.HPageBreaks.Count >= 1 Then
Message = MsgBox("ERREUR, c'est un Devis 2 Pages", _
, _
"FERRE Jean-Raymond")
ActiveSheet.Unprotect
Range("B10,B11,J3").Select
Selection.ClearContents
ActiveSheet.Protect
Range("J3").Select
Range("J3").Activate
Else
MaValeurDeB10
MaValeurDeJ6
ActiveSheet.Protect
End If
End If
Application.ScreenUpdating = True
Set Fe = Nothing
End Sub
'exemple de fonction (très simple) que retourne une feuille
Function RéouvreDevis1page(C As String) As Worksheet
Set RéouvreDevis1page = Worksheets(C)
End Function
Hervé.
"Peponne31" a écrit dans le message
de
news:
> Bonsoir FS
>
> Merci pour ta réponse, mais ce n'est pas ce que je recherche
> les feuille Devis1page et Devis2pages sont des formulaires qui me
> servent
> à
> réaliser des devis en maçonnerie. Ces devis sont imprimé soit sur une
> feuille
> ou sur 2 feuilles papier tout dépand du travail à faire. C'est pour
> cela
> que
> dans le classeur j'ai une feuille nommée Devis1page et une autre
> Devis2pages
> .Si je veux modifier un devis je le rappelle par son N° en J3 et ça
> fonctionne, mais je ne sais pas faire la differance entre 1 feuille et
> 2
> feuilles, si je rappelle un devis sur 2 feuilles dans le formulaire
> Devis1page il y va avec des erreurs dans les cellules, c'est pour ça
> que
> je
> voudrais interdire la recopie d'un devis 2 pages sur sur le formulaire
> Devis1page et vice versa.
> Merci
>
> "FS" a écrit :
>
>> Bonsoir,
>>
>> Pour empêcher toute recopie (ou copie) une solution radicale :
>>
>> Private Sub Workbook_SheetSelectionChange( _
>> ByVal Sh As Object, ByVal Target As Range)
>> Application.CutCopyMode = False
>> End Sub
>>
>> A recopier dans le module ThisWorkbook du classeur qui t'intéresse.
>> Attention, ça empêche tout copier/coller (tant que les macros sont
>> activées).
>>
>> FS
>> --
>> Frédéric SIGONNEAU
>> Modules et modèles pour Excel :
>> http://frederic.sigonneau.free.fr/
>>
>> Peponne31 a écrit :
>> > Bonsoir Hervé,
>> >
>> > je voudrais empècher la recopie d'une feuille Devis2pages dans la
>> > feuille
>> > Devis1page et vice versa, ces feuilles étant des formulaires, J'ai
>> > modifié
>> > If vNom = ("Devis2pages") Then
>> > en If vNom <> ("Devis1page") Then
>> > mais ça ne fonctionne pas
>> > "Hervé" a écrit :
>> >
>> >> Bonsoir Peponne31,
>> >>
>> >> J'ai un peu de mal à saisir ce que tu veux faire, désolé :o(
>> >>
>> >> En début de proc tu défini "vNom" à "Devis1page" il ne peut donc
>> >> pas
>> >> être à
>> >> "Devis2pages" dans la suite du code ??? (tu contrôle sa valeur à
>> >> "If
>> >> vNom >> >> >> ("Devis2pages") Then").
>> >>
>> >> En attente de plus de précisions.
>> >>
>> >> Hervé.
>> >>
>> >>
>> >> "Peponne31" a écrit dans le
>> >> message de
>> >> news:
>> >>> Bonjour,
>> >>>
>> >>> Dans un classeur, j'ai 2 feuilles du nom de: Devis1page,
>> >>> Devis2pages.
>> >>> Je voudrais quand Devis1page en J3
>> >>> si je rentre un N° de feuille qui correspondrai
>> >>> à Devis2pages j'ai un message d'erreur.
>> >>> J'ai écrit cela mais ça ne fonctionne pas.
>> >>>
>> >>> Private Sub Worksheet_Change(ByVal Target As Range)
>> >>> Application.ScreenUpdating = False
>> >>> Dim vNom As String
>> >>> vNom = ("Devis1page")
>> >>> If Target.Address = "$J$6" Then
>> >>> ValideSaisie
>> >>> LectureDeJ6
>> >>> ActiveSheet.Unprotect
>> >>> EcritureDeB10
>> >>> ActiveSheet.Protect
>> >>> ElseIf Target.Address = "$J$3" Then
>> >>> RéouvreDevis1page Target.Value
>> >>> If vNom = ("Devis2pages") Then
>> >>> Message = MsgBox("ERREUR, c'est un Devis 2
>> >>> Pages",
>> >>> ,
>> >>> "FERRE Jean-Raymond")
>> >>> ActiveSheet.Unprotect
>> >>> Range("B10,B11,J3").Select
>> >>> Selection.ClearContents
>> >>> ActiveSheet.Protect
>> >>> Range("J3").Select
>> >>> Range("J3").Activate
>> >>> Else
>> >>> MaValeurDeB10
>> >>> MaValeurDeJ6
>> >>> ActiveSheet.Protect
>> >>> End If
>> >>> End If
>> >>> End Sub
>> >>> Si quelqu'un veut bien m'aider à corriger !!
>> >>> Merci par avance.
>> >>> Peponne31
>>
Bonjour Hervé,
Merci pour ton aide, j'ai encore un souci au niveau de:
Set Fe = RéouvreDevis1page(Target.Value)
Erreur de compilation:
Fonction ou variable attendue
Merci encore pour ton aide
Peponne31
"Hervé" a écrit :
Bonsoir Peponne31,
Je pense avoir compris ce que tu désire réaliser.
Pour savoir si le devis que tu souhaite ouvrir se trouve sur une ou deux
pages (à l'impression bien sûr !) il suffit de connaître le nombre de
saut
de pages, si il est égal à zéro, c'est un devis sur une page, dans le cas
contraire, c'est un devis sur deux pages (ou plus si tu le désire, il
suffit
d'adapter).
J'ai un peu modifié ta procédure. En admettant que la valeur est changée
dans J3, la proc "RéouvreDevis1page(Target.Value)" devrait retourner un
objet feuille (je pense que le nom de la feuille est la valeur en J3 ?)
ensuite, un contrôle est fait sur le nombre de sauts de pages
horizontaux,
si il y à au moins un saut de page, le devis est sur deux pages et ton
message d'erreur sera affiché. Adapte au mieux et revient si tu a
d'autres
soucis.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim vNom As String
Dim Fe As Worksheet
Application.ScreenUpdating = False
vNom = ("Devis1page")
If Target.Address = "$J$6" Then
ValideSaisie
LectureDeJ6
ActiveSheet.Unprotect
EcritureDeB10
ActiveSheet.Protect
ElseIf Target.Address = "$J$3" Then
'ici, la proc "RéouvreDevis1page" devrait
'retourner un objet feuille
Set Fe = RéouvreDevis1page(Target.Value)
'si la feuille contient un saut de page
'c'est une feuille à 2 pages à l'impression
If Fe.HPageBreaks.Count >= 1 Then
Message = MsgBox("ERREUR, c'est un Devis 2 Pages", _
, _
"FERRE Jean-Raymond")
ActiveSheet.Unprotect
Range("B10,B11,J3").Select
Selection.ClearContents
ActiveSheet.Protect
Range("J3").Select
Range("J3").Activate
Else
MaValeurDeB10
MaValeurDeJ6
ActiveSheet.Protect
End If
End If
Application.ScreenUpdating = True
Set Fe = Nothing
End Sub
'exemple de fonction (très simple) que retourne une feuille
Function RéouvreDevis1page(C As String) As Worksheet
Set RéouvreDevis1page = Worksheets(C)
End Function
Hervé.
"Peponne31" <Peponne31@discussions.microsoft.com> a écrit dans le message
de
news:2F1841AA-B6E5-4FC5-B12C-0C73E470B051@microsoft.com...
> Bonsoir FS
>
> Merci pour ta réponse, mais ce n'est pas ce que je recherche
> les feuille Devis1page et Devis2pages sont des formulaires qui me
> servent
> à
> réaliser des devis en maçonnerie. Ces devis sont imprimé soit sur une
> feuille
> ou sur 2 feuilles papier tout dépand du travail à faire. C'est pour
> cela
> que
> dans le classeur j'ai une feuille nommée Devis1page et une autre
> Devis2pages
> .Si je veux modifier un devis je le rappelle par son N° en J3 et ça
> fonctionne, mais je ne sais pas faire la differance entre 1 feuille et
> 2
> feuilles, si je rappelle un devis sur 2 feuilles dans le formulaire
> Devis1page il y va avec des erreurs dans les cellules, c'est pour ça
> que
> je
> voudrais interdire la recopie d'un devis 2 pages sur sur le formulaire
> Devis1page et vice versa.
> Merci
>
> "FS" a écrit :
>
>> Bonsoir,
>>
>> Pour empêcher toute recopie (ou copie) une solution radicale :
>>
>> Private Sub Workbook_SheetSelectionChange( _
>> ByVal Sh As Object, ByVal Target As Range)
>> Application.CutCopyMode = False
>> End Sub
>>
>> A recopier dans le module ThisWorkbook du classeur qui t'intéresse.
>> Attention, ça empêche tout copier/coller (tant que les macros sont
>> activées).
>>
>> FS
>> --
>> Frédéric SIGONNEAU
>> Modules et modèles pour Excel :
>> http://frederic.sigonneau.free.fr/
>>
>> Peponne31 a écrit :
>> > Bonsoir Hervé,
>> >
>> > je voudrais empècher la recopie d'une feuille Devis2pages dans la
>> > feuille
>> > Devis1page et vice versa, ces feuilles étant des formulaires, J'ai
>> > modifié
>> > If vNom = ("Devis2pages") Then
>> > en If vNom <> ("Devis1page") Then
>> > mais ça ne fonctionne pas
>> > "Hervé" a écrit :
>> >
>> >> Bonsoir Peponne31,
>> >>
>> >> J'ai un peu de mal à saisir ce que tu veux faire, désolé :o(
>> >>
>> >> En début de proc tu défini "vNom" à "Devis1page" il ne peut donc
>> >> pas
>> >> être à
>> >> "Devis2pages" dans la suite du code ??? (tu contrôle sa valeur à
>> >> "If
>> >> vNom >> >> >> ("Devis2pages") Then").
>> >>
>> >> En attente de plus de précisions.
>> >>
>> >> Hervé.
>> >>
>> >>
>> >> "Peponne31" <Peponne31@discussions.microsoft.com> a écrit dans le
>> >> message de
>> >> news:F19755BF-2F6D-4715-9F39-F55174F2850E@microsoft.com...
>> >>> Bonjour,
>> >>>
>> >>> Dans un classeur, j'ai 2 feuilles du nom de: Devis1page,
>> >>> Devis2pages.
>> >>> Je voudrais quand Devis1page en J3
>> >>> si je rentre un N° de feuille qui correspondrai
>> >>> à Devis2pages j'ai un message d'erreur.
>> >>> J'ai écrit cela mais ça ne fonctionne pas.
>> >>>
>> >>> Private Sub Worksheet_Change(ByVal Target As Range)
>> >>> Application.ScreenUpdating = False
>> >>> Dim vNom As String
>> >>> vNom = ("Devis1page")
>> >>> If Target.Address = "$J$6" Then
>> >>> ValideSaisie
>> >>> LectureDeJ6
>> >>> ActiveSheet.Unprotect
>> >>> EcritureDeB10
>> >>> ActiveSheet.Protect
>> >>> ElseIf Target.Address = "$J$3" Then
>> >>> RéouvreDevis1page Target.Value
>> >>> If vNom = ("Devis2pages") Then
>> >>> Message = MsgBox("ERREUR, c'est un Devis 2
>> >>> Pages",
>> >>> ,
>> >>> "FERRE Jean-Raymond")
>> >>> ActiveSheet.Unprotect
>> >>> Range("B10,B11,J3").Select
>> >>> Selection.ClearContents
>> >>> ActiveSheet.Protect
>> >>> Range("J3").Select
>> >>> Range("J3").Activate
>> >>> Else
>> >>> MaValeurDeB10
>> >>> MaValeurDeJ6
>> >>> ActiveSheet.Protect
>> >>> End If
>> >>> End If
>> >>> End Sub
>> >>> Si quelqu'un veut bien m'aider à corriger !!
>> >>> Merci par avance.
>> >>> Peponne31
>>
Bonjour Hervé,
Merci pour ton aide, j'ai encore un souci au niveau de:
Set Fe = RéouvreDevis1page(Target.Value)
Erreur de compilation:
Fonction ou variable attendue
Merci encore pour ton aide
Peponne31
"Hervé" a écrit :
Bonsoir Peponne31,
Je pense avoir compris ce que tu désire réaliser.
Pour savoir si le devis que tu souhaite ouvrir se trouve sur une ou deux
pages (à l'impression bien sûr !) il suffit de connaître le nombre de
saut
de pages, si il est égal à zéro, c'est un devis sur une page, dans le cas
contraire, c'est un devis sur deux pages (ou plus si tu le désire, il
suffit
d'adapter).
J'ai un peu modifié ta procédure. En admettant que la valeur est changée
dans J3, la proc "RéouvreDevis1page(Target.Value)" devrait retourner un
objet feuille (je pense que le nom de la feuille est la valeur en J3 ?)
ensuite, un contrôle est fait sur le nombre de sauts de pages
horizontaux,
si il y à au moins un saut de page, le devis est sur deux pages et ton
message d'erreur sera affiché. Adapte au mieux et revient si tu a
d'autres
soucis.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim vNom As String
Dim Fe As Worksheet
Application.ScreenUpdating = False
vNom = ("Devis1page")
If Target.Address = "$J$6" Then
ValideSaisie
LectureDeJ6
ActiveSheet.Unprotect
EcritureDeB10
ActiveSheet.Protect
ElseIf Target.Address = "$J$3" Then
'ici, la proc "RéouvreDevis1page" devrait
'retourner un objet feuille
Set Fe = RéouvreDevis1page(Target.Value)
'si la feuille contient un saut de page
'c'est une feuille à 2 pages à l'impression
If Fe.HPageBreaks.Count >= 1 Then
Message = MsgBox("ERREUR, c'est un Devis 2 Pages", _
, _
"FERRE Jean-Raymond")
ActiveSheet.Unprotect
Range("B10,B11,J3").Select
Selection.ClearContents
ActiveSheet.Protect
Range("J3").Select
Range("J3").Activate
Else
MaValeurDeB10
MaValeurDeJ6
ActiveSheet.Protect
End If
End If
Application.ScreenUpdating = True
Set Fe = Nothing
End Sub
'exemple de fonction (très simple) que retourne une feuille
Function RéouvreDevis1page(C As String) As Worksheet
Set RéouvreDevis1page = Worksheets(C)
End Function
Hervé.
"Peponne31" a écrit dans le message
de
news:
> Bonsoir FS
>
> Merci pour ta réponse, mais ce n'est pas ce que je recherche
> les feuille Devis1page et Devis2pages sont des formulaires qui me
> servent
> à
> réaliser des devis en maçonnerie. Ces devis sont imprimé soit sur une
> feuille
> ou sur 2 feuilles papier tout dépand du travail à faire. C'est pour
> cela
> que
> dans le classeur j'ai une feuille nommée Devis1page et une autre
> Devis2pages
> .Si je veux modifier un devis je le rappelle par son N° en J3 et ça
> fonctionne, mais je ne sais pas faire la differance entre 1 feuille et
> 2
> feuilles, si je rappelle un devis sur 2 feuilles dans le formulaire
> Devis1page il y va avec des erreurs dans les cellules, c'est pour ça
> que
> je
> voudrais interdire la recopie d'un devis 2 pages sur sur le formulaire
> Devis1page et vice versa.
> Merci
>
> "FS" a écrit :
>
>> Bonsoir,
>>
>> Pour empêcher toute recopie (ou copie) une solution radicale :
>>
>> Private Sub Workbook_SheetSelectionChange( _
>> ByVal Sh As Object, ByVal Target As Range)
>> Application.CutCopyMode = False
>> End Sub
>>
>> A recopier dans le module ThisWorkbook du classeur qui t'intéresse.
>> Attention, ça empêche tout copier/coller (tant que les macros sont
>> activées).
>>
>> FS
>> --
>> Frédéric SIGONNEAU
>> Modules et modèles pour Excel :
>> http://frederic.sigonneau.free.fr/
>>
>> Peponne31 a écrit :
>> > Bonsoir Hervé,
>> >
>> > je voudrais empècher la recopie d'une feuille Devis2pages dans la
>> > feuille
>> > Devis1page et vice versa, ces feuilles étant des formulaires, J'ai
>> > modifié
>> > If vNom = ("Devis2pages") Then
>> > en If vNom <> ("Devis1page") Then
>> > mais ça ne fonctionne pas
>> > "Hervé" a écrit :
>> >
>> >> Bonsoir Peponne31,
>> >>
>> >> J'ai un peu de mal à saisir ce que tu veux faire, désolé :o(
>> >>
>> >> En début de proc tu défini "vNom" à "Devis1page" il ne peut donc
>> >> pas
>> >> être à
>> >> "Devis2pages" dans la suite du code ??? (tu contrôle sa valeur à
>> >> "If
>> >> vNom >> >> >> ("Devis2pages") Then").
>> >>
>> >> En attente de plus de précisions.
>> >>
>> >> Hervé.
>> >>
>> >>
>> >> "Peponne31" a écrit dans le
>> >> message de
>> >> news:
>> >>> Bonjour,
>> >>>
>> >>> Dans un classeur, j'ai 2 feuilles du nom de: Devis1page,
>> >>> Devis2pages.
>> >>> Je voudrais quand Devis1page en J3
>> >>> si je rentre un N° de feuille qui correspondrai
>> >>> à Devis2pages j'ai un message d'erreur.
>> >>> J'ai écrit cela mais ça ne fonctionne pas.
>> >>>
>> >>> Private Sub Worksheet_Change(ByVal Target As Range)
>> >>> Application.ScreenUpdating = False
>> >>> Dim vNom As String
>> >>> vNom = ("Devis1page")
>> >>> If Target.Address = "$J$6" Then
>> >>> ValideSaisie
>> >>> LectureDeJ6
>> >>> ActiveSheet.Unprotect
>> >>> EcritureDeB10
>> >>> ActiveSheet.Protect
>> >>> ElseIf Target.Address = "$J$3" Then
>> >>> RéouvreDevis1page Target.Value
>> >>> If vNom = ("Devis2pages") Then
>> >>> Message = MsgBox("ERREUR, c'est un Devis 2
>> >>> Pages",
>> >>> ,
>> >>> "FERRE Jean-Raymond")
>> >>> ActiveSheet.Unprotect
>> >>> Range("B10,B11,J3").Select
>> >>> Selection.ClearContents
>> >>> ActiveSheet.Protect
>> >>> Range("J3").Select
>> >>> Range("J3").Activate
>> >>> Else
>> >>> MaValeurDeB10
>> >>> MaValeurDeJ6
>> >>> ActiveSheet.Protect
>> >>> End If
>> >>> End If
>> >>> End Sub
>> >>> Si quelqu'un veut bien m'aider à corriger !!
>> >>> Merci par avance.
>> >>> Peponne31
>>
Bonjour Peponne31,
C'est normal, comme je te l'ai dit dans mon exemple, la proc
"RéouvreDevis1page(Target.Value)" devrait retourner un objet feuille (c'est
juste une idée) ne connaissant pas cette procédure j'ai fait cette
supposition. Montre nous cette procédure pour voir les modifications à
apporter soit à mon code soit à la procédure.
Hervé.
"Peponne31" a écrit dans le message de
news:
> Bonjour Hervé,
>
> Merci pour ton aide, j'ai encore un souci au niveau de:
> Set Fe = RéouvreDevis1page(Target.Value)
> Erreur de compilation:
> Fonction ou variable attendue
> Merci encore pour ton aide
>
> Peponne31
>
> "Hervé" a écrit :
>
>>
>> Bonsoir Peponne31,
>>
>> Je pense avoir compris ce que tu désire réaliser.
>> Pour savoir si le devis que tu souhaite ouvrir se trouve sur une ou deux
>> pages (à l'impression bien sûr !) il suffit de connaître le nombre de
>> saut
>> de pages, si il est égal à zéro, c'est un devis sur une page, dans le cas
>> contraire, c'est un devis sur deux pages (ou plus si tu le désire, il
>> suffit
>> d'adapter).
>> J'ai un peu modifié ta procédure. En admettant que la valeur est changée
>> dans J3, la proc "RéouvreDevis1page(Target.Value)" devrait retourner un
>> objet feuille (je pense que le nom de la feuille est la valeur en J3 ?)
>> ensuite, un contrôle est fait sur le nombre de sauts de pages
>> horizontaux,
>> si il y à au moins un saut de page, le devis est sur deux pages et ton
>> message d'erreur sera affiché. Adapte au mieux et revient si tu a
>> d'autres
>> soucis.
>>
>> Private Sub Worksheet_Change(ByVal Target As Range)
>>
>> Dim vNom As String
>> Dim Fe As Worksheet
>>
>> Application.ScreenUpdating = False
>>
>> vNom = ("Devis1page")
>>
>> If Target.Address = "$J$6" Then
>>
>> ValideSaisie
>> LectureDeJ6
>> ActiveSheet.Unprotect
>> EcritureDeB10
>> ActiveSheet.Protect
>>
>> ElseIf Target.Address = "$J$3" Then
>>
>> 'ici, la proc "RéouvreDevis1page" devrait
>> 'retourner un objet feuille
>> Set Fe = RéouvreDevis1page(Target.Value)
>>
>> 'si la feuille contient un saut de page
>> 'c'est une feuille à 2 pages à l'impression
>> If Fe.HPageBreaks.Count >= 1 Then
>>
>> Message = MsgBox("ERREUR, c'est un Devis 2 Pages", _
>> , _
>> "FERRE Jean-Raymond")
>> ActiveSheet.Unprotect
>> Range("B10,B11,J3").Select
>> Selection.ClearContents
>> ActiveSheet.Protect
>> Range("J3").Select
>> Range("J3").Activate
>>
>> Else
>>
>> MaValeurDeB10
>> MaValeurDeJ6
>> ActiveSheet.Protect
>>
>> End If
>> End If
>>
>> Application.ScreenUpdating = True
>>
>> Set Fe = Nothing
>>
>> End Sub
>>
>> 'exemple de fonction (très simple) que retourne une feuille
>> Function RéouvreDevis1page(C As String) As Worksheet
>>
>> Set RéouvreDevis1page = Worksheets(C)
>>
>> End Function
>>
>> Hervé.
>>
>>
>> "Peponne31" a écrit dans le message
>> de
>> news:
>> > Bonsoir FS
>> >
>> > Merci pour ta réponse, mais ce n'est pas ce que je recherche
>> > les feuille Devis1page et Devis2pages sont des formulaires qui me
>> > servent
>> > à
>> > réaliser des devis en maçonnerie. Ces devis sont imprimé soit sur une
>> > feuille
>> > ou sur 2 feuilles papier tout dépand du travail à faire. C'est pour
>> > cela
>> > que
>> > dans le classeur j'ai une feuille nommée Devis1page et une autre
>> > Devis2pages
>> > .Si je veux modifier un devis je le rappelle par son N° en J3 et ça
>> > fonctionne, mais je ne sais pas faire la differance entre 1 feuille et
>> > 2
>> > feuilles, si je rappelle un devis sur 2 feuilles dans le formulaire
>> > Devis1page il y va avec des erreurs dans les cellules, c'est pour ça
>> > que
>> > je
>> > voudrais interdire la recopie d'un devis 2 pages sur sur le formulaire
>> > Devis1page et vice versa.
>> > Merci
>> >
>> > "FS" a écrit :
>> >
>> >> Bonsoir,
>> >>
>> >> Pour empêcher toute recopie (ou copie) une solution radicale :
>> >>
>> >> Private Sub Workbook_SheetSelectionChange( _
>> >> ByVal Sh As Object, ByVal Target As Range)
>> >> Application.CutCopyMode = False
>> >> End Sub
>> >>
>> >> A recopier dans le module ThisWorkbook du classeur qui t'intéresse.
>> >> Attention, ça empêche tout copier/coller (tant que les macros sont
>> >> activées).
>> >>
>> >> FS
>> >> --
>> >> Frédéric SIGONNEAU
>> >> Modules et modèles pour Excel :
>> >> http://frederic.sigonneau.free.fr/
>> >>
>> >> Peponne31 a écrit :
>> >> > Bonsoir Hervé,
>> >> >
>> >> > je voudrais empècher la recopie d'une feuille Devis2pages dans la
>> >> > feuille
>> >> > Devis1page et vice versa, ces feuilles étant des formulaires, J'ai
>> >> > modifié
>> >> > If vNom = ("Devis2pages") Then
>> >> > en If vNom <> ("Devis1page") Then
>> >> > mais ça ne fonctionne pas
>> >> > "Hervé" a écrit :
>> >> >
>> >> >> Bonsoir Peponne31,
>> >> >>
>> >> >> J'ai un peu de mal à saisir ce que tu veux faire, désolé :o(
>> >> >>
>> >> >> En début de proc tu défini "vNom" à "Devis1page" il ne peut donc
>> >> >> pas
>> >> >> être à
>> >> >> "Devis2pages" dans la suite du code ??? (tu contrôle sa valeur à
>> >> >> "If
>> >> >> vNom > >> >> >> ("Devis2pages") Then").
>> >> >>
>> >> >> En attente de plus de précisions.
>> >> >>
>> >> >> Hervé.
>> >> >>
>> >> >>
>> >> >> "Peponne31" a écrit dans le
>> >> >> message de
>> >> >> news:
>> >> >>> Bonjour,
>> >> >>>
>> >> >>> Dans un classeur, j'ai 2 feuilles du nom de: Devis1page,
>> >> >>> Devis2pages.
>> >> >>> Je voudrais quand Devis1page en J3
>> >> >>> si je rentre un N° de feuille qui correspondrai
>> >> >>> à Devis2pages j'ai un message d'erreur.
>> >> >>> J'ai écrit cela mais ça ne fonctionne pas.
>> >> >>>
>> >> >>> Private Sub Worksheet_Change(ByVal Target As Range)
>> >> >>> Application.ScreenUpdating = False
>> >> >>> Dim vNom As String
>> >> >>> vNom = ("Devis1page")
>> >> >>> If Target.Address = "$J$6" Then
>> >> >>> ValideSaisie
>> >> >>> LectureDeJ6
>> >> >>> ActiveSheet.Unprotect
>> >> >>> EcritureDeB10
>> >> >>> ActiveSheet.Protect
>> >> >>> ElseIf Target.Address = "$J$3" Then
>> >> >>> RéouvreDevis1page Target.Value
>> >> >>> If vNom = ("Devis2pages") Then
>> >> >>> Message = MsgBox("ERREUR, c'est un Devis 2
>> >> >>> Pages",
>> >> >>> ,
>> >> >>> "FERRE Jean-Raymond")
>> >> >>> ActiveSheet.Unprotect
>> >> >>> Range("B10,B11,J3").Select
>> >> >>> Selection.ClearContents
>> >> >>> ActiveSheet.Protect
>> >> >>> Range("J3").Select
>> >> >>> Range("J3").Activate
>> >> >>> Else
>> >> >>> MaValeurDeB10
>> >> >>> MaValeurDeJ6
>> >> >>> ActiveSheet.Protect
>> >> >>> End If
>> >> >>> End If
>> >> >>> End Sub
>> >> >>> Si quelqu'un veut bien m'aider à corriger !!
>> >> >>> Merci par avance.
>> >> >>> Peponne31
>> >>
>>
Bonjour Peponne31,
C'est normal, comme je te l'ai dit dans mon exemple, la proc
"RéouvreDevis1page(Target.Value)" devrait retourner un objet feuille (c'est
juste une idée) ne connaissant pas cette procédure j'ai fait cette
supposition. Montre nous cette procédure pour voir les modifications à
apporter soit à mon code soit à la procédure.
Hervé.
"Peponne31" <Peponne31@discussions.microsoft.com> a écrit dans le message de
news:95A7C250-FC3E-43EA-9766-169C31381587@microsoft.com...
> Bonjour Hervé,
>
> Merci pour ton aide, j'ai encore un souci au niveau de:
> Set Fe = RéouvreDevis1page(Target.Value)
> Erreur de compilation:
> Fonction ou variable attendue
> Merci encore pour ton aide
>
> Peponne31
>
> "Hervé" a écrit :
>
>>
>> Bonsoir Peponne31,
>>
>> Je pense avoir compris ce que tu désire réaliser.
>> Pour savoir si le devis que tu souhaite ouvrir se trouve sur une ou deux
>> pages (à l'impression bien sûr !) il suffit de connaître le nombre de
>> saut
>> de pages, si il est égal à zéro, c'est un devis sur une page, dans le cas
>> contraire, c'est un devis sur deux pages (ou plus si tu le désire, il
>> suffit
>> d'adapter).
>> J'ai un peu modifié ta procédure. En admettant que la valeur est changée
>> dans J3, la proc "RéouvreDevis1page(Target.Value)" devrait retourner un
>> objet feuille (je pense que le nom de la feuille est la valeur en J3 ?)
>> ensuite, un contrôle est fait sur le nombre de sauts de pages
>> horizontaux,
>> si il y à au moins un saut de page, le devis est sur deux pages et ton
>> message d'erreur sera affiché. Adapte au mieux et revient si tu a
>> d'autres
>> soucis.
>>
>> Private Sub Worksheet_Change(ByVal Target As Range)
>>
>> Dim vNom As String
>> Dim Fe As Worksheet
>>
>> Application.ScreenUpdating = False
>>
>> vNom = ("Devis1page")
>>
>> If Target.Address = "$J$6" Then
>>
>> ValideSaisie
>> LectureDeJ6
>> ActiveSheet.Unprotect
>> EcritureDeB10
>> ActiveSheet.Protect
>>
>> ElseIf Target.Address = "$J$3" Then
>>
>> 'ici, la proc "RéouvreDevis1page" devrait
>> 'retourner un objet feuille
>> Set Fe = RéouvreDevis1page(Target.Value)
>>
>> 'si la feuille contient un saut de page
>> 'c'est une feuille à 2 pages à l'impression
>> If Fe.HPageBreaks.Count >= 1 Then
>>
>> Message = MsgBox("ERREUR, c'est un Devis 2 Pages", _
>> , _
>> "FERRE Jean-Raymond")
>> ActiveSheet.Unprotect
>> Range("B10,B11,J3").Select
>> Selection.ClearContents
>> ActiveSheet.Protect
>> Range("J3").Select
>> Range("J3").Activate
>>
>> Else
>>
>> MaValeurDeB10
>> MaValeurDeJ6
>> ActiveSheet.Protect
>>
>> End If
>> End If
>>
>> Application.ScreenUpdating = True
>>
>> Set Fe = Nothing
>>
>> End Sub
>>
>> 'exemple de fonction (très simple) que retourne une feuille
>> Function RéouvreDevis1page(C As String) As Worksheet
>>
>> Set RéouvreDevis1page = Worksheets(C)
>>
>> End Function
>>
>> Hervé.
>>
>>
>> "Peponne31" <Peponne31@discussions.microsoft.com> a écrit dans le message
>> de
>> news:2F1841AA-B6E5-4FC5-B12C-0C73E470B051@microsoft.com...
>> > Bonsoir FS
>> >
>> > Merci pour ta réponse, mais ce n'est pas ce que je recherche
>> > les feuille Devis1page et Devis2pages sont des formulaires qui me
>> > servent
>> > à
>> > réaliser des devis en maçonnerie. Ces devis sont imprimé soit sur une
>> > feuille
>> > ou sur 2 feuilles papier tout dépand du travail à faire. C'est pour
>> > cela
>> > que
>> > dans le classeur j'ai une feuille nommée Devis1page et une autre
>> > Devis2pages
>> > .Si je veux modifier un devis je le rappelle par son N° en J3 et ça
>> > fonctionne, mais je ne sais pas faire la differance entre 1 feuille et
>> > 2
>> > feuilles, si je rappelle un devis sur 2 feuilles dans le formulaire
>> > Devis1page il y va avec des erreurs dans les cellules, c'est pour ça
>> > que
>> > je
>> > voudrais interdire la recopie d'un devis 2 pages sur sur le formulaire
>> > Devis1page et vice versa.
>> > Merci
>> >
>> > "FS" a écrit :
>> >
>> >> Bonsoir,
>> >>
>> >> Pour empêcher toute recopie (ou copie) une solution radicale :
>> >>
>> >> Private Sub Workbook_SheetSelectionChange( _
>> >> ByVal Sh As Object, ByVal Target As Range)
>> >> Application.CutCopyMode = False
>> >> End Sub
>> >>
>> >> A recopier dans le module ThisWorkbook du classeur qui t'intéresse.
>> >> Attention, ça empêche tout copier/coller (tant que les macros sont
>> >> activées).
>> >>
>> >> FS
>> >> --
>> >> Frédéric SIGONNEAU
>> >> Modules et modèles pour Excel :
>> >> http://frederic.sigonneau.free.fr/
>> >>
>> >> Peponne31 a écrit :
>> >> > Bonsoir Hervé,
>> >> >
>> >> > je voudrais empècher la recopie d'une feuille Devis2pages dans la
>> >> > feuille
>> >> > Devis1page et vice versa, ces feuilles étant des formulaires, J'ai
>> >> > modifié
>> >> > If vNom = ("Devis2pages") Then
>> >> > en If vNom <> ("Devis1page") Then
>> >> > mais ça ne fonctionne pas
>> >> > "Hervé" a écrit :
>> >> >
>> >> >> Bonsoir Peponne31,
>> >> >>
>> >> >> J'ai un peu de mal à saisir ce que tu veux faire, désolé :o(
>> >> >>
>> >> >> En début de proc tu défini "vNom" à "Devis1page" il ne peut donc
>> >> >> pas
>> >> >> être à
>> >> >> "Devis2pages" dans la suite du code ??? (tu contrôle sa valeur à
>> >> >> "If
>> >> >> vNom > >> >> >> ("Devis2pages") Then").
>> >> >>
>> >> >> En attente de plus de précisions.
>> >> >>
>> >> >> Hervé.
>> >> >>
>> >> >>
>> >> >> "Peponne31" <Peponne31@discussions.microsoft.com> a écrit dans le
>> >> >> message de
>> >> >> news:F19755BF-2F6D-4715-9F39-F55174F2850E@microsoft.com...
>> >> >>> Bonjour,
>> >> >>>
>> >> >>> Dans un classeur, j'ai 2 feuilles du nom de: Devis1page,
>> >> >>> Devis2pages.
>> >> >>> Je voudrais quand Devis1page en J3
>> >> >>> si je rentre un N° de feuille qui correspondrai
>> >> >>> à Devis2pages j'ai un message d'erreur.
>> >> >>> J'ai écrit cela mais ça ne fonctionne pas.
>> >> >>>
>> >> >>> Private Sub Worksheet_Change(ByVal Target As Range)
>> >> >>> Application.ScreenUpdating = False
>> >> >>> Dim vNom As String
>> >> >>> vNom = ("Devis1page")
>> >> >>> If Target.Address = "$J$6" Then
>> >> >>> ValideSaisie
>> >> >>> LectureDeJ6
>> >> >>> ActiveSheet.Unprotect
>> >> >>> EcritureDeB10
>> >> >>> ActiveSheet.Protect
>> >> >>> ElseIf Target.Address = "$J$3" Then
>> >> >>> RéouvreDevis1page Target.Value
>> >> >>> If vNom = ("Devis2pages") Then
>> >> >>> Message = MsgBox("ERREUR, c'est un Devis 2
>> >> >>> Pages",
>> >> >>> ,
>> >> >>> "FERRE Jean-Raymond")
>> >> >>> ActiveSheet.Unprotect
>> >> >>> Range("B10,B11,J3").Select
>> >> >>> Selection.ClearContents
>> >> >>> ActiveSheet.Protect
>> >> >>> Range("J3").Select
>> >> >>> Range("J3").Activate
>> >> >>> Else
>> >> >>> MaValeurDeB10
>> >> >>> MaValeurDeJ6
>> >> >>> ActiveSheet.Protect
>> >> >>> End If
>> >> >>> End If
>> >> >>> End Sub
>> >> >>> Si quelqu'un veut bien m'aider à corriger !!
>> >> >>> Merci par avance.
>> >> >>> Peponne31
>> >>
>>
Bonjour Peponne31,
C'est normal, comme je te l'ai dit dans mon exemple, la proc
"RéouvreDevis1page(Target.Value)" devrait retourner un objet feuille (c'est
juste une idée) ne connaissant pas cette procédure j'ai fait cette
supposition. Montre nous cette procédure pour voir les modifications à
apporter soit à mon code soit à la procédure.
Hervé.
"Peponne31" a écrit dans le message de
news:
> Bonjour Hervé,
>
> Merci pour ton aide, j'ai encore un souci au niveau de:
> Set Fe = RéouvreDevis1page(Target.Value)
> Erreur de compilation:
> Fonction ou variable attendue
> Merci encore pour ton aide
>
> Peponne31
>
> "Hervé" a écrit :
>
>>
>> Bonsoir Peponne31,
>>
>> Je pense avoir compris ce que tu désire réaliser.
>> Pour savoir si le devis que tu souhaite ouvrir se trouve sur une ou deux
>> pages (à l'impression bien sûr !) il suffit de connaître le nombre de
>> saut
>> de pages, si il est égal à zéro, c'est un devis sur une page, dans le cas
>> contraire, c'est un devis sur deux pages (ou plus si tu le désire, il
>> suffit
>> d'adapter).
>> J'ai un peu modifié ta procédure. En admettant que la valeur est changée
>> dans J3, la proc "RéouvreDevis1page(Target.Value)" devrait retourner un
>> objet feuille (je pense que le nom de la feuille est la valeur en J3 ?)
>> ensuite, un contrôle est fait sur le nombre de sauts de pages
>> horizontaux,
>> si il y à au moins un saut de page, le devis est sur deux pages et ton
>> message d'erreur sera affiché. Adapte au mieux et revient si tu a
>> d'autres
>> soucis.
>>
>> Private Sub Worksheet_Change(ByVal Target As Range)
>>
>> Dim vNom As String
>> Dim Fe As Worksheet
>>
>> Application.ScreenUpdating = False
>>
>> vNom = ("Devis1page")
>>
>> If Target.Address = "$J$6" Then
>>
>> ValideSaisie
>> LectureDeJ6
>> ActiveSheet.Unprotect
>> EcritureDeB10
>> ActiveSheet.Protect
>>
>> ElseIf Target.Address = "$J$3" Then
>>
>> 'ici, la proc "RéouvreDevis1page" devrait
>> 'retourner un objet feuille
>> Set Fe = RéouvreDevis1page(Target.Value)
>>
>> 'si la feuille contient un saut de page
>> 'c'est une feuille à 2 pages à l'impression
>> If Fe.HPageBreaks.Count >= 1 Then
>>
>> Message = MsgBox("ERREUR, c'est un Devis 2 Pages", _
>> , _
>> "FERRE Jean-Raymond")
>> ActiveSheet.Unprotect
>> Range("B10,B11,J3").Select
>> Selection.ClearContents
>> ActiveSheet.Protect
>> Range("J3").Select
>> Range("J3").Activate
>>
>> Else
>>
>> MaValeurDeB10
>> MaValeurDeJ6
>> ActiveSheet.Protect
>>
>> End If
>> End If
>>
>> Application.ScreenUpdating = True
>>
>> Set Fe = Nothing
>>
>> End Sub
>>
>> 'exemple de fonction (très simple) que retourne une feuille
>> Function RéouvreDevis1page(C As String) As Worksheet
>>
>> Set RéouvreDevis1page = Worksheets(C)
>>
>> End Function
>>
>> Hervé.
>>
>>
>> "Peponne31" a écrit dans le message
>> de
>> news:
>> > Bonsoir FS
>> >
>> > Merci pour ta réponse, mais ce n'est pas ce que je recherche
>> > les feuille Devis1page et Devis2pages sont des formulaires qui me
>> > servent
>> > à
>> > réaliser des devis en maçonnerie. Ces devis sont imprimé soit sur une
>> > feuille
>> > ou sur 2 feuilles papier tout dépand du travail à faire. C'est pour
>> > cela
>> > que
>> > dans le classeur j'ai une feuille nommée Devis1page et une autre
>> > Devis2pages
>> > .Si je veux modifier un devis je le rappelle par son N° en J3 et ça
>> > fonctionne, mais je ne sais pas faire la differance entre 1 feuille et
>> > 2
>> > feuilles, si je rappelle un devis sur 2 feuilles dans le formulaire
>> > Devis1page il y va avec des erreurs dans les cellules, c'est pour ça
>> > que
>> > je
>> > voudrais interdire la recopie d'un devis 2 pages sur sur le formulaire
>> > Devis1page et vice versa.
>> > Merci
>> >
>> > "FS" a écrit :
>> >
>> >> Bonsoir,
>> >>
>> >> Pour empêcher toute recopie (ou copie) une solution radicale :
>> >>
>> >> Private Sub Workbook_SheetSelectionChange( _
>> >> ByVal Sh As Object, ByVal Target As Range)
>> >> Application.CutCopyMode = False
>> >> End Sub
>> >>
>> >> A recopier dans le module ThisWorkbook du classeur qui t'intéresse.
>> >> Attention, ça empêche tout copier/coller (tant que les macros sont
>> >> activées).
>> >>
>> >> FS
>> >> --
>> >> Frédéric SIGONNEAU
>> >> Modules et modèles pour Excel :
>> >> http://frederic.sigonneau.free.fr/
>> >>
>> >> Peponne31 a écrit :
>> >> > Bonsoir Hervé,
>> >> >
>> >> > je voudrais empècher la recopie d'une feuille Devis2pages dans la
>> >> > feuille
>> >> > Devis1page et vice versa, ces feuilles étant des formulaires, J'ai
>> >> > modifié
>> >> > If vNom = ("Devis2pages") Then
>> >> > en If vNom <> ("Devis1page") Then
>> >> > mais ça ne fonctionne pas
>> >> > "Hervé" a écrit :
>> >> >
>> >> >> Bonsoir Peponne31,
>> >> >>
>> >> >> J'ai un peu de mal à saisir ce que tu veux faire, désolé :o(
>> >> >>
>> >> >> En début de proc tu défini "vNom" à "Devis1page" il ne peut donc
>> >> >> pas
>> >> >> être à
>> >> >> "Devis2pages" dans la suite du code ??? (tu contrôle sa valeur à
>> >> >> "If
>> >> >> vNom > >> >> >> ("Devis2pages") Then").
>> >> >>
>> >> >> En attente de plus de précisions.
>> >> >>
>> >> >> Hervé.
>> >> >>
>> >> >>
>> >> >> "Peponne31" a écrit dans le
>> >> >> message de
>> >> >> news:
>> >> >>> Bonjour,
>> >> >>>
>> >> >>> Dans un classeur, j'ai 2 feuilles du nom de: Devis1page,
>> >> >>> Devis2pages.
>> >> >>> Je voudrais quand Devis1page en J3
>> >> >>> si je rentre un N° de feuille qui correspondrai
>> >> >>> à Devis2pages j'ai un message d'erreur.
>> >> >>> J'ai écrit cela mais ça ne fonctionne pas.
>> >> >>>
>> >> >>> Private Sub Worksheet_Change(ByVal Target As Range)
>> >> >>> Application.ScreenUpdating = False
>> >> >>> Dim vNom As String
>> >> >>> vNom = ("Devis1page")
>> >> >>> If Target.Address = "$J$6" Then
>> >> >>> ValideSaisie
>> >> >>> LectureDeJ6
>> >> >>> ActiveSheet.Unprotect
>> >> >>> EcritureDeB10
>> >> >>> ActiveSheet.Protect
>> >> >>> ElseIf Target.Address = "$J$3" Then
>> >> >>> RéouvreDevis1page Target.Value
>> >> >>> If vNom = ("Devis2pages") Then
>> >> >>> Message = MsgBox("ERREUR, c'est un Devis 2
>> >> >>> Pages",
>> >> >>> ,
>> >> >>> "FERRE Jean-Raymond")
>> >> >>> ActiveSheet.Unprotect
>> >> >>> Range("B10,B11,J3").Select
>> >> >>> Selection.ClearContents
>> >> >>> ActiveSheet.Protect
>> >> >>> Range("J3").Select
>> >> >>> Range("J3").Activate
>> >> >>> Else
>> >> >>> MaValeurDeB10
>> >> >>> MaValeurDeJ6
>> >> >>> ActiveSheet.Protect
>> >> >>> End If
>> >> >>> End If
>> >> >>> End Sub
>> >> >>> Si quelqu'un veut bien m'aider à corriger !!
>> >> >>> Merci par avance.
>> >> >>> Peponne31
>> >>
>>
Bonjour Peponne31,
C'est normal, comme je te l'ai dit dans mon exemple, la proc
"RéouvreDevis1page(Target.Value)" devrait retourner un objet feuille (c'est
juste une idée) ne connaissant pas cette procédure j'ai fait cette
supposition. Montre nous cette procédure pour voir les modifications à
apporter soit à mon code soit à la procédure.
Hervé.
"Peponne31" a écrit dans le message de
news:
> Bonjour Hervé,
>
> Merci pour ton aide, j'ai encore un souci au niveau de:
> Set Fe = RéouvreDevis1page(Target.Value)
> Erreur de compilation:
> Fonction ou variable attendue
> Merci encore pour ton aide
>
> Peponne31
>
> "Hervé" a écrit :
>
>>
>> Bonsoir Peponne31,
>>
>> Je pense avoir compris ce que tu désire réaliser.
>> Pour savoir si le devis que tu souhaite ouvrir se trouve sur une ou deux
>> pages (à l'impression bien sûr !) il suffit de connaître le nombre de
>> saut
>> de pages, si il est égal à zéro, c'est un devis sur une page, dans le cas
>> contraire, c'est un devis sur deux pages (ou plus si tu le désire, il
>> suffit
>> d'adapter).
>> J'ai un peu modifié ta procédure. En admettant que la valeur est changée
>> dans J3, la proc "RéouvreDevis1page(Target.Value)" devrait retourner un
>> objet feuille (je pense que le nom de la feuille est la valeur en J3 ?)
>> ensuite, un contrôle est fait sur le nombre de sauts de pages
>> horizontaux,
>> si il y à au moins un saut de page, le devis est sur deux pages et ton
>> message d'erreur sera affiché. Adapte au mieux et revient si tu a
>> d'autres
>> soucis.
>>
>> Private Sub Worksheet_Change(ByVal Target As Range)
>>
>> Dim vNom As String
>> Dim Fe As Worksheet
>>
>> Application.ScreenUpdating = False
>>
>> vNom = ("Devis1page")
>>
>> If Target.Address = "$J$6" Then
>>
>> ValideSaisie
>> LectureDeJ6
>> ActiveSheet.Unprotect
>> EcritureDeB10
>> ActiveSheet.Protect
>>
>> ElseIf Target.Address = "$J$3" Then
>>
>> 'ici, la proc "RéouvreDevis1page" devrait
>> 'retourner un objet feuille
>> Set Fe = RéouvreDevis1page(Target.Value)
>>
>> 'si la feuille contient un saut de page
>> 'c'est une feuille à 2 pages à l'impression
>> If Fe.HPageBreaks.Count >= 1 Then
>>
>> Message = MsgBox("ERREUR, c'est un Devis 2 Pages", _
>> , _
>> "FERRE Jean-Raymond")
>> ActiveSheet.Unprotect
>> Range("B10,B11,J3").Select
>> Selection.ClearContents
>> ActiveSheet.Protect
>> Range("J3").Select
>> Range("J3").Activate
>>
>> Else
>>
>> MaValeurDeB10
>> MaValeurDeJ6
>> ActiveSheet.Protect
>>
>> End If
>> End If
>>
>> Application.ScreenUpdating = True
>>
>> Set Fe = Nothing
>>
>> End Sub
>>
>> 'exemple de fonction (très simple) que retourne une feuille
>> Function RéouvreDevis1page(C As String) As Worksheet
>>
>> Set RéouvreDevis1page = Worksheets(C)
>>
>> End Function
>>
>> Hervé.
>>
>>
>> "Peponne31" a écrit dans le message
>> de
>> news:
>> > Bonsoir FS
>> >
>> > Merci pour ta réponse, mais ce n'est pas ce que je recherche
>> > les feuille Devis1page et Devis2pages sont des formulaires qui me
>> > servent
>> > à
>> > réaliser des devis en maçonnerie. Ces devis sont imprimé soit sur une
>> > feuille
>> > ou sur 2 feuilles papier tout dépand du travail à faire. C'est pour
>> > cela
>> > que
>> > dans le classeur j'ai une feuille nommée Devis1page et une autre
>> > Devis2pages
>> > .Si je veux modifier un devis je le rappelle par son N° en J3 et ça
>> > fonctionne, mais je ne sais pas faire la differance entre 1 feuille et
>> > 2
>> > feuilles, si je rappelle un devis sur 2 feuilles dans le formulaire
>> > Devis1page il y va avec des erreurs dans les cellules, c'est pour ça
>> > que
>> > je
>> > voudrais interdire la recopie d'un devis 2 pages sur sur le formulaire
>> > Devis1page et vice versa.
>> > Merci
>> >
>> > "FS" a écrit :
>> >
>> >> Bonsoir,
>> >>
>> >> Pour empêcher toute recopie (ou copie) une solution radicale :
>> >>
>> >> Private Sub Workbook_SheetSelectionChange( _
>> >> ByVal Sh As Object, ByVal Target As Range)
>> >> Application.CutCopyMode = False
>> >> End Sub
>> >>
>> >> A recopier dans le module ThisWorkbook du classeur qui t'intéresse.
>> >> Attention, ça empêche tout copier/coller (tant que les macros sont
>> >> activées).
>> >>
>> >> FS
>> >> --
>> >> Frédéric SIGONNEAU
>> >> Modules et modèles pour Excel :
>> >> http://frederic.sigonneau.free.fr/
>> >>
>> >> Peponne31 a écrit :
>> >> > Bonsoir Hervé,
>> >> >
>> >> > je voudrais empècher la recopie d'une feuille Devis2pages dans la
>> >> > feuille
>> >> > Devis1page et vice versa, ces feuilles étant des formulaires, J'ai
>> >> > modifié
>> >> > If vNom = ("Devis2pages") Then
>> >> > en If vNom <> ("Devis1page") Then
>> >> > mais ça ne fonctionne pas
>> >> > "Hervé" a écrit :
>> >> >
>> >> >> Bonsoir Peponne31,
>> >> >>
>> >> >> J'ai un peu de mal à saisir ce que tu veux faire, désolé :o(
>> >> >>
>> >> >> En début de proc tu défini "vNom" à "Devis1page" il ne peut donc
>> >> >> pas
>> >> >> être à
>> >> >> "Devis2pages" dans la suite du code ??? (tu contrôle sa valeur à
>> >> >> "If
>> >> >> vNom > >> >> >> ("Devis2pages") Then").
>> >> >>
>> >> >> En attente de plus de précisions.
>> >> >>
>> >> >> Hervé.
>> >> >>
>> >> >>
>> >> >> "Peponne31" a écrit dans le
>> >> >> message de
>> >> >> news:
>> >> >>> Bonjour,
>> >> >>>
>> >> >>> Dans un classeur, j'ai 2 feuilles du nom de: Devis1page,
>> >> >>> Devis2pages.
>> >> >>> Je voudrais quand Devis1page en J3
>> >> >>> si je rentre un N° de feuille qui correspondrai
>> >> >>> à Devis2pages j'ai un message d'erreur.
>> >> >>> J'ai écrit cela mais ça ne fonctionne pas.
>> >> >>>
>> >> >>> Private Sub Worksheet_Change(ByVal Target As Range)
>> >> >>> Application.ScreenUpdating = False
>> >> >>> Dim vNom As String
>> >> >>> vNom = ("Devis1page")
>> >> >>> If Target.Address = "$J$6" Then
>> >> >>> ValideSaisie
>> >> >>> LectureDeJ6
>> >> >>> ActiveSheet.Unprotect
>> >> >>> EcritureDeB10
>> >> >>> ActiveSheet.Protect
>> >> >>> ElseIf Target.Address = "$J$3" Then
>> >> >>> RéouvreDevis1page Target.Value
>> >> >>> If vNom = ("Devis2pages") Then
>> >> >>> Message = MsgBox("ERREUR, c'est un Devis 2
>> >> >>> Pages",
>> >> >>> ,
>> >> >>> "FERRE Jean-Raymond")
>> >> >>> ActiveSheet.Unprotect
>> >> >>> Range("B10,B11,J3").Select
>> >> >>> Selection.ClearContents
>> >> >>> ActiveSheet.Protect
>> >> >>> Range("J3").Select
>> >> >>> Range("J3").Activate
>> >> >>> Else
>> >> >>> MaValeurDeB10
>> >> >>> MaValeurDeJ6
>> >> >>> ActiveSheet.Protect
>> >> >>> End If
>> >> >>> End If
>> >> >>> End Sub
>> >> >>> Si quelqu'un veut bien m'aider à corriger !!
>> >> >>> Merci par avance.
>> >> >>> Peponne31
>> >>
>>
Bonjour Peponne31,
C'est normal, comme je te l'ai dit dans mon exemple, la proc
"RéouvreDevis1page(Target.Value)" devrait retourner un objet feuille (c'est
juste une idée) ne connaissant pas cette procédure j'ai fait cette
supposition. Montre nous cette procédure pour voir les modifications à
apporter soit à mon code soit à la procédure.
Hervé.
"Peponne31" <Peponne31@discussions.microsoft.com> a écrit dans le message de
news:95A7C250-FC3E-43EA-9766-169C31381587@microsoft.com...
> Bonjour Hervé,
>
> Merci pour ton aide, j'ai encore un souci au niveau de:
> Set Fe = RéouvreDevis1page(Target.Value)
> Erreur de compilation:
> Fonction ou variable attendue
> Merci encore pour ton aide
>
> Peponne31
>
> "Hervé" a écrit :
>
>>
>> Bonsoir Peponne31,
>>
>> Je pense avoir compris ce que tu désire réaliser.
>> Pour savoir si le devis que tu souhaite ouvrir se trouve sur une ou deux
>> pages (à l'impression bien sûr !) il suffit de connaître le nombre de
>> saut
>> de pages, si il est égal à zéro, c'est un devis sur une page, dans le cas
>> contraire, c'est un devis sur deux pages (ou plus si tu le désire, il
>> suffit
>> d'adapter).
>> J'ai un peu modifié ta procédure. En admettant que la valeur est changée
>> dans J3, la proc "RéouvreDevis1page(Target.Value)" devrait retourner un
>> objet feuille (je pense que le nom de la feuille est la valeur en J3 ?)
>> ensuite, un contrôle est fait sur le nombre de sauts de pages
>> horizontaux,
>> si il y à au moins un saut de page, le devis est sur deux pages et ton
>> message d'erreur sera affiché. Adapte au mieux et revient si tu a
>> d'autres
>> soucis.
>>
>> Private Sub Worksheet_Change(ByVal Target As Range)
>>
>> Dim vNom As String
>> Dim Fe As Worksheet
>>
>> Application.ScreenUpdating = False
>>
>> vNom = ("Devis1page")
>>
>> If Target.Address = "$J$6" Then
>>
>> ValideSaisie
>> LectureDeJ6
>> ActiveSheet.Unprotect
>> EcritureDeB10
>> ActiveSheet.Protect
>>
>> ElseIf Target.Address = "$J$3" Then
>>
>> 'ici, la proc "RéouvreDevis1page" devrait
>> 'retourner un objet feuille
>> Set Fe = RéouvreDevis1page(Target.Value)
>>
>> 'si la feuille contient un saut de page
>> 'c'est une feuille à 2 pages à l'impression
>> If Fe.HPageBreaks.Count >= 1 Then
>>
>> Message = MsgBox("ERREUR, c'est un Devis 2 Pages", _
>> , _
>> "FERRE Jean-Raymond")
>> ActiveSheet.Unprotect
>> Range("B10,B11,J3").Select
>> Selection.ClearContents
>> ActiveSheet.Protect
>> Range("J3").Select
>> Range("J3").Activate
>>
>> Else
>>
>> MaValeurDeB10
>> MaValeurDeJ6
>> ActiveSheet.Protect
>>
>> End If
>> End If
>>
>> Application.ScreenUpdating = True
>>
>> Set Fe = Nothing
>>
>> End Sub
>>
>> 'exemple de fonction (très simple) que retourne une feuille
>> Function RéouvreDevis1page(C As String) As Worksheet
>>
>> Set RéouvreDevis1page = Worksheets(C)
>>
>> End Function
>>
>> Hervé.
>>
>>
>> "Peponne31" <Peponne31@discussions.microsoft.com> a écrit dans le message
>> de
>> news:2F1841AA-B6E5-4FC5-B12C-0C73E470B051@microsoft.com...
>> > Bonsoir FS
>> >
>> > Merci pour ta réponse, mais ce n'est pas ce que je recherche
>> > les feuille Devis1page et Devis2pages sont des formulaires qui me
>> > servent
>> > à
>> > réaliser des devis en maçonnerie. Ces devis sont imprimé soit sur une
>> > feuille
>> > ou sur 2 feuilles papier tout dépand du travail à faire. C'est pour
>> > cela
>> > que
>> > dans le classeur j'ai une feuille nommée Devis1page et une autre
>> > Devis2pages
>> > .Si je veux modifier un devis je le rappelle par son N° en J3 et ça
>> > fonctionne, mais je ne sais pas faire la differance entre 1 feuille et
>> > 2
>> > feuilles, si je rappelle un devis sur 2 feuilles dans le formulaire
>> > Devis1page il y va avec des erreurs dans les cellules, c'est pour ça
>> > que
>> > je
>> > voudrais interdire la recopie d'un devis 2 pages sur sur le formulaire
>> > Devis1page et vice versa.
>> > Merci
>> >
>> > "FS" a écrit :
>> >
>> >> Bonsoir,
>> >>
>> >> Pour empêcher toute recopie (ou copie) une solution radicale :
>> >>
>> >> Private Sub Workbook_SheetSelectionChange( _
>> >> ByVal Sh As Object, ByVal Target As Range)
>> >> Application.CutCopyMode = False
>> >> End Sub
>> >>
>> >> A recopier dans le module ThisWorkbook du classeur qui t'intéresse.
>> >> Attention, ça empêche tout copier/coller (tant que les macros sont
>> >> activées).
>> >>
>> >> FS
>> >> --
>> >> Frédéric SIGONNEAU
>> >> Modules et modèles pour Excel :
>> >> http://frederic.sigonneau.free.fr/
>> >>
>> >> Peponne31 a écrit :
>> >> > Bonsoir Hervé,
>> >> >
>> >> > je voudrais empècher la recopie d'une feuille Devis2pages dans la
>> >> > feuille
>> >> > Devis1page et vice versa, ces feuilles étant des formulaires, J'ai
>> >> > modifié
>> >> > If vNom = ("Devis2pages") Then
>> >> > en If vNom <> ("Devis1page") Then
>> >> > mais ça ne fonctionne pas
>> >> > "Hervé" a écrit :
>> >> >
>> >> >> Bonsoir Peponne31,
>> >> >>
>> >> >> J'ai un peu de mal à saisir ce que tu veux faire, désolé :o(
>> >> >>
>> >> >> En début de proc tu défini "vNom" à "Devis1page" il ne peut donc
>> >> >> pas
>> >> >> être à
>> >> >> "Devis2pages" dans la suite du code ??? (tu contrôle sa valeur à
>> >> >> "If
>> >> >> vNom > >> >> >> ("Devis2pages") Then").
>> >> >>
>> >> >> En attente de plus de précisions.
>> >> >>
>> >> >> Hervé.
>> >> >>
>> >> >>
>> >> >> "Peponne31" <Peponne31@discussions.microsoft.com> a écrit dans le
>> >> >> message de
>> >> >> news:F19755BF-2F6D-4715-9F39-F55174F2850E@microsoft.com...
>> >> >>> Bonjour,
>> >> >>>
>> >> >>> Dans un classeur, j'ai 2 feuilles du nom de: Devis1page,
>> >> >>> Devis2pages.
>> >> >>> Je voudrais quand Devis1page en J3
>> >> >>> si je rentre un N° de feuille qui correspondrai
>> >> >>> à Devis2pages j'ai un message d'erreur.
>> >> >>> J'ai écrit cela mais ça ne fonctionne pas.
>> >> >>>
>> >> >>> Private Sub Worksheet_Change(ByVal Target As Range)
>> >> >>> Application.ScreenUpdating = False
>> >> >>> Dim vNom As String
>> >> >>> vNom = ("Devis1page")
>> >> >>> If Target.Address = "$J$6" Then
>> >> >>> ValideSaisie
>> >> >>> LectureDeJ6
>> >> >>> ActiveSheet.Unprotect
>> >> >>> EcritureDeB10
>> >> >>> ActiveSheet.Protect
>> >> >>> ElseIf Target.Address = "$J$3" Then
>> >> >>> RéouvreDevis1page Target.Value
>> >> >>> If vNom = ("Devis2pages") Then
>> >> >>> Message = MsgBox("ERREUR, c'est un Devis 2
>> >> >>> Pages",
>> >> >>> ,
>> >> >>> "FERRE Jean-Raymond")
>> >> >>> ActiveSheet.Unprotect
>> >> >>> Range("B10,B11,J3").Select
>> >> >>> Selection.ClearContents
>> >> >>> ActiveSheet.Protect
>> >> >>> Range("J3").Select
>> >> >>> Range("J3").Activate
>> >> >>> Else
>> >> >>> MaValeurDeB10
>> >> >>> MaValeurDeJ6
>> >> >>> ActiveSheet.Protect
>> >> >>> End If
>> >> >>> End If
>> >> >>> End Sub
>> >> >>> Si quelqu'un veut bien m'aider à corriger !!
>> >> >>> Merci par avance.
>> >> >>> Peponne31
>> >>
>>
Bonjour Peponne31,
C'est normal, comme je te l'ai dit dans mon exemple, la proc
"RéouvreDevis1page(Target.Value)" devrait retourner un objet feuille (c'est
juste une idée) ne connaissant pas cette procédure j'ai fait cette
supposition. Montre nous cette procédure pour voir les modifications à
apporter soit à mon code soit à la procédure.
Hervé.
"Peponne31" a écrit dans le message de
news:
> Bonjour Hervé,
>
> Merci pour ton aide, j'ai encore un souci au niveau de:
> Set Fe = RéouvreDevis1page(Target.Value)
> Erreur de compilation:
> Fonction ou variable attendue
> Merci encore pour ton aide
>
> Peponne31
>
> "Hervé" a écrit :
>
>>
>> Bonsoir Peponne31,
>>
>> Je pense avoir compris ce que tu désire réaliser.
>> Pour savoir si le devis que tu souhaite ouvrir se trouve sur une ou deux
>> pages (à l'impression bien sûr !) il suffit de connaître le nombre de
>> saut
>> de pages, si il est égal à zéro, c'est un devis sur une page, dans le cas
>> contraire, c'est un devis sur deux pages (ou plus si tu le désire, il
>> suffit
>> d'adapter).
>> J'ai un peu modifié ta procédure. En admettant que la valeur est changée
>> dans J3, la proc "RéouvreDevis1page(Target.Value)" devrait retourner un
>> objet feuille (je pense que le nom de la feuille est la valeur en J3 ?)
>> ensuite, un contrôle est fait sur le nombre de sauts de pages
>> horizontaux,
>> si il y à au moins un saut de page, le devis est sur deux pages et ton
>> message d'erreur sera affiché. Adapte au mieux et revient si tu a
>> d'autres
>> soucis.
>>
>> Private Sub Worksheet_Change(ByVal Target As Range)
>>
>> Dim vNom As String
>> Dim Fe As Worksheet
>>
>> Application.ScreenUpdating = False
>>
>> vNom = ("Devis1page")
>>
>> If Target.Address = "$J$6" Then
>>
>> ValideSaisie
>> LectureDeJ6
>> ActiveSheet.Unprotect
>> EcritureDeB10
>> ActiveSheet.Protect
>>
>> ElseIf Target.Address = "$J$3" Then
>>
>> 'ici, la proc "RéouvreDevis1page" devrait
>> 'retourner un objet feuille
>> Set Fe = RéouvreDevis1page(Target.Value)
>>
>> 'si la feuille contient un saut de page
>> 'c'est une feuille à 2 pages à l'impression
>> If Fe.HPageBreaks.Count >= 1 Then
>>
>> Message = MsgBox("ERREUR, c'est un Devis 2 Pages", _
>> , _
>> "FERRE Jean-Raymond")
>> ActiveSheet.Unprotect
>> Range("B10,B11,J3").Select
>> Selection.ClearContents
>> ActiveSheet.Protect
>> Range("J3").Select
>> Range("J3").Activate
>>
>> Else
>>
>> MaValeurDeB10
>> MaValeurDeJ6
>> ActiveSheet.Protect
>>
>> End If
>> End If
>>
>> Application.ScreenUpdating = True
>>
>> Set Fe = Nothing
>>
>> End Sub
>>
>> 'exemple de fonction (très simple) que retourne une feuille
>> Function RéouvreDevis1page(C As String) As Worksheet
>>
>> Set RéouvreDevis1page = Worksheets(C)
>>
>> End Function
>>
>> Hervé.
>>
>>
>> "Peponne31" a écrit dans le message
>> de
>> news:
>> > Bonsoir FS
>> >
>> > Merci pour ta réponse, mais ce n'est pas ce que je recherche
>> > les feuille Devis1page et Devis2pages sont des formulaires qui me
>> > servent
>> > à
>> > réaliser des devis en maçonnerie. Ces devis sont imprimé soit sur une
>> > feuille
>> > ou sur 2 feuilles papier tout dépand du travail à faire. C'est pour
>> > cela
>> > que
>> > dans le classeur j'ai une feuille nommée Devis1page et une autre
>> > Devis2pages
>> > .Si je veux modifier un devis je le rappelle par son N° en J3 et ça
>> > fonctionne, mais je ne sais pas faire la differance entre 1 feuille et
>> > 2
>> > feuilles, si je rappelle un devis sur 2 feuilles dans le formulaire
>> > Devis1page il y va avec des erreurs dans les cellules, c'est pour ça
>> > que
>> > je
>> > voudrais interdire la recopie d'un devis 2 pages sur sur le formulaire
>> > Devis1page et vice versa.
>> > Merci
>> >
>> > "FS" a écrit :
>> >
>> >> Bonsoir,
>> >>
>> >> Pour empêcher toute recopie (ou copie) une solution radicale :
>> >>
>> >> Private Sub Workbook_SheetSelectionChange( _
>> >> ByVal Sh As Object, ByVal Target As Range)
>> >> Application.CutCopyMode = False
>> >> End Sub
>> >>
>> >> A recopier dans le module ThisWorkbook du classeur qui t'intéresse.
>> >> Attention, ça empêche tout copier/coller (tant que les macros sont
>> >> activées).
>> >>
>> >> FS
>> >> --
>> >> Frédéric SIGONNEAU
>> >> Modules et modèles pour Excel :
>> >> http://frederic.sigonneau.free.fr/
>> >>
>> >> Peponne31 a écrit :
>> >> > Bonsoir Hervé,
>> >> >
>> >> > je voudrais empècher la recopie d'une feuille Devis2pages dans la
>> >> > feuille
>> >> > Devis1page et vice versa, ces feuilles étant des formulaires, J'ai
>> >> > modifié
>> >> > If vNom = ("Devis2pages") Then
>> >> > en If vNom <> ("Devis1page") Then
>> >> > mais ça ne fonctionne pas
>> >> > "Hervé" a écrit :
>> >> >
>> >> >> Bonsoir Peponne31,
>> >> >>
>> >> >> J'ai un peu de mal à saisir ce que tu veux faire, désolé :o(
>> >> >>
>> >> >> En début de proc tu défini "vNom" à "Devis1page" il ne peut donc
>> >> >> pas
>> >> >> être à
>> >> >> "Devis2pages" dans la suite du code ??? (tu contrôle sa valeur à
>> >> >> "If
>> >> >> vNom > >> >> >> ("Devis2pages") Then").
>> >> >>
>> >> >> En attente de plus de précisions.
>> >> >>
>> >> >> Hervé.
>> >> >>
>> >> >>
>> >> >> "Peponne31" a écrit dans le
>> >> >> message de
>> >> >> news:
>> >> >>> Bonjour,
>> >> >>>
>> >> >>> Dans un classeur, j'ai 2 feuilles du nom de: Devis1page,
>> >> >>> Devis2pages.
>> >> >>> Je voudrais quand Devis1page en J3
>> >> >>> si je rentre un N° de feuille qui correspondrai
>> >> >>> à Devis2pages j'ai un message d'erreur.
>> >> >>> J'ai écrit cela mais ça ne fonctionne pas.
>> >> >>>
>> >> >>> Private Sub Worksheet_Change(ByVal Target As Range)
>> >> >>> Application.ScreenUpdating = False
>> >> >>> Dim vNom As String
>> >> >>> vNom = ("Devis1page")
>> >> >>> If Target.Address = "$J$6" Then
>> >> >>> ValideSaisie
>> >> >>> LectureDeJ6
>> >> >>> ActiveSheet.Unprotect
>> >> >>> EcritureDeB10
>> >> >>> ActiveSheet.Protect
>> >> >>> ElseIf Target.Address = "$J$3" Then
>> >> >>> RéouvreDevis1page Target.Value
>> >> >>> If vNom = ("Devis2pages") Then
>> >> >>> Message = MsgBox("ERREUR, c'est un Devis 2
>> >> >>> Pages",
>> >> >>> ,
>> >> >>> "FERRE Jean-Raymond")
>> >> >>> ActiveSheet.Unprotect
>> >> >>> Range("B10,B11,J3").Select
>> >> >>> Selection.ClearContents
>> >> >>> ActiveSheet.Protect
>> >> >>> Range("J3").Select
>> >> >>> Range("J3").Activate
>> >> >>> Else
>> >> >>> MaValeurDeB10
>> >> >>> MaValeurDeJ6
>> >> >>> ActiveSheet.Protect
>> >> >>> End If
>> >> >>> End If
>> >> >>> End Sub
>> >> >>> Si quelqu'un veut bien m'aider à corriger !!
>> >> >>> Merci par avance.
>> >> >>> Peponne31
>> >>
>>
PS:
Mes feuilles ont pour nom d'onglet Devis1page et Devis2pages.
Si ça peut faciliter pour la recopie !!
Merci à toi
Peponne31
"Hervé" a écrit :Bonjour Peponne31,
C'est normal, comme je te l'ai dit dans mon exemple, la proc
"RéouvreDevis1page(Target.Value)" devrait retourner un objet feuille
(c'est
juste une idée) ne connaissant pas cette procédure j'ai fait cette
supposition. Montre nous cette procédure pour voir les modifications à
apporter soit à mon code soit à la procédure.
Hervé.
"Peponne31" a écrit dans le message
de
news:
> Bonjour Hervé,
>
> Merci pour ton aide, j'ai encore un souci au niveau de:
> Set Fe = RéouvreDevis1page(Target.Value)
> Erreur de compilation:
> Fonction ou variable attendue
> Merci encore pour ton aide
>
> Peponne31
>
> "Hervé" a écrit :
>
>>
>> Bonsoir Peponne31,
>>
>> Je pense avoir compris ce que tu désire réaliser.
>> Pour savoir si le devis que tu souhaite ouvrir se trouve sur une ou
>> deux
>> pages (à l'impression bien sûr !) il suffit de connaître le nombre de
>> saut
>> de pages, si il est égal à zéro, c'est un devis sur une page, dans le
>> cas
>> contraire, c'est un devis sur deux pages (ou plus si tu le désire, il
>> suffit
>> d'adapter).
>> J'ai un peu modifié ta procédure. En admettant que la valeur est
>> changée
>> dans J3, la proc "RéouvreDevis1page(Target.Value)" devrait retourner
>> un
>> objet feuille (je pense que le nom de la feuille est la valeur en J3
>> ?)
>> ensuite, un contrôle est fait sur le nombre de sauts de pages
>> horizontaux,
>> si il y à au moins un saut de page, le devis est sur deux pages et ton
>> message d'erreur sera affiché. Adapte au mieux et revient si tu a
>> d'autres
>> soucis.
>>
>> Private Sub Worksheet_Change(ByVal Target As Range)
>>
>> Dim vNom As String
>> Dim Fe As Worksheet
>>
>> Application.ScreenUpdating = False
>>
>> vNom = ("Devis1page")
>>
>> If Target.Address = "$J$6" Then
>>
>> ValideSaisie
>> LectureDeJ6
>> ActiveSheet.Unprotect
>> EcritureDeB10
>> ActiveSheet.Protect
>>
>> ElseIf Target.Address = "$J$3" Then
>>
>> 'ici, la proc "RéouvreDevis1page" devrait
>> 'retourner un objet feuille
>> Set Fe = RéouvreDevis1page(Target.Value)
>>
>> 'si la feuille contient un saut de page
>> 'c'est une feuille à 2 pages à l'impression
>> If Fe.HPageBreaks.Count >= 1 Then
>>
>> Message = MsgBox("ERREUR, c'est un Devis 2 Pages", _
>> , _
>> "FERRE Jean-Raymond")
>> ActiveSheet.Unprotect
>> Range("B10,B11,J3").Select
>> Selection.ClearContents
>> ActiveSheet.Protect
>> Range("J3").Select
>> Range("J3").Activate
>>
>> Else
>>
>> MaValeurDeB10
>> MaValeurDeJ6
>> ActiveSheet.Protect
>>
>> End If
>> End If
>>
>> Application.ScreenUpdating = True
>>
>> Set Fe = Nothing
>>
>> End Sub
>>
>> 'exemple de fonction (très simple) que retourne une feuille
>> Function RéouvreDevis1page(C As String) As Worksheet
>>
>> Set RéouvreDevis1page = Worksheets(C)
>>
>> End Function
>>
>> Hervé.
>>
>>
>> "Peponne31" a écrit dans le
>> message
>> de
>> news:
>> > Bonsoir FS
>> >
>> > Merci pour ta réponse, mais ce n'est pas ce que je recherche
>> > les feuille Devis1page et Devis2pages sont des formulaires qui me
>> > servent
>> > à
>> > réaliser des devis en maçonnerie. Ces devis sont imprimé soit sur
>> > une
>> > feuille
>> > ou sur 2 feuilles papier tout dépand du travail à faire. C'est pour
>> > cela
>> > que
>> > dans le classeur j'ai une feuille nommée Devis1page et une autre
>> > Devis2pages
>> > .Si je veux modifier un devis je le rappelle par son N° en J3 et ça
>> > fonctionne, mais je ne sais pas faire la differance entre 1 feuille
>> > et
>> > 2
>> > feuilles, si je rappelle un devis sur 2 feuilles dans le formulaire
>> > Devis1page il y va avec des erreurs dans les cellules, c'est pour ça
>> > que
>> > je
>> > voudrais interdire la recopie d'un devis 2 pages sur sur le
>> > formulaire
>> > Devis1page et vice versa.
>> > Merci
>> >
>> > "FS" a écrit :
>> >
>> >> Bonsoir,
>> >>
>> >> Pour empêcher toute recopie (ou copie) une solution radicale :
>> >>
>> >> Private Sub Workbook_SheetSelectionChange( _
>> >> ByVal Sh As Object, ByVal Target As Range)
>> >> Application.CutCopyMode = False
>> >> End Sub
>> >>
>> >> A recopier dans le module ThisWorkbook du classeur qui t'intéresse.
>> >> Attention, ça empêche tout copier/coller (tant que les macros sont
>> >> activées).
>> >>
>> >> FS
>> >> --
>> >> Frédéric SIGONNEAU
>> >> Modules et modèles pour Excel :
>> >> http://frederic.sigonneau.free.fr/
>> >>
>> >> Peponne31 a écrit :
>> >> > Bonsoir Hervé,
>> >> >
>> >> > je voudrais empècher la recopie d'une feuille Devis2pages dans la
>> >> > feuille
>> >> > Devis1page et vice versa, ces feuilles étant des formulaires,
>> >> > J'ai
>> >> > modifié
>> >> > If vNom = ("Devis2pages") Then
>> >> > en If vNom <> ("Devis1page") Then
>> >> > mais ça ne fonctionne pas
>> >> > "Hervé" a écrit :
>> >> >
>> >> >> Bonsoir Peponne31,
>> >> >>
>> >> >> J'ai un peu de mal à saisir ce que tu veux faire, désolé :o(
>> >> >>
>> >> >> En début de proc tu défini "vNom" à "Devis1page" il ne peut donc
>> >> >> pas
>> >> >> être à
>> >> >> "Devis2pages" dans la suite du code ??? (tu contrôle sa valeur à
>> >> >> "If
>> >> >> vNom >> >> >> >> ("Devis2pages") Then").
>> >> >>
>> >> >> En attente de plus de précisions.
>> >> >>
>> >> >> Hervé.
>> >> >>
>> >> >>
>> >> >> "Peponne31" a écrit dans
>> >> >> le
>> >> >> message de
>> >> >> news:
>> >> >>> Bonjour,
>> >> >>>
>> >> >>> Dans un classeur, j'ai 2 feuilles du nom de: Devis1page,
>> >> >>> Devis2pages.
>> >> >>> Je voudrais quand Devis1page en J3
>> >> >>> si je rentre un N° de feuille qui correspondrai
>> >> >>> à Devis2pages j'ai un message d'erreur.
>> >> >>> J'ai écrit cela mais ça ne fonctionne pas.
>> >> >>>
>> >> >>> Private Sub Worksheet_Change(ByVal Target As Range)
>> >> >>> Application.ScreenUpdating = False
>> >> >>> Dim vNom As String
>> >> >>> vNom = ("Devis1page")
>> >> >>> If Target.Address = "$J$6" Then
>> >> >>> ValideSaisie
>> >> >>> LectureDeJ6
>> >> >>> ActiveSheet.Unprotect
>> >> >>> EcritureDeB10
>> >> >>> ActiveSheet.Protect
>> >> >>> ElseIf Target.Address = "$J$3" Then
>> >> >>> RéouvreDevis1page Target.Value
>> >> >>> If vNom = ("Devis2pages") Then
>> >> >>> Message = MsgBox("ERREUR, c'est un Devis
>> >> >>> 2
>> >> >>> Pages",
>> >> >>> ,
>> >> >>> "FERRE Jean-Raymond")
>> >> >>> ActiveSheet.Unprotect
>> >> >>> Range("B10,B11,J3").Select
>> >> >>> Selection.ClearContents
>> >> >>> ActiveSheet.Protect
>> >> >>> Range("J3").Select
>> >> >>> Range("J3").Activate
>> >> >>> Else
>> >> >>> MaValeurDeB10
>> >> >>> MaValeurDeJ6
>> >> >>> ActiveSheet.Protect
>> >> >>> End If
>> >> >>> End If
>> >> >>> End Sub
>> >> >>> Si quelqu'un veut bien m'aider à corriger !!
>> >> >>> Merci par avance.
>> >> >>> Peponne31
>> >>
>>
PS:
Mes feuilles ont pour nom d'onglet Devis1page et Devis2pages.
Si ça peut faciliter pour la recopie !!
Merci à toi
Peponne31
"Hervé" a écrit :
Bonjour Peponne31,
C'est normal, comme je te l'ai dit dans mon exemple, la proc
"RéouvreDevis1page(Target.Value)" devrait retourner un objet feuille
(c'est
juste une idée) ne connaissant pas cette procédure j'ai fait cette
supposition. Montre nous cette procédure pour voir les modifications à
apporter soit à mon code soit à la procédure.
Hervé.
"Peponne31" <Peponne31@discussions.microsoft.com> a écrit dans le message
de
news:95A7C250-FC3E-43EA-9766-169C31381587@microsoft.com...
> Bonjour Hervé,
>
> Merci pour ton aide, j'ai encore un souci au niveau de:
> Set Fe = RéouvreDevis1page(Target.Value)
> Erreur de compilation:
> Fonction ou variable attendue
> Merci encore pour ton aide
>
> Peponne31
>
> "Hervé" a écrit :
>
>>
>> Bonsoir Peponne31,
>>
>> Je pense avoir compris ce que tu désire réaliser.
>> Pour savoir si le devis que tu souhaite ouvrir se trouve sur une ou
>> deux
>> pages (à l'impression bien sûr !) il suffit de connaître le nombre de
>> saut
>> de pages, si il est égal à zéro, c'est un devis sur une page, dans le
>> cas
>> contraire, c'est un devis sur deux pages (ou plus si tu le désire, il
>> suffit
>> d'adapter).
>> J'ai un peu modifié ta procédure. En admettant que la valeur est
>> changée
>> dans J3, la proc "RéouvreDevis1page(Target.Value)" devrait retourner
>> un
>> objet feuille (je pense que le nom de la feuille est la valeur en J3
>> ?)
>> ensuite, un contrôle est fait sur le nombre de sauts de pages
>> horizontaux,
>> si il y à au moins un saut de page, le devis est sur deux pages et ton
>> message d'erreur sera affiché. Adapte au mieux et revient si tu a
>> d'autres
>> soucis.
>>
>> Private Sub Worksheet_Change(ByVal Target As Range)
>>
>> Dim vNom As String
>> Dim Fe As Worksheet
>>
>> Application.ScreenUpdating = False
>>
>> vNom = ("Devis1page")
>>
>> If Target.Address = "$J$6" Then
>>
>> ValideSaisie
>> LectureDeJ6
>> ActiveSheet.Unprotect
>> EcritureDeB10
>> ActiveSheet.Protect
>>
>> ElseIf Target.Address = "$J$3" Then
>>
>> 'ici, la proc "RéouvreDevis1page" devrait
>> 'retourner un objet feuille
>> Set Fe = RéouvreDevis1page(Target.Value)
>>
>> 'si la feuille contient un saut de page
>> 'c'est une feuille à 2 pages à l'impression
>> If Fe.HPageBreaks.Count >= 1 Then
>>
>> Message = MsgBox("ERREUR, c'est un Devis 2 Pages", _
>> , _
>> "FERRE Jean-Raymond")
>> ActiveSheet.Unprotect
>> Range("B10,B11,J3").Select
>> Selection.ClearContents
>> ActiveSheet.Protect
>> Range("J3").Select
>> Range("J3").Activate
>>
>> Else
>>
>> MaValeurDeB10
>> MaValeurDeJ6
>> ActiveSheet.Protect
>>
>> End If
>> End If
>>
>> Application.ScreenUpdating = True
>>
>> Set Fe = Nothing
>>
>> End Sub
>>
>> 'exemple de fonction (très simple) que retourne une feuille
>> Function RéouvreDevis1page(C As String) As Worksheet
>>
>> Set RéouvreDevis1page = Worksheets(C)
>>
>> End Function
>>
>> Hervé.
>>
>>
>> "Peponne31" <Peponne31@discussions.microsoft.com> a écrit dans le
>> message
>> de
>> news:2F1841AA-B6E5-4FC5-B12C-0C73E470B051@microsoft.com...
>> > Bonsoir FS
>> >
>> > Merci pour ta réponse, mais ce n'est pas ce que je recherche
>> > les feuille Devis1page et Devis2pages sont des formulaires qui me
>> > servent
>> > à
>> > réaliser des devis en maçonnerie. Ces devis sont imprimé soit sur
>> > une
>> > feuille
>> > ou sur 2 feuilles papier tout dépand du travail à faire. C'est pour
>> > cela
>> > que
>> > dans le classeur j'ai une feuille nommée Devis1page et une autre
>> > Devis2pages
>> > .Si je veux modifier un devis je le rappelle par son N° en J3 et ça
>> > fonctionne, mais je ne sais pas faire la differance entre 1 feuille
>> > et
>> > 2
>> > feuilles, si je rappelle un devis sur 2 feuilles dans le formulaire
>> > Devis1page il y va avec des erreurs dans les cellules, c'est pour ça
>> > que
>> > je
>> > voudrais interdire la recopie d'un devis 2 pages sur sur le
>> > formulaire
>> > Devis1page et vice versa.
>> > Merci
>> >
>> > "FS" a écrit :
>> >
>> >> Bonsoir,
>> >>
>> >> Pour empêcher toute recopie (ou copie) une solution radicale :
>> >>
>> >> Private Sub Workbook_SheetSelectionChange( _
>> >> ByVal Sh As Object, ByVal Target As Range)
>> >> Application.CutCopyMode = False
>> >> End Sub
>> >>
>> >> A recopier dans le module ThisWorkbook du classeur qui t'intéresse.
>> >> Attention, ça empêche tout copier/coller (tant que les macros sont
>> >> activées).
>> >>
>> >> FS
>> >> --
>> >> Frédéric SIGONNEAU
>> >> Modules et modèles pour Excel :
>> >> http://frederic.sigonneau.free.fr/
>> >>
>> >> Peponne31 a écrit :
>> >> > Bonsoir Hervé,
>> >> >
>> >> > je voudrais empècher la recopie d'une feuille Devis2pages dans la
>> >> > feuille
>> >> > Devis1page et vice versa, ces feuilles étant des formulaires,
>> >> > J'ai
>> >> > modifié
>> >> > If vNom = ("Devis2pages") Then
>> >> > en If vNom <> ("Devis1page") Then
>> >> > mais ça ne fonctionne pas
>> >> > "Hervé" a écrit :
>> >> >
>> >> >> Bonsoir Peponne31,
>> >> >>
>> >> >> J'ai un peu de mal à saisir ce que tu veux faire, désolé :o(
>> >> >>
>> >> >> En début de proc tu défini "vNom" à "Devis1page" il ne peut donc
>> >> >> pas
>> >> >> être à
>> >> >> "Devis2pages" dans la suite du code ??? (tu contrôle sa valeur à
>> >> >> "If
>> >> >> vNom >> >> >> >> ("Devis2pages") Then").
>> >> >>
>> >> >> En attente de plus de précisions.
>> >> >>
>> >> >> Hervé.
>> >> >>
>> >> >>
>> >> >> "Peponne31" <Peponne31@discussions.microsoft.com> a écrit dans
>> >> >> le
>> >> >> message de
>> >> >> news:F19755BF-2F6D-4715-9F39-F55174F2850E@microsoft.com...
>> >> >>> Bonjour,
>> >> >>>
>> >> >>> Dans un classeur, j'ai 2 feuilles du nom de: Devis1page,
>> >> >>> Devis2pages.
>> >> >>> Je voudrais quand Devis1page en J3
>> >> >>> si je rentre un N° de feuille qui correspondrai
>> >> >>> à Devis2pages j'ai un message d'erreur.
>> >> >>> J'ai écrit cela mais ça ne fonctionne pas.
>> >> >>>
>> >> >>> Private Sub Worksheet_Change(ByVal Target As Range)
>> >> >>> Application.ScreenUpdating = False
>> >> >>> Dim vNom As String
>> >> >>> vNom = ("Devis1page")
>> >> >>> If Target.Address = "$J$6" Then
>> >> >>> ValideSaisie
>> >> >>> LectureDeJ6
>> >> >>> ActiveSheet.Unprotect
>> >> >>> EcritureDeB10
>> >> >>> ActiveSheet.Protect
>> >> >>> ElseIf Target.Address = "$J$3" Then
>> >> >>> RéouvreDevis1page Target.Value
>> >> >>> If vNom = ("Devis2pages") Then
>> >> >>> Message = MsgBox("ERREUR, c'est un Devis
>> >> >>> 2
>> >> >>> Pages",
>> >> >>> ,
>> >> >>> "FERRE Jean-Raymond")
>> >> >>> ActiveSheet.Unprotect
>> >> >>> Range("B10,B11,J3").Select
>> >> >>> Selection.ClearContents
>> >> >>> ActiveSheet.Protect
>> >> >>> Range("J3").Select
>> >> >>> Range("J3").Activate
>> >> >>> Else
>> >> >>> MaValeurDeB10
>> >> >>> MaValeurDeJ6
>> >> >>> ActiveSheet.Protect
>> >> >>> End If
>> >> >>> End If
>> >> >>> End Sub
>> >> >>> Si quelqu'un veut bien m'aider à corriger !!
>> >> >>> Merci par avance.
>> >> >>> Peponne31
>> >>
>>
PS:
Mes feuilles ont pour nom d'onglet Devis1page et Devis2pages.
Si ça peut faciliter pour la recopie !!
Merci à toi
Peponne31
"Hervé" a écrit :Bonjour Peponne31,
C'est normal, comme je te l'ai dit dans mon exemple, la proc
"RéouvreDevis1page(Target.Value)" devrait retourner un objet feuille
(c'est
juste une idée) ne connaissant pas cette procédure j'ai fait cette
supposition. Montre nous cette procédure pour voir les modifications à
apporter soit à mon code soit à la procédure.
Hervé.
"Peponne31" a écrit dans le message
de
news:
> Bonjour Hervé,
>
> Merci pour ton aide, j'ai encore un souci au niveau de:
> Set Fe = RéouvreDevis1page(Target.Value)
> Erreur de compilation:
> Fonction ou variable attendue
> Merci encore pour ton aide
>
> Peponne31
>
> "Hervé" a écrit :
>
>>
>> Bonsoir Peponne31,
>>
>> Je pense avoir compris ce que tu désire réaliser.
>> Pour savoir si le devis que tu souhaite ouvrir se trouve sur une ou
>> deux
>> pages (à l'impression bien sûr !) il suffit de connaître le nombre de
>> saut
>> de pages, si il est égal à zéro, c'est un devis sur une page, dans le
>> cas
>> contraire, c'est un devis sur deux pages (ou plus si tu le désire, il
>> suffit
>> d'adapter).
>> J'ai un peu modifié ta procédure. En admettant que la valeur est
>> changée
>> dans J3, la proc "RéouvreDevis1page(Target.Value)" devrait retourner
>> un
>> objet feuille (je pense que le nom de la feuille est la valeur en J3
>> ?)
>> ensuite, un contrôle est fait sur le nombre de sauts de pages
>> horizontaux,
>> si il y à au moins un saut de page, le devis est sur deux pages et ton
>> message d'erreur sera affiché. Adapte au mieux et revient si tu a
>> d'autres
>> soucis.
>>
>> Private Sub Worksheet_Change(ByVal Target As Range)
>>
>> Dim vNom As String
>> Dim Fe As Worksheet
>>
>> Application.ScreenUpdating = False
>>
>> vNom = ("Devis1page")
>>
>> If Target.Address = "$J$6" Then
>>
>> ValideSaisie
>> LectureDeJ6
>> ActiveSheet.Unprotect
>> EcritureDeB10
>> ActiveSheet.Protect
>>
>> ElseIf Target.Address = "$J$3" Then
>>
>> 'ici, la proc "RéouvreDevis1page" devrait
>> 'retourner un objet feuille
>> Set Fe = RéouvreDevis1page(Target.Value)
>>
>> 'si la feuille contient un saut de page
>> 'c'est une feuille à 2 pages à l'impression
>> If Fe.HPageBreaks.Count >= 1 Then
>>
>> Message = MsgBox("ERREUR, c'est un Devis 2 Pages", _
>> , _
>> "FERRE Jean-Raymond")
>> ActiveSheet.Unprotect
>> Range("B10,B11,J3").Select
>> Selection.ClearContents
>> ActiveSheet.Protect
>> Range("J3").Select
>> Range("J3").Activate
>>
>> Else
>>
>> MaValeurDeB10
>> MaValeurDeJ6
>> ActiveSheet.Protect
>>
>> End If
>> End If
>>
>> Application.ScreenUpdating = True
>>
>> Set Fe = Nothing
>>
>> End Sub
>>
>> 'exemple de fonction (très simple) que retourne une feuille
>> Function RéouvreDevis1page(C As String) As Worksheet
>>
>> Set RéouvreDevis1page = Worksheets(C)
>>
>> End Function
>>
>> Hervé.
>>
>>
>> "Peponne31" a écrit dans le
>> message
>> de
>> news:
>> > Bonsoir FS
>> >
>> > Merci pour ta réponse, mais ce n'est pas ce que je recherche
>> > les feuille Devis1page et Devis2pages sont des formulaires qui me
>> > servent
>> > à
>> > réaliser des devis en maçonnerie. Ces devis sont imprimé soit sur
>> > une
>> > feuille
>> > ou sur 2 feuilles papier tout dépand du travail à faire. C'est pour
>> > cela
>> > que
>> > dans le classeur j'ai une feuille nommée Devis1page et une autre
>> > Devis2pages
>> > .Si je veux modifier un devis je le rappelle par son N° en J3 et ça
>> > fonctionne, mais je ne sais pas faire la differance entre 1 feuille
>> > et
>> > 2
>> > feuilles, si je rappelle un devis sur 2 feuilles dans le formulaire
>> > Devis1page il y va avec des erreurs dans les cellules, c'est pour ça
>> > que
>> > je
>> > voudrais interdire la recopie d'un devis 2 pages sur sur le
>> > formulaire
>> > Devis1page et vice versa.
>> > Merci
>> >
>> > "FS" a écrit :
>> >
>> >> Bonsoir,
>> >>
>> >> Pour empêcher toute recopie (ou copie) une solution radicale :
>> >>
>> >> Private Sub Workbook_SheetSelectionChange( _
>> >> ByVal Sh As Object, ByVal Target As Range)
>> >> Application.CutCopyMode = False
>> >> End Sub
>> >>
>> >> A recopier dans le module ThisWorkbook du classeur qui t'intéresse.
>> >> Attention, ça empêche tout copier/coller (tant que les macros sont
>> >> activées).
>> >>
>> >> FS
>> >> --
>> >> Frédéric SIGONNEAU
>> >> Modules et modèles pour Excel :
>> >> http://frederic.sigonneau.free.fr/
>> >>
>> >> Peponne31 a écrit :
>> >> > Bonsoir Hervé,
>> >> >
>> >> > je voudrais empècher la recopie d'une feuille Devis2pages dans la
>> >> > feuille
>> >> > Devis1page et vice versa, ces feuilles étant des formulaires,
>> >> > J'ai
>> >> > modifié
>> >> > If vNom = ("Devis2pages") Then
>> >> > en If vNom <> ("Devis1page") Then
>> >> > mais ça ne fonctionne pas
>> >> > "Hervé" a écrit :
>> >> >
>> >> >> Bonsoir Peponne31,
>> >> >>
>> >> >> J'ai un peu de mal à saisir ce que tu veux faire, désolé :o(
>> >> >>
>> >> >> En début de proc tu défini "vNom" à "Devis1page" il ne peut donc
>> >> >> pas
>> >> >> être à
>> >> >> "Devis2pages" dans la suite du code ??? (tu contrôle sa valeur à
>> >> >> "If
>> >> >> vNom >> >> >> >> ("Devis2pages") Then").
>> >> >>
>> >> >> En attente de plus de précisions.
>> >> >>
>> >> >> Hervé.
>> >> >>
>> >> >>
>> >> >> "Peponne31" a écrit dans
>> >> >> le
>> >> >> message de
>> >> >> news:
>> >> >>> Bonjour,
>> >> >>>
>> >> >>> Dans un classeur, j'ai 2 feuilles du nom de: Devis1page,
>> >> >>> Devis2pages.
>> >> >>> Je voudrais quand Devis1page en J3
>> >> >>> si je rentre un N° de feuille qui correspondrai
>> >> >>> à Devis2pages j'ai un message d'erreur.
>> >> >>> J'ai écrit cela mais ça ne fonctionne pas.
>> >> >>>
>> >> >>> Private Sub Worksheet_Change(ByVal Target As Range)
>> >> >>> Application.ScreenUpdating = False
>> >> >>> Dim vNom As String
>> >> >>> vNom = ("Devis1page")
>> >> >>> If Target.Address = "$J$6" Then
>> >> >>> ValideSaisie
>> >> >>> LectureDeJ6
>> >> >>> ActiveSheet.Unprotect
>> >> >>> EcritureDeB10
>> >> >>> ActiveSheet.Protect
>> >> >>> ElseIf Target.Address = "$J$3" Then
>> >> >>> RéouvreDevis1page Target.Value
>> >> >>> If vNom = ("Devis2pages") Then
>> >> >>> Message = MsgBox("ERREUR, c'est un Devis
>> >> >>> 2
>> >> >>> Pages",
>> >> >>> ,
>> >> >>> "FERRE Jean-Raymond")
>> >> >>> ActiveSheet.Unprotect
>> >> >>> Range("B10,B11,J3").Select
>> >> >>> Selection.ClearContents
>> >> >>> ActiveSheet.Protect
>> >> >>> Range("J3").Select
>> >> >>> Range("J3").Activate
>> >> >>> Else
>> >> >>> MaValeurDeB10
>> >> >>> MaValeurDeJ6
>> >> >>> ActiveSheet.Protect
>> >> >>> End If
>> >> >>> End If
>> >> >>> End Sub
>> >> >>> Si quelqu'un veut bien m'aider à corriger !!
>> >> >>> Merci par avance.
>> >> >>> Peponne31
>> >>
>>