Copier/Coller sur une autre feuille, sous condition. Worksheet_Change déjà utilisé.
3 réponses
Joseph.Allard
Bonjour,
je dispose d'un fichier Excel avec notamment quatre feuilles:
"Hypoth=E8ses"
"Hypoth=E8ses initiales"
"2=E8me jeu d'hypoth=E8ses"
"3=E8me jeu d'hypoth=E8ses"
La Cellule Hypoth=E8ses!D2 contient une liste de validation avec les
valeurs suivantes:
"Mode Saisie", "Hypoth=E8ses initiales", "2=E8me jeu d'hypoth=E8ses" et
"3=E8me jeu d'hypoth=E8ses".
Je souhaite que lorsque l'une des 3 derni=E8res valeurs est
s=E9lectionn=E9e, le tableau G6:X86 de la feuille correspondante vienne
se coller en G6 de la feuille "Hypoth=E8ses". Lorsque "Mode Saisie" est
s=E9lectionn=E9, je souhaite vider le tableau G6:X86 de la feuille
"Hypoth=E8ses".
Je pense que je devrais pouvoir le r=E9aliser en utilisant
Worksheet_Change avec D2 comme cellule cible. Le probl=E8me c'est que
j'utilise d=E9j=E0 la m=E9thode Worksheet_Change sur cette feuille avec la
macro suivante (qui fonctionne convenablement, mais qui pourrait
certainement =EAtre optimis=E9e) :
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$N$5" Then Exit Sub
If UCase(Target) =3D "2005" Then
Columns("G:M").Hidden =3D True
Feuil8.Columns("J:P").Hidden =3D True
ElseIf UCase(Target) =3D "2006" Then
Columns("G").Hidden =3D False
Columns("H:M").Hidden =3D True
Feuil8.Columns("J").Hidden =3D False
Feuil8.Columns("K:P").Hidden =3D True
ElseIf UCase(Target) =3D "2007" Then
Columns("G:H").Hidden =3D False
Columns("I:M").Hidden =3D True
Feuil8.Columns("J:K").Hidden =3D False
Feuil8.Columns("L:P").Hidden =3D True
ElseIf UCase(Target) =3D "2008" Then
Columns("G:I").Hidden =3D False
Columns("J:M").Hidden =3D True
Feuil8.Columns("J:L").Hidden =3D False
Feuil8.Columns("M:P").Hidden =3D True
ElseIf UCase(Target) =3D "2009" Then
Columns("G:J").Hidden =3D False
Columns("K:M").Hidden =3D True
Feuil8.Columns("J:M").Hidden =3D False
Feuil8.Columns("N:P").Hidden =3D True
ElseIf UCase(Target) =3D "2010" Then
Columns("G:K").Hidden =3D False
Columns("L:M").Hidden =3D True
Feuil8.Columns("J:N").Hidden =3D False
Feuil8.Columns("O:P").Hidden =3D True
ElseIf UCase(Target) =3D "2011" Then
Columns("G:L").Hidden =3D False
Columns("M").Hidden =3D True
Feuil8.Columns("J:O").Hidden =3D False
Feuil8.Columns("P").Hidden =3D True
ElseIf UCase(Target) =3D "2012" Then
Columns("G:M").Hidden =3D False
Feuil8.Columns("J:P").Hidden =3D False
End If
End Sub
J'ai donc ins=E9rer une nouvelle feuille =E0 mon classeur, "Mode", pour
tenter l'op=E9ration avec un Worksheet_Calculation. La cellule A1 de
Mode reprend simplement la cellule D2 de
"Hypoth=E8ses".(A1=3DHypoth=E8ses!D2). Et =E7a coince, mes t=E2tonnements
n'ont men=E9 =E0 rien.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Daniel
Bonjour. Mets la macro suivante dans le code de la feuille "Hypothèses" :
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address <> "$D$2" Then Exit Sub If Target.Value = "Hypothèses initiales" Or Target.Value = _ "2ème jeu d'hypothèses" _ Or Target.Value = "3ème jeu d'hypothèses" Then Sheets(Target.Value).Range("G6:X86").Copy Range("G6") ElseIf Target.Value = "Mode Saisie" Then Range("G6:X86").ClearContents End If End Sub
Cordialement. Daniel a écrit dans le message de news:
Bonjour,
je dispose d'un fichier Excel avec notamment quatre feuilles: "Hypothèses" "Hypothèses initiales" "2ème jeu d'hypothèses" "3ème jeu d'hypothèses"
La Cellule Hypothèses!D2 contient une liste de validation avec les valeurs suivantes: "Mode Saisie", "Hypothèses initiales", "2ème jeu d'hypothèses" et "3ème jeu d'hypothèses".
Je souhaite que lorsque l'une des 3 dernières valeurs est sélectionnée, le tableau G6:X86 de la feuille correspondante vienne se coller en G6 de la feuille "Hypothèses". Lorsque "Mode Saisie" est sélectionné, je souhaite vider le tableau G6:X86 de la feuille "Hypothèses".
Je pense que je devrais pouvoir le réaliser en utilisant Worksheet_Change avec D2 comme cellule cible. Le problème c'est que j'utilise déjà la méthode Worksheet_Change sur cette feuille avec la macro suivante (qui fonctionne convenablement, mais qui pourrait certainement être optimisée) :
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address <> "$N$5" Then Exit Sub
If UCase(Target) = "2005" Then Columns("G:M").Hidden = True Feuil8.Columns("J:P").Hidden = True ElseIf UCase(Target) = "2006" Then Columns("G").Hidden = False Columns("H:M").Hidden = True Feuil8.Columns("J").Hidden = False Feuil8.Columns("K:P").Hidden = True ElseIf UCase(Target) = "2007" Then Columns("G:H").Hidden = False Columns("I:M").Hidden = True Feuil8.Columns("J:K").Hidden = False Feuil8.Columns("L:P").Hidden = True ElseIf UCase(Target) = "2008" Then Columns("G:I").Hidden = False Columns("J:M").Hidden = True Feuil8.Columns("J:L").Hidden = False Feuil8.Columns("M:P").Hidden = True ElseIf UCase(Target) = "2009" Then Columns("G:J").Hidden = False Columns("K:M").Hidden = True Feuil8.Columns("J:M").Hidden = False Feuil8.Columns("N:P").Hidden = True ElseIf UCase(Target) = "2010" Then Columns("G:K").Hidden = False Columns("L:M").Hidden = True Feuil8.Columns("J:N").Hidden = False Feuil8.Columns("O:P").Hidden = True ElseIf UCase(Target) = "2011" Then Columns("G:L").Hidden = False Columns("M").Hidden = True Feuil8.Columns("J:O").Hidden = False Feuil8.Columns("P").Hidden = True ElseIf UCase(Target) = "2012" Then Columns("G:M").Hidden = False Feuil8.Columns("J:P").Hidden = False End If End Sub
J'ai donc insérer une nouvelle feuille à mon classeur, "Mode", pour tenter l'opération avec un Worksheet_Calculation. La cellule A1 de Mode reprend simplement la cellule D2 de "Hypothèses".(A1=Hypothèses!D2). Et ça coince, mes tâtonnements n'ont mené à rien.
Bonjour.
Mets la macro suivante dans le code de la feuille "Hypothèses" :
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$D$2" Then Exit Sub
If Target.Value = "Hypothèses initiales" Or Target.Value = _
"2ème jeu d'hypothèses" _
Or Target.Value = "3ème jeu d'hypothèses" Then
Sheets(Target.Value).Range("G6:X86").Copy Range("G6")
ElseIf Target.Value = "Mode Saisie" Then
Range("G6:X86").ClearContents
End If
End Sub
Cordialement.
Daniel
<Joseph.Allard@gmail.com> a écrit dans le message de news:
1153970220.183423.21580@i3g2000cwc.googlegroups.com...
Bonjour,
je dispose d'un fichier Excel avec notamment quatre feuilles:
"Hypothèses"
"Hypothèses initiales"
"2ème jeu d'hypothèses"
"3ème jeu d'hypothèses"
La Cellule Hypothèses!D2 contient une liste de validation avec les
valeurs suivantes:
"Mode Saisie", "Hypothèses initiales", "2ème jeu d'hypothèses" et
"3ème jeu d'hypothèses".
Je souhaite que lorsque l'une des 3 dernières valeurs est
sélectionnée, le tableau G6:X86 de la feuille correspondante vienne
se coller en G6 de la feuille "Hypothèses". Lorsque "Mode Saisie" est
sélectionné, je souhaite vider le tableau G6:X86 de la feuille
"Hypothèses".
Je pense que je devrais pouvoir le réaliser en utilisant
Worksheet_Change avec D2 comme cellule cible. Le problème c'est que
j'utilise déjà la méthode Worksheet_Change sur cette feuille avec la
macro suivante (qui fonctionne convenablement, mais qui pourrait
certainement être optimisée) :
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$N$5" Then Exit Sub
If UCase(Target) = "2005" Then
Columns("G:M").Hidden = True
Feuil8.Columns("J:P").Hidden = True
ElseIf UCase(Target) = "2006" Then
Columns("G").Hidden = False
Columns("H:M").Hidden = True
Feuil8.Columns("J").Hidden = False
Feuil8.Columns("K:P").Hidden = True
ElseIf UCase(Target) = "2007" Then
Columns("G:H").Hidden = False
Columns("I:M").Hidden = True
Feuil8.Columns("J:K").Hidden = False
Feuil8.Columns("L:P").Hidden = True
ElseIf UCase(Target) = "2008" Then
Columns("G:I").Hidden = False
Columns("J:M").Hidden = True
Feuil8.Columns("J:L").Hidden = False
Feuil8.Columns("M:P").Hidden = True
ElseIf UCase(Target) = "2009" Then
Columns("G:J").Hidden = False
Columns("K:M").Hidden = True
Feuil8.Columns("J:M").Hidden = False
Feuil8.Columns("N:P").Hidden = True
ElseIf UCase(Target) = "2010" Then
Columns("G:K").Hidden = False
Columns("L:M").Hidden = True
Feuil8.Columns("J:N").Hidden = False
Feuil8.Columns("O:P").Hidden = True
ElseIf UCase(Target) = "2011" Then
Columns("G:L").Hidden = False
Columns("M").Hidden = True
Feuil8.Columns("J:O").Hidden = False
Feuil8.Columns("P").Hidden = True
ElseIf UCase(Target) = "2012" Then
Columns("G:M").Hidden = False
Feuil8.Columns("J:P").Hidden = False
End If
End Sub
J'ai donc insérer une nouvelle feuille à mon classeur, "Mode", pour
tenter l'opération avec un Worksheet_Calculation. La cellule A1 de
Mode reprend simplement la cellule D2 de
"Hypothèses".(A1=Hypothèses!D2). Et ça coince, mes tâtonnements
n'ont mené à rien.
Bonjour. Mets la macro suivante dans le code de la feuille "Hypothèses" :
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address <> "$D$2" Then Exit Sub If Target.Value = "Hypothèses initiales" Or Target.Value = _ "2ème jeu d'hypothèses" _ Or Target.Value = "3ème jeu d'hypothèses" Then Sheets(Target.Value).Range("G6:X86").Copy Range("G6") ElseIf Target.Value = "Mode Saisie" Then Range("G6:X86").ClearContents End If End Sub
Cordialement. Daniel a écrit dans le message de news:
Bonjour,
je dispose d'un fichier Excel avec notamment quatre feuilles: "Hypothèses" "Hypothèses initiales" "2ème jeu d'hypothèses" "3ème jeu d'hypothèses"
La Cellule Hypothèses!D2 contient une liste de validation avec les valeurs suivantes: "Mode Saisie", "Hypothèses initiales", "2ème jeu d'hypothèses" et "3ème jeu d'hypothèses".
Je souhaite que lorsque l'une des 3 dernières valeurs est sélectionnée, le tableau G6:X86 de la feuille correspondante vienne se coller en G6 de la feuille "Hypothèses". Lorsque "Mode Saisie" est sélectionné, je souhaite vider le tableau G6:X86 de la feuille "Hypothèses".
Je pense que je devrais pouvoir le réaliser en utilisant Worksheet_Change avec D2 comme cellule cible. Le problème c'est que j'utilise déjà la méthode Worksheet_Change sur cette feuille avec la macro suivante (qui fonctionne convenablement, mais qui pourrait certainement être optimisée) :
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address <> "$N$5" Then Exit Sub
If UCase(Target) = "2005" Then Columns("G:M").Hidden = True Feuil8.Columns("J:P").Hidden = True ElseIf UCase(Target) = "2006" Then Columns("G").Hidden = False Columns("H:M").Hidden = True Feuil8.Columns("J").Hidden = False Feuil8.Columns("K:P").Hidden = True ElseIf UCase(Target) = "2007" Then Columns("G:H").Hidden = False Columns("I:M").Hidden = True Feuil8.Columns("J:K").Hidden = False Feuil8.Columns("L:P").Hidden = True ElseIf UCase(Target) = "2008" Then Columns("G:I").Hidden = False Columns("J:M").Hidden = True Feuil8.Columns("J:L").Hidden = False Feuil8.Columns("M:P").Hidden = True ElseIf UCase(Target) = "2009" Then Columns("G:J").Hidden = False Columns("K:M").Hidden = True Feuil8.Columns("J:M").Hidden = False Feuil8.Columns("N:P").Hidden = True ElseIf UCase(Target) = "2010" Then Columns("G:K").Hidden = False Columns("L:M").Hidden = True Feuil8.Columns("J:N").Hidden = False Feuil8.Columns("O:P").Hidden = True ElseIf UCase(Target) = "2011" Then Columns("G:L").Hidden = False Columns("M").Hidden = True Feuil8.Columns("J:O").Hidden = False Feuil8.Columns("P").Hidden = True ElseIf UCase(Target) = "2012" Then Columns("G:M").Hidden = False Feuil8.Columns("J:P").Hidden = False End If End Sub
J'ai donc insérer une nouvelle feuille à mon classeur, "Mode", pour tenter l'opération avec un Worksheet_Calculation. La cellule A1 de Mode reprend simplement la cellule D2 de "Hypothèses".(A1=Hypothèses!D2). Et ça coince, mes tâtonnements n'ont mené à rien.
Joseph.Allard
C'est bon, j'ai trouvé! Je poste le code pour info et si vous avez des idées d'optimisation. Et je ne passe donc bien par une feuille supllémentaire cachée.
Dans le code de ma feuille "Hypothèses": Private Sub Worksheet_Calculate() Application.EnableEvents = False Call Macro10 Application.EnableEvents = True End Sub
Dans un module: Sub Macro10() If sheets("Mode").Range("A1") = "Mode Hypothèses initiales" Then sheets("Hypothèses initiales").Select sheets("Hypothèses initiales").Range("G6:X86").Select Application.CutCopyMode = False Selection.Copy sheets("Hypothèses").Activate sheets("Hypothèses").Range("G6").Select ActiveSheet.Paste sheets("Hypothèses").Range("N5").Select ElseIf sheets("Mode").Range("A1") = "2ème jeu d'hypothèses" Then sheets("Hypothèses2").Select sheets("Hypothèses2").Range("G6:X86").Select Application.CutCopyMode = False Selection.Copy sheets("Hypothèses").Activate sheets("Hypothèses").Range("G6").Select ActiveSheet.Paste sheets("Hypothèses").Range("N5").Select ElseIf sheets("Mode").Range("A1") = "3ème jeu d'hypothèses" Then sheets("Hypothèses3").Select sheets("Hypothèses3").Range("G6:X86").Select Application.CutCopyMode = False Selection.Copy sheets("Hypothèses").Activate sheets("Hypothèses").Range("G6").Select ActiveSheet.Paste sheets("Hypothèses").Range("N5").Select ElseIf sheets("Mode").Range("A1") = "Mode Saisie" Then sheets("Hypothèses").Range("G6:X86").Select Selection.ClearContents sheets("Hypothèses").Range("N5").Select End If End Sub
C'est bon, j'ai trouvé!
Je poste le code pour info et si vous avez des idées d'optimisation.
Et je ne passe donc bien par une feuille supllémentaire cachée.
Dans le code de ma feuille "Hypothèses":
Private Sub Worksheet_Calculate()
Application.EnableEvents = False
Call Macro10
Application.EnableEvents = True
End Sub
Dans un module:
Sub Macro10()
If sheets("Mode").Range("A1") = "Mode Hypothèses initiales" Then
sheets("Hypothèses initiales").Select
sheets("Hypothèses initiales").Range("G6:X86").Select
Application.CutCopyMode = False
Selection.Copy
sheets("Hypothèses").Activate
sheets("Hypothèses").Range("G6").Select
ActiveSheet.Paste
sheets("Hypothèses").Range("N5").Select
ElseIf sheets("Mode").Range("A1") = "2ème jeu d'hypothèses" Then
sheets("Hypothèses2").Select
sheets("Hypothèses2").Range("G6:X86").Select
Application.CutCopyMode = False
Selection.Copy
sheets("Hypothèses").Activate
sheets("Hypothèses").Range("G6").Select
ActiveSheet.Paste
sheets("Hypothèses").Range("N5").Select
ElseIf sheets("Mode").Range("A1") = "3ème jeu d'hypothèses" Then
sheets("Hypothèses3").Select
sheets("Hypothèses3").Range("G6:X86").Select
Application.CutCopyMode = False
Selection.Copy
sheets("Hypothèses").Activate
sheets("Hypothèses").Range("G6").Select
ActiveSheet.Paste
sheets("Hypothèses").Range("N5").Select
ElseIf sheets("Mode").Range("A1") = "Mode Saisie" Then
sheets("Hypothèses").Range("G6:X86").Select
Selection.ClearContents
sheets("Hypothèses").Range("N5").Select
End If
End Sub
C'est bon, j'ai trouvé! Je poste le code pour info et si vous avez des idées d'optimisation. Et je ne passe donc bien par une feuille supllémentaire cachée.
Dans le code de ma feuille "Hypothèses": Private Sub Worksheet_Calculate() Application.EnableEvents = False Call Macro10 Application.EnableEvents = True End Sub
Dans un module: Sub Macro10() If sheets("Mode").Range("A1") = "Mode Hypothèses initiales" Then sheets("Hypothèses initiales").Select sheets("Hypothèses initiales").Range("G6:X86").Select Application.CutCopyMode = False Selection.Copy sheets("Hypothèses").Activate sheets("Hypothèses").Range("G6").Select ActiveSheet.Paste sheets("Hypothèses").Range("N5").Select ElseIf sheets("Mode").Range("A1") = "2ème jeu d'hypothèses" Then sheets("Hypothèses2").Select sheets("Hypothèses2").Range("G6:X86").Select Application.CutCopyMode = False Selection.Copy sheets("Hypothèses").Activate sheets("Hypothèses").Range("G6").Select ActiveSheet.Paste sheets("Hypothèses").Range("N5").Select ElseIf sheets("Mode").Range("A1") = "3ème jeu d'hypothèses" Then sheets("Hypothèses3").Select sheets("Hypothèses3").Range("G6:X86").Select Application.CutCopyMode = False Selection.Copy sheets("Hypothèses").Activate sheets("Hypothèses").Range("G6").Select ActiveSheet.Paste sheets("Hypothèses").Range("N5").Select ElseIf sheets("Mode").Range("A1") = "Mode Saisie" Then sheets("Hypothèses").Range("G6:X86").Select Selection.ClearContents sheets("Hypothèses").Range("N5").Select End If End Sub
Joseph.Allard
Merci Daniel pour la réponse.
En fait, je ne peux réutiliser Worksheet_Change dans cette fauille, je l'utilise déjà (sinon, j'obtiens un message d'erreur "expression ambigue"). C'est pour cela que je passe par un Worksheet_Calculate et par le truchement d'une feuille chachée.
Cordialement, Joseph
Daniel wrote:
Bonjour. Mets la macro suivante dans le code de la feuille "Hypothèses" :
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address <> "$D$2" Then Exit Sub If Target.Value = "Hypothèses initiales" Or Target.Value = _ "2ème jeu d'hypothèses" _ Or Target.Value = "3ème jeu d'hypothèses" Then Sheets(Target.Value).Range("G6:X86").Copy Range("G6") ElseIf Target.Value = "Mode Saisie" Then Range("G6:X86").ClearContents End If End Sub
Cordialement. Daniel a écrit dans le message de news:
Bonjour,
je dispose d'un fichier Excel avec notamment quatre feuilles: "Hypothèses" "Hypothèses initiales" "2ème jeu d'hypothèses" "3ème jeu d'hypothèses"
La Cellule Hypothèses!D2 contient une liste de validation avec les valeurs suivantes: "Mode Saisie", "Hypothèses initiales", "2ème jeu d'hypothèses" et "3ème jeu d'hypothèses".
Je souhaite que lorsque l'une des 3 dernières valeurs est sélectionnée, le tableau G6:X86 de la feuille correspondante vienne se coller en G6 de la feuille "Hypothèses". Lorsque "Mode Saisie" est sélectionné, je souhaite vider le tableau G6:X86 de la feuille "Hypothèses".
Je pense que je devrais pouvoir le réaliser en utilisant Worksheet_Change avec D2 comme cellule cible. Le problème c'est que j'utilise déjà la méthode Worksheet_Change sur cette feuille avec la macro suivante (qui fonctionne convenablement, mais qui pourrait certainement être optimisée) :
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address <> "$N$5" Then Exit Sub
If UCase(Target) = "2005" Then Columns("G:M").Hidden = True Feuil8.Columns("J:P").Hidden = True ElseIf UCase(Target) = "2006" Then Columns("G").Hidden = False Columns("H:M").Hidden = True Feuil8.Columns("J").Hidden = False Feuil8.Columns("K:P").Hidden = True ElseIf UCase(Target) = "2007" Then Columns("G:H").Hidden = False Columns("I:M").Hidden = True Feuil8.Columns("J:K").Hidden = False Feuil8.Columns("L:P").Hidden = True ElseIf UCase(Target) = "2008" Then Columns("G:I").Hidden = False Columns("J:M").Hidden = True Feuil8.Columns("J:L").Hidden = False Feuil8.Columns("M:P").Hidden = True ElseIf UCase(Target) = "2009" Then Columns("G:J").Hidden = False Columns("K:M").Hidden = True Feuil8.Columns("J:M").Hidden = False Feuil8.Columns("N:P").Hidden = True ElseIf UCase(Target) = "2010" Then Columns("G:K").Hidden = False Columns("L:M").Hidden = True Feuil8.Columns("J:N").Hidden = False Feuil8.Columns("O:P").Hidden = True ElseIf UCase(Target) = "2011" Then Columns("G:L").Hidden = False Columns("M").Hidden = True Feuil8.Columns("J:O").Hidden = False Feuil8.Columns("P").Hidden = True ElseIf UCase(Target) = "2012" Then Columns("G:M").Hidden = False Feuil8.Columns("J:P").Hidden = False End If End Sub
J'ai donc insérer une nouvelle feuille à mon classeur, "Mode", pour tenter l'opération avec un Worksheet_Calculation. La cellule A1 de Mode reprend simplement la cellule D2 de "Hypothèses".(A1=Hypothèses!D2). Et ça coince, mes tâtonnements n'ont mené à rien.
Merci Daniel pour la réponse.
En fait, je ne peux réutiliser Worksheet_Change dans cette fauille, je
l'utilise déjà (sinon, j'obtiens un message d'erreur "expression
ambigue"). C'est pour cela que je passe par un Worksheet_Calculate et
par le truchement d'une feuille chachée.
Cordialement,
Joseph
Daniel wrote:
Bonjour.
Mets la macro suivante dans le code de la feuille "Hypothèses" :
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$D$2" Then Exit Sub
If Target.Value = "Hypothèses initiales" Or Target.Value = _
"2ème jeu d'hypothèses" _
Or Target.Value = "3ème jeu d'hypothèses" Then
Sheets(Target.Value).Range("G6:X86").Copy Range("G6")
ElseIf Target.Value = "Mode Saisie" Then
Range("G6:X86").ClearContents
End If
End Sub
Cordialement.
Daniel
<Joseph.Allard@gmail.com> a écrit dans le message de news:
1153970220.183423.21580@i3g2000cwc.googlegroups.com...
Bonjour,
je dispose d'un fichier Excel avec notamment quatre feuilles:
"Hypothèses"
"Hypothèses initiales"
"2ème jeu d'hypothèses"
"3ème jeu d'hypothèses"
La Cellule Hypothèses!D2 contient une liste de validation avec les
valeurs suivantes:
"Mode Saisie", "Hypothèses initiales", "2ème jeu d'hypothèses" et
"3ème jeu d'hypothèses".
Je souhaite que lorsque l'une des 3 dernières valeurs est
sélectionnée, le tableau G6:X86 de la feuille correspondante vienne
se coller en G6 de la feuille "Hypothèses". Lorsque "Mode Saisie" est
sélectionné, je souhaite vider le tableau G6:X86 de la feuille
"Hypothèses".
Je pense que je devrais pouvoir le réaliser en utilisant
Worksheet_Change avec D2 comme cellule cible. Le problème c'est que
j'utilise déjà la méthode Worksheet_Change sur cette feuille avec la
macro suivante (qui fonctionne convenablement, mais qui pourrait
certainement être optimisée) :
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$N$5" Then Exit Sub
If UCase(Target) = "2005" Then
Columns("G:M").Hidden = True
Feuil8.Columns("J:P").Hidden = True
ElseIf UCase(Target) = "2006" Then
Columns("G").Hidden = False
Columns("H:M").Hidden = True
Feuil8.Columns("J").Hidden = False
Feuil8.Columns("K:P").Hidden = True
ElseIf UCase(Target) = "2007" Then
Columns("G:H").Hidden = False
Columns("I:M").Hidden = True
Feuil8.Columns("J:K").Hidden = False
Feuil8.Columns("L:P").Hidden = True
ElseIf UCase(Target) = "2008" Then
Columns("G:I").Hidden = False
Columns("J:M").Hidden = True
Feuil8.Columns("J:L").Hidden = False
Feuil8.Columns("M:P").Hidden = True
ElseIf UCase(Target) = "2009" Then
Columns("G:J").Hidden = False
Columns("K:M").Hidden = True
Feuil8.Columns("J:M").Hidden = False
Feuil8.Columns("N:P").Hidden = True
ElseIf UCase(Target) = "2010" Then
Columns("G:K").Hidden = False
Columns("L:M").Hidden = True
Feuil8.Columns("J:N").Hidden = False
Feuil8.Columns("O:P").Hidden = True
ElseIf UCase(Target) = "2011" Then
Columns("G:L").Hidden = False
Columns("M").Hidden = True
Feuil8.Columns("J:O").Hidden = False
Feuil8.Columns("P").Hidden = True
ElseIf UCase(Target) = "2012" Then
Columns("G:M").Hidden = False
Feuil8.Columns("J:P").Hidden = False
End If
End Sub
J'ai donc insérer une nouvelle feuille à mon classeur, "Mode", pour
tenter l'opération avec un Worksheet_Calculation. La cellule A1 de
Mode reprend simplement la cellule D2 de
"Hypothèses".(A1=Hypothèses!D2). Et ça coince, mes tâtonnements
n'ont mené à rien.
En fait, je ne peux réutiliser Worksheet_Change dans cette fauille, je l'utilise déjà (sinon, j'obtiens un message d'erreur "expression ambigue"). C'est pour cela que je passe par un Worksheet_Calculate et par le truchement d'une feuille chachée.
Cordialement, Joseph
Daniel wrote:
Bonjour. Mets la macro suivante dans le code de la feuille "Hypothèses" :
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address <> "$D$2" Then Exit Sub If Target.Value = "Hypothèses initiales" Or Target.Value = _ "2ème jeu d'hypothèses" _ Or Target.Value = "3ème jeu d'hypothèses" Then Sheets(Target.Value).Range("G6:X86").Copy Range("G6") ElseIf Target.Value = "Mode Saisie" Then Range("G6:X86").ClearContents End If End Sub
Cordialement. Daniel a écrit dans le message de news:
Bonjour,
je dispose d'un fichier Excel avec notamment quatre feuilles: "Hypothèses" "Hypothèses initiales" "2ème jeu d'hypothèses" "3ème jeu d'hypothèses"
La Cellule Hypothèses!D2 contient une liste de validation avec les valeurs suivantes: "Mode Saisie", "Hypothèses initiales", "2ème jeu d'hypothèses" et "3ème jeu d'hypothèses".
Je souhaite que lorsque l'une des 3 dernières valeurs est sélectionnée, le tableau G6:X86 de la feuille correspondante vienne se coller en G6 de la feuille "Hypothèses". Lorsque "Mode Saisie" est sélectionné, je souhaite vider le tableau G6:X86 de la feuille "Hypothèses".
Je pense que je devrais pouvoir le réaliser en utilisant Worksheet_Change avec D2 comme cellule cible. Le problème c'est que j'utilise déjà la méthode Worksheet_Change sur cette feuille avec la macro suivante (qui fonctionne convenablement, mais qui pourrait certainement être optimisée) :
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address <> "$N$5" Then Exit Sub
If UCase(Target) = "2005" Then Columns("G:M").Hidden = True Feuil8.Columns("J:P").Hidden = True ElseIf UCase(Target) = "2006" Then Columns("G").Hidden = False Columns("H:M").Hidden = True Feuil8.Columns("J").Hidden = False Feuil8.Columns("K:P").Hidden = True ElseIf UCase(Target) = "2007" Then Columns("G:H").Hidden = False Columns("I:M").Hidden = True Feuil8.Columns("J:K").Hidden = False Feuil8.Columns("L:P").Hidden = True ElseIf UCase(Target) = "2008" Then Columns("G:I").Hidden = False Columns("J:M").Hidden = True Feuil8.Columns("J:L").Hidden = False Feuil8.Columns("M:P").Hidden = True ElseIf UCase(Target) = "2009" Then Columns("G:J").Hidden = False Columns("K:M").Hidden = True Feuil8.Columns("J:M").Hidden = False Feuil8.Columns("N:P").Hidden = True ElseIf UCase(Target) = "2010" Then Columns("G:K").Hidden = False Columns("L:M").Hidden = True Feuil8.Columns("J:N").Hidden = False Feuil8.Columns("O:P").Hidden = True ElseIf UCase(Target) = "2011" Then Columns("G:L").Hidden = False Columns("M").Hidden = True Feuil8.Columns("J:O").Hidden = False Feuil8.Columns("P").Hidden = True ElseIf UCase(Target) = "2012" Then Columns("G:M").Hidden = False Feuil8.Columns("J:P").Hidden = False End If End Sub
J'ai donc insérer une nouvelle feuille à mon classeur, "Mode", pour tenter l'opération avec un Worksheet_Calculation. La cellule A1 de Mode reprend simplement la cellule D2 de "Hypothèses".(A1=Hypothèses!D2). Et ça coince, mes tâtonnements n'ont mené à rien.