Re Philippe,
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de news:Re j-pascal,
2 questions encore :
le tri se fait bien dans la feuille qui contiens le Private Sub
Worksheet_Change(ByVal Target As Range) ?
Oui, mais le code du Tri est dans un module "normal" (pas dans le module
de Feuil)où se trouve l'instruction de passage à "" de D6 ?
La cellule D6 = SI(SOMME(PlageTestTri)=0;"";" >>>") (le bouton se trouve
dans la cellule E6 et en fonction du résultat, j'ai une mise en forme
conditionnelle qui met le motif de la cellule en rouge ce qui "invite"
l'utilisateur à Trier !)
PlageTestTri contient une formule qui teste la colonne de Noms. Si le nom
du dessus est ">" à celui de la ligne testée, la formule renvoit un "1".
Si le contenu de la colonne est supérieur à 0 cela signifie que la plage
doit être triée.
Je sais, c'est un peu tordu, mais ça marche bien (sans recours à une
macro) ;-)Essaie toujours de glisser l'instruction "doevents" en fin de sub ; comme
ceci :
Selection.End(xlDown).offset(1, 0).Select
End If
End If
doevents
End Sub
histoire de forcer l'exécution du code évenementiel.
Désolé, ça ne fonctionne pas ;-(
JP--
Philippe.R
"j-pascal" a écrit dans le message de
news:Bonjour Philippe,
Désolé, j'avais mis le code sur un autre fil (2 sujets liés), voici le
code en question :
'-------------(début code Tri) ----------------------------
Sub TriPlageAtrier()
If Range("AX6") = "DOUBLON" Then
MsgBox "Veuillez éliminer le(s) doublon(s) avant d'effectuer le
tri
!"
Exit Sub
Else
If Range("AW6") <> "TRI" Then
MsgBox "La liste est déjà triée !"
Exit Sub
Else
Range("PlageAtrier").Select 'B422:AZ801
Selection.Sort Key1:=Range("C9"), Order1:=xlAscending,
Header:=xlGuess _
, OrderCustom:=1, MatchCase:úlse,
Orientation:=xlTopToBottom,
_
DataOption1:=xlSortNormal
Range("C9").Select
Selection.End(xlDown).offset(1, 0).Select
End If
End If
End Sub
'----------------------(fin code Tri)---------------------------
@+ ?
JP
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de news:Bonjour,
Voici ce que je lit comme instructions dans le code que tu fournis :Private Sub Worksheet_Change(ByVal Target As Range)
'Lorsque un contenu change dans une cellule quelconque de la feuilleIf Range("D6") = " >>>" Then '2 espaces
Si la cellule D6 contient la chaîne " >>>"ActiveSheet.Shapes("Button 98").Select
sélectionne le bouton n°98Selection.Characters.Text = "TRIER ici"
inscrit sur ce bouton le texte "TRIER ici"Range("D6").Select
sélectionne la cellule D6Else
sinonActiveSheet.Shapes("Button 98").Select
sélectionne le bouton n°98Selection.Characters.Text = "Liste Ok"
inscrit sur ce bouton le texte "Liste Ok"Range("D6").Select
sélectionne la cellule D6End If
End Sub
A aucun moment l'instruction de tri ne figure, d'où ma question car je
suppose qu'une macro est affectée au bouton.
--
Philippe.R
"j-pascal" a écrit dans le message de
news:ue5f$Bonjour Philippe,
Le tri s'effectue si la cellule "D6" comprend le signe " >>>" (situé
juste à gauche du bouton de TRI) ... :
--------------------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("D6") = " >>>" Then '2 espaces
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "TRIER ici"
Range("D6").Select
Else
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "Liste Ok"
Range("D6").Select
End If
End Sub
----------------------------------------------------------------
JP
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de
news: %Bonsoir j-pascal,
Comment ton bouton lance t il le tri, je ne vois aucune instruction
correspondant dns le code fourni ?
En revanche, actuellemnt, le chnagement d'intitulé de ton bouton est
lié à un changement de valeur dans la feuille
--
Philippe.R
"j-pascal" a écrit dans le message de
news:%Bonsoir,
Si j'effectue un tri en appuyant sur le bouton 98 car la valeur de
D6 = "", le tri s'effectue et donc la valeur de D6 passe à "", mais le
texte
"TRIER ici" reste sur le bouton alors que je devrais avoir "Liste
Ok" !
"Liste Ok" s'affiche bien si j'effectue une saisie dans ma liste ...
Voici le code :
--------------------------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("D6") = " >>>" Then '2 espaces
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "TRIER ici"
Range("D6").Select
Else
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "Liste Ok"
Range("D6").Select
End If
End Sub
--------------------------------------------------------------------
Merci d'avance pour vos lumières ...
--
Cordialement @+
JP
Re Philippe,
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de news:
eN6ydoC0HHA.3916@TK2MSFTNGP02.phx.gbl...
Re j-pascal,
2 questions encore :
le tri se fait bien dans la feuille qui contiens le Private Sub
Worksheet_Change(ByVal Target As Range) ?
Oui, mais le code du Tri est dans un module "normal" (pas dans le module
de Feuil)
où se trouve l'instruction de passage à "" de D6 ?
La cellule D6 = SI(SOMME(PlageTestTri)=0;"";" >>>") (le bouton se trouve
dans la cellule E6 et en fonction du résultat, j'ai une mise en forme
conditionnelle qui met le motif de la cellule en rouge ce qui "invite"
l'utilisateur à Trier !)
PlageTestTri contient une formule qui teste la colonne de Noms. Si le nom
du dessus est ">" à celui de la ligne testée, la formule renvoit un "1".
Si le contenu de la colonne est supérieur à 0 cela signifie que la plage
doit être triée.
Je sais, c'est un peu tordu, mais ça marche bien (sans recours à une
macro) ;-)
Essaie toujours de glisser l'instruction "doevents" en fin de sub ; comme
ceci :
Selection.End(xlDown).offset(1, 0).Select
End If
End If
doevents
End Sub
histoire de forcer l'exécution du code évenementiel.
Désolé, ça ne fonctionne pas ;-(
JP
--
Philippe.R
"j-pascal" <nospam-j-pascal@free.fr> a écrit dans le message de
news:O7KcqAC0HHA.5764@TK2MSFTNGP03.phx.gbl...
Bonjour Philippe,
Désolé, j'avais mis le code sur un autre fil (2 sujets liés), voici le
code en question :
'-------------(début code Tri) ----------------------------
Sub TriPlageAtrier()
If Range("AX6") = "DOUBLON" Then
MsgBox "Veuillez éliminer le(s) doublon(s) avant d'effectuer le
tri
!"
Exit Sub
Else
If Range("AW6") <> "TRI" Then
MsgBox "La liste est déjà triée !"
Exit Sub
Else
Range("PlageAtrier").Select 'B422:AZ801
Selection.Sort Key1:=Range("C9"), Order1:=xlAscending,
Header:=xlGuess _
, OrderCustom:=1, MatchCase:úlse,
Orientation:=xlTopToBottom,
_
DataOption1:=xlSortNormal
Range("C9").Select
Selection.End(xlDown).offset(1, 0).Select
End If
End If
End Sub
'----------------------(fin code Tri)---------------------------
@+ ?
JP
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de news:
e4zTo8A0HHA.600@TK2MSFTNGP05.phx.gbl...
Bonjour,
Voici ce que je lit comme instructions dans le code que tu fournis :
Private Sub Worksheet_Change(ByVal Target As Range)
'Lorsque un contenu change dans une cellule quelconque de la feuille
If Range("D6") = " >>>" Then '2 espaces
Si la cellule D6 contient la chaîne " >>>"
ActiveSheet.Shapes("Button 98").Select
sélectionne le bouton n°98
Selection.Characters.Text = "TRIER ici"
inscrit sur ce bouton le texte "TRIER ici"
Range("D6").Select
sélectionne la cellule D6
Else
sinon
ActiveSheet.Shapes("Button 98").Select
sélectionne le bouton n°98
Selection.Characters.Text = "Liste Ok"
inscrit sur ce bouton le texte "Liste Ok"
Range("D6").Select
sélectionne la cellule D6
End If
End Sub
A aucun moment l'instruction de tri ne figure, d'où ma question car je
suppose qu'une macro est affectée au bouton.
--
Philippe.R
"j-pascal" <nospam-j-pascal@free.fr> a écrit dans le message de
news:ue5f$UozHHA.3940@TK2MSFTNGP05.phx.gbl...
Bonjour Philippe,
Le tri s'effectue si la cellule "D6" comprend le signe " >>>" (situé
juste à gauche du bouton de TRI) ... :
--------------------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("D6") = " >>>" Then '2 espaces
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "TRIER ici"
Range("D6").Select
Else
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "Liste Ok"
Range("D6").Select
End If
End Sub
----------------------------------------------------------------
JP
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de
news: %23HgqH9izHHA.2484@TK2MSFTNGP06.phx.gbl...
Bonsoir j-pascal,
Comment ton bouton lance t il le tri, je ne vois aucune instruction
correspondant dns le code fourni ?
En revanche, actuellemnt, le chnagement d'intitulé de ton bouton est
lié à un changement de valeur dans la feuille
--
Philippe.R
"j-pascal" <nospam-j-pascal@free.fr> a écrit dans le message de
news:%23yxcg2izHHA.5772@TK2MSFTNGP02.phx.gbl...
Bonsoir,
Si j'effectue un tri en appuyant sur le bouton 98 car la valeur de
D6 = "
", le tri s'effectue et donc la valeur de D6 passe à "", mais le
texte
"TRIER ici" reste sur le bouton alors que je devrais avoir "Liste
Ok" !
"Liste Ok" s'affiche bien si j'effectue une saisie dans ma liste ...
Voici le code :
--------------------------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("D6") = " >>>" Then '2 espaces
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "TRIER ici"
Range("D6").Select
Else
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "Liste Ok"
Range("D6").Select
End If
End Sub
--------------------------------------------------------------------
Merci d'avance pour vos lumières ...
--
Cordialement @+
JP
Re Philippe,
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de news:Re j-pascal,
2 questions encore :
le tri se fait bien dans la feuille qui contiens le Private Sub
Worksheet_Change(ByVal Target As Range) ?
Oui, mais le code du Tri est dans un module "normal" (pas dans le module
de Feuil)où se trouve l'instruction de passage à "" de D6 ?
La cellule D6 = SI(SOMME(PlageTestTri)=0;"";" >>>") (le bouton se trouve
dans la cellule E6 et en fonction du résultat, j'ai une mise en forme
conditionnelle qui met le motif de la cellule en rouge ce qui "invite"
l'utilisateur à Trier !)
PlageTestTri contient une formule qui teste la colonne de Noms. Si le nom
du dessus est ">" à celui de la ligne testée, la formule renvoit un "1".
Si le contenu de la colonne est supérieur à 0 cela signifie que la plage
doit être triée.
Je sais, c'est un peu tordu, mais ça marche bien (sans recours à une
macro) ;-)Essaie toujours de glisser l'instruction "doevents" en fin de sub ; comme
ceci :
Selection.End(xlDown).offset(1, 0).Select
End If
End If
doevents
End Sub
histoire de forcer l'exécution du code évenementiel.
Désolé, ça ne fonctionne pas ;-(
JP--
Philippe.R
"j-pascal" a écrit dans le message de
news:Bonjour Philippe,
Désolé, j'avais mis le code sur un autre fil (2 sujets liés), voici le
code en question :
'-------------(début code Tri) ----------------------------
Sub TriPlageAtrier()
If Range("AX6") = "DOUBLON" Then
MsgBox "Veuillez éliminer le(s) doublon(s) avant d'effectuer le
tri
!"
Exit Sub
Else
If Range("AW6") <> "TRI" Then
MsgBox "La liste est déjà triée !"
Exit Sub
Else
Range("PlageAtrier").Select 'B422:AZ801
Selection.Sort Key1:=Range("C9"), Order1:=xlAscending,
Header:=xlGuess _
, OrderCustom:=1, MatchCase:úlse,
Orientation:=xlTopToBottom,
_
DataOption1:=xlSortNormal
Range("C9").Select
Selection.End(xlDown).offset(1, 0).Select
End If
End If
End Sub
'----------------------(fin code Tri)---------------------------
@+ ?
JP
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de news:Bonjour,
Voici ce que je lit comme instructions dans le code que tu fournis :Private Sub Worksheet_Change(ByVal Target As Range)
'Lorsque un contenu change dans une cellule quelconque de la feuilleIf Range("D6") = " >>>" Then '2 espaces
Si la cellule D6 contient la chaîne " >>>"ActiveSheet.Shapes("Button 98").Select
sélectionne le bouton n°98Selection.Characters.Text = "TRIER ici"
inscrit sur ce bouton le texte "TRIER ici"Range("D6").Select
sélectionne la cellule D6Else
sinonActiveSheet.Shapes("Button 98").Select
sélectionne le bouton n°98Selection.Characters.Text = "Liste Ok"
inscrit sur ce bouton le texte "Liste Ok"Range("D6").Select
sélectionne la cellule D6End If
End Sub
A aucun moment l'instruction de tri ne figure, d'où ma question car je
suppose qu'une macro est affectée au bouton.
--
Philippe.R
"j-pascal" a écrit dans le message de
news:ue5f$Bonjour Philippe,
Le tri s'effectue si la cellule "D6" comprend le signe " >>>" (situé
juste à gauche du bouton de TRI) ... :
--------------------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("D6") = " >>>" Then '2 espaces
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "TRIER ici"
Range("D6").Select
Else
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "Liste Ok"
Range("D6").Select
End If
End Sub
----------------------------------------------------------------
JP
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de
news: %Bonsoir j-pascal,
Comment ton bouton lance t il le tri, je ne vois aucune instruction
correspondant dns le code fourni ?
En revanche, actuellemnt, le chnagement d'intitulé de ton bouton est
lié à un changement de valeur dans la feuille
--
Philippe.R
"j-pascal" a écrit dans le message de
news:%Bonsoir,
Si j'effectue un tri en appuyant sur le bouton 98 car la valeur de
D6 = "", le tri s'effectue et donc la valeur de D6 passe à "", mais le
texte
"TRIER ici" reste sur le bouton alors que je devrais avoir "Liste
Ok" !
"Liste Ok" s'affiche bien si j'effectue une saisie dans ma liste ...
Voici le code :
--------------------------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("D6") = " >>>" Then '2 espaces
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "TRIER ici"
Range("D6").Select
Else
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "Liste Ok"
Range("D6").Select
End If
End Sub
--------------------------------------------------------------------
Merci d'avance pour vos lumières ...
--
Cordialement @+
JP
Re,
Je vois, du moins je l'espère ;o))
Puisqu'il s'agit du résultat d'un calcul, tente d'ajouter encore
l'instruction calculate avant le doevents
Selection.End(xlDown).offset(1, 0).Select
End If
End If
calculate
doevents
End Sub
Servir !
Philippe.R
"j-pascal" a écrit dans le message de
news:e%23$Re Philippe,
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de news:Re j-pascal,
2 questions encore :
le tri se fait bien dans la feuille qui contiens le Private Sub
Worksheet_Change(ByVal Target As Range) ?
Oui, mais le code du Tri est dans un module "normal" (pas dans le module
de Feuil)où se trouve l'instruction de passage à "" de D6 ?
La cellule D6 = SI(SOMME(PlageTestTri)=0;"";" >>>") (le bouton se trouve
dans la cellule E6 et en fonction du résultat, j'ai une mise en forme
conditionnelle qui met le motif de la cellule en rouge ce qui "invite"
l'utilisateur à Trier !)
PlageTestTri contient une formule qui teste la colonne de Noms. Si le nom
du dessus est ">" à celui de la ligne testée, la formule renvoit un "1".
Si le contenu de la colonne est supérieur à 0 cela signifie que la plage
doit être triée.
Je sais, c'est un peu tordu, mais ça marche bien (sans recours à une
macro) ;-)Essaie toujours de glisser l'instruction "doevents" en fin de sub ;
comme ceci :
Selection.End(xlDown).offset(1, 0).Select
End If
End If
doevents
End Sub
histoire de forcer l'exécution du code évenementiel.
Désolé, ça ne fonctionne pas ;-(
JP--
Philippe.R
"j-pascal" a écrit dans le message de
news:Bonjour Philippe,
Désolé, j'avais mis le code sur un autre fil (2 sujets liés), voici le
code en question :
'-------------(début code Tri) ----------------------------
Sub TriPlageAtrier()
If Range("AX6") = "DOUBLON" Then
MsgBox "Veuillez éliminer le(s) doublon(s) avant d'effectuer le
tri
!"
Exit Sub
Else
If Range("AW6") <> "TRI" Then
MsgBox "La liste est déjà triée !"
Exit Sub
Else
Range("PlageAtrier").Select 'B422:AZ801
Selection.Sort Key1:=Range("C9"), Order1:=xlAscending,
Header:=xlGuess _
, OrderCustom:=1, MatchCase:úlse,
Orientation:=xlTopToBottom,
_
DataOption1:=xlSortNormal
Range("C9").Select
Selection.End(xlDown).offset(1, 0).Select
End If
End If
End Sub
'----------------------(fin code Tri)---------------------------
@+ ?
JP
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de
news:Bonjour,
Voici ce que je lit comme instructions dans le code que tu fournis :Private Sub Worksheet_Change(ByVal Target As Range)
'Lorsque un contenu change dans une cellule quelconque de la feuilleIf Range("D6") = " >>>" Then '2
espaces
Si la cellule D6 contient la chaîne " >>>"ActiveSheet.Shapes("Button 98").Select
sélectionne le bouton n°98Selection.Characters.Text = "TRIER ici"
inscrit sur ce bouton le texte "TRIER ici"Range("D6").Select
sélectionne la cellule D6Else
sinonActiveSheet.Shapes("Button 98").Select
sélectionne le bouton n°98Selection.Characters.Text = "Liste Ok"
inscrit sur ce bouton le texte "Liste Ok"Range("D6").Select
sélectionne la cellule D6End If
End Sub
A aucun moment l'instruction de tri ne figure, d'où ma question car je
suppose qu'une macro est affectée au bouton.
--
Philippe.R
"j-pascal" a écrit dans le message de
news:ue5f$Bonjour Philippe,
Le tri s'effectue si la cellule "D6" comprend le signe " >>>" (situé
juste à gauche du bouton de TRI) ... :
--------------------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("D6") = " >>>" Then '2
espaces
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "TRIER ici"
Range("D6").Select
Else
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "Liste Ok"
Range("D6").Select
End If
End Sub
----------------------------------------------------------------
JP
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de
news: %Bonsoir j-pascal,
Comment ton bouton lance t il le tri, je ne vois aucune instruction
correspondant dns le code fourni ?
En revanche, actuellemnt, le chnagement d'intitulé de ton bouton est
lié à un changement de valeur dans la feuille
--
Philippe.R
"j-pascal" a écrit dans le message de
news:%Bonsoir,
Si j'effectue un tri en appuyant sur le bouton 98 car la valeur de
D6 = "", le tri s'effectue et donc la valeur de D6 passe à "", mais le
texte
"TRIER ici" reste sur le bouton alors que je devrais avoir "Liste
Ok" !
"Liste Ok" s'affiche bien si j'effectue une saisie dans ma liste
...
Voici le code :
--------------------------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("D6") = " >>>" Then '2 espaces
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "TRIER ici"
Range("D6").Select
Else
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "Liste Ok"
Range("D6").Select
End If
End Sub
--------------------------------------------------------------------
Merci d'avance pour vos lumières ...
--
Cordialement @+
JP
Re,
Je vois, du moins je l'espère ;o))
Puisqu'il s'agit du résultat d'un calcul, tente d'ajouter encore
l'instruction calculate avant le doevents
Selection.End(xlDown).offset(1, 0).Select
End If
End If
calculate
doevents
End Sub
Servir !
Philippe.R
"j-pascal" <nospam-j-pascal@free.fr> a écrit dans le message de
news:e%23$SN1D0HHA.2484@TK2MSFTNGP06.phx.gbl...
Re Philippe,
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de news:
eN6ydoC0HHA.3916@TK2MSFTNGP02.phx.gbl...
Re j-pascal,
2 questions encore :
le tri se fait bien dans la feuille qui contiens le Private Sub
Worksheet_Change(ByVal Target As Range) ?
Oui, mais le code du Tri est dans un module "normal" (pas dans le module
de Feuil)
où se trouve l'instruction de passage à "" de D6 ?
La cellule D6 = SI(SOMME(PlageTestTri)=0;"";" >>>") (le bouton se trouve
dans la cellule E6 et en fonction du résultat, j'ai une mise en forme
conditionnelle qui met le motif de la cellule en rouge ce qui "invite"
l'utilisateur à Trier !)
PlageTestTri contient une formule qui teste la colonne de Noms. Si le nom
du dessus est ">" à celui de la ligne testée, la formule renvoit un "1".
Si le contenu de la colonne est supérieur à 0 cela signifie que la plage
doit être triée.
Je sais, c'est un peu tordu, mais ça marche bien (sans recours à une
macro) ;-)
Essaie toujours de glisser l'instruction "doevents" en fin de sub ;
comme ceci :
Selection.End(xlDown).offset(1, 0).Select
End If
End If
doevents
End Sub
histoire de forcer l'exécution du code évenementiel.
Désolé, ça ne fonctionne pas ;-(
JP
--
Philippe.R
"j-pascal" <nospam-j-pascal@free.fr> a écrit dans le message de
news:O7KcqAC0HHA.5764@TK2MSFTNGP03.phx.gbl...
Bonjour Philippe,
Désolé, j'avais mis le code sur un autre fil (2 sujets liés), voici le
code en question :
'-------------(début code Tri) ----------------------------
Sub TriPlageAtrier()
If Range("AX6") = "DOUBLON" Then
MsgBox "Veuillez éliminer le(s) doublon(s) avant d'effectuer le
tri
!"
Exit Sub
Else
If Range("AW6") <> "TRI" Then
MsgBox "La liste est déjà triée !"
Exit Sub
Else
Range("PlageAtrier").Select 'B422:AZ801
Selection.Sort Key1:=Range("C9"), Order1:=xlAscending,
Header:=xlGuess _
, OrderCustom:=1, MatchCase:úlse,
Orientation:=xlTopToBottom,
_
DataOption1:=xlSortNormal
Range("C9").Select
Selection.End(xlDown).offset(1, 0).Select
End If
End If
End Sub
'----------------------(fin code Tri)---------------------------
@+ ?
JP
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de
news: e4zTo8A0HHA.600@TK2MSFTNGP05.phx.gbl...
Bonjour,
Voici ce que je lit comme instructions dans le code que tu fournis :
Private Sub Worksheet_Change(ByVal Target As Range)
'Lorsque un contenu change dans une cellule quelconque de la feuille
If Range("D6") = " >>>" Then '2
espaces
Si la cellule D6 contient la chaîne " >>>"
ActiveSheet.Shapes("Button 98").Select
sélectionne le bouton n°98
Selection.Characters.Text = "TRIER ici"
inscrit sur ce bouton le texte "TRIER ici"
Range("D6").Select
sélectionne la cellule D6
Else
sinon
ActiveSheet.Shapes("Button 98").Select
sélectionne le bouton n°98
Selection.Characters.Text = "Liste Ok"
inscrit sur ce bouton le texte "Liste Ok"
Range("D6").Select
sélectionne la cellule D6
End If
End Sub
A aucun moment l'instruction de tri ne figure, d'où ma question car je
suppose qu'une macro est affectée au bouton.
--
Philippe.R
"j-pascal" <nospam-j-pascal@free.fr> a écrit dans le message de
news:ue5f$UozHHA.3940@TK2MSFTNGP05.phx.gbl...
Bonjour Philippe,
Le tri s'effectue si la cellule "D6" comprend le signe " >>>" (situé
juste à gauche du bouton de TRI) ... :
--------------------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("D6") = " >>>" Then '2
espaces
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "TRIER ici"
Range("D6").Select
Else
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "Liste Ok"
Range("D6").Select
End If
End Sub
----------------------------------------------------------------
JP
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de
news: %23HgqH9izHHA.2484@TK2MSFTNGP06.phx.gbl...
Bonsoir j-pascal,
Comment ton bouton lance t il le tri, je ne vois aucune instruction
correspondant dns le code fourni ?
En revanche, actuellemnt, le chnagement d'intitulé de ton bouton est
lié à un changement de valeur dans la feuille
--
Philippe.R
"j-pascal" <nospam-j-pascal@free.fr> a écrit dans le message de
news:%23yxcg2izHHA.5772@TK2MSFTNGP02.phx.gbl...
Bonsoir,
Si j'effectue un tri en appuyant sur le bouton 98 car la valeur de
D6 = "
", le tri s'effectue et donc la valeur de D6 passe à "", mais le
texte
"TRIER ici" reste sur le bouton alors que je devrais avoir "Liste
Ok" !
"Liste Ok" s'affiche bien si j'effectue une saisie dans ma liste
...
Voici le code :
--------------------------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("D6") = " >>>" Then '2 espaces
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "TRIER ici"
Range("D6").Select
Else
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "Liste Ok"
Range("D6").Select
End If
End Sub
--------------------------------------------------------------------
Merci d'avance pour vos lumières ...
--
Cordialement @+
JP
Re,
Je vois, du moins je l'espère ;o))
Puisqu'il s'agit du résultat d'un calcul, tente d'ajouter encore
l'instruction calculate avant le doevents
Selection.End(xlDown).offset(1, 0).Select
End If
End If
calculate
doevents
End Sub
Servir !
Philippe.R
"j-pascal" a écrit dans le message de
news:e%23$Re Philippe,
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de news:Re j-pascal,
2 questions encore :
le tri se fait bien dans la feuille qui contiens le Private Sub
Worksheet_Change(ByVal Target As Range) ?
Oui, mais le code du Tri est dans un module "normal" (pas dans le module
de Feuil)où se trouve l'instruction de passage à "" de D6 ?
La cellule D6 = SI(SOMME(PlageTestTri)=0;"";" >>>") (le bouton se trouve
dans la cellule E6 et en fonction du résultat, j'ai une mise en forme
conditionnelle qui met le motif de la cellule en rouge ce qui "invite"
l'utilisateur à Trier !)
PlageTestTri contient une formule qui teste la colonne de Noms. Si le nom
du dessus est ">" à celui de la ligne testée, la formule renvoit un "1".
Si le contenu de la colonne est supérieur à 0 cela signifie que la plage
doit être triée.
Je sais, c'est un peu tordu, mais ça marche bien (sans recours à une
macro) ;-)Essaie toujours de glisser l'instruction "doevents" en fin de sub ;
comme ceci :
Selection.End(xlDown).offset(1, 0).Select
End If
End If
doevents
End Sub
histoire de forcer l'exécution du code évenementiel.
Désolé, ça ne fonctionne pas ;-(
JP--
Philippe.R
"j-pascal" a écrit dans le message de
news:Bonjour Philippe,
Désolé, j'avais mis le code sur un autre fil (2 sujets liés), voici le
code en question :
'-------------(début code Tri) ----------------------------
Sub TriPlageAtrier()
If Range("AX6") = "DOUBLON" Then
MsgBox "Veuillez éliminer le(s) doublon(s) avant d'effectuer le
tri
!"
Exit Sub
Else
If Range("AW6") <> "TRI" Then
MsgBox "La liste est déjà triée !"
Exit Sub
Else
Range("PlageAtrier").Select 'B422:AZ801
Selection.Sort Key1:=Range("C9"), Order1:=xlAscending,
Header:=xlGuess _
, OrderCustom:=1, MatchCase:úlse,
Orientation:=xlTopToBottom,
_
DataOption1:=xlSortNormal
Range("C9").Select
Selection.End(xlDown).offset(1, 0).Select
End If
End If
End Sub
'----------------------(fin code Tri)---------------------------
@+ ?
JP
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de
news:Bonjour,
Voici ce que je lit comme instructions dans le code que tu fournis :Private Sub Worksheet_Change(ByVal Target As Range)
'Lorsque un contenu change dans une cellule quelconque de la feuilleIf Range("D6") = " >>>" Then '2
espaces
Si la cellule D6 contient la chaîne " >>>"ActiveSheet.Shapes("Button 98").Select
sélectionne le bouton n°98Selection.Characters.Text = "TRIER ici"
inscrit sur ce bouton le texte "TRIER ici"Range("D6").Select
sélectionne la cellule D6Else
sinonActiveSheet.Shapes("Button 98").Select
sélectionne le bouton n°98Selection.Characters.Text = "Liste Ok"
inscrit sur ce bouton le texte "Liste Ok"Range("D6").Select
sélectionne la cellule D6End If
End Sub
A aucun moment l'instruction de tri ne figure, d'où ma question car je
suppose qu'une macro est affectée au bouton.
--
Philippe.R
"j-pascal" a écrit dans le message de
news:ue5f$Bonjour Philippe,
Le tri s'effectue si la cellule "D6" comprend le signe " >>>" (situé
juste à gauche du bouton de TRI) ... :
--------------------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("D6") = " >>>" Then '2
espaces
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "TRIER ici"
Range("D6").Select
Else
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "Liste Ok"
Range("D6").Select
End If
End Sub
----------------------------------------------------------------
JP
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de
news: %Bonsoir j-pascal,
Comment ton bouton lance t il le tri, je ne vois aucune instruction
correspondant dns le code fourni ?
En revanche, actuellemnt, le chnagement d'intitulé de ton bouton est
lié à un changement de valeur dans la feuille
--
Philippe.R
"j-pascal" a écrit dans le message de
news:%Bonsoir,
Si j'effectue un tri en appuyant sur le bouton 98 car la valeur de
D6 = "", le tri s'effectue et donc la valeur de D6 passe à "", mais le
texte
"TRIER ici" reste sur le bouton alors que je devrais avoir "Liste
Ok" !
"Liste Ok" s'affiche bien si j'effectue une saisie dans ma liste
...
Voici le code :
--------------------------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("D6") = " >>>" Then '2 espaces
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "TRIER ici"
Range("D6").Select
Else
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "Liste Ok"
Range("D6").Select
End If
End Sub
--------------------------------------------------------------------
Merci d'avance pour vos lumières ...
--
Cordialement @+
JP
Bonsoir,
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de news:
%Re,
Je vois, du moins je l'espère ;o))
Puisqu'il s'agit du résultat d'un calcul, tente d'ajouter encore
l'instruction calculate avant le doevents
Selection.End(xlDown).offset(1, 0).Select
End If
End If
calculate
doevents
End Sub
Servir !
"a priori" ça ne fonctionne pas ;-(
J'ai fait un essai en mettant les messages "Liste Ok" et "A Trier" dans
une cellule ("AW3")
(qui se change bien en "Liste Ok" après un tri effectué à partir du bouton
(98) ; mais le texte ne se modifie pas sur le bouton !
If Range("D6") = " >>>" Then
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = Range("AW3")
Range("D6").Select '(j'ai mis ça pour désélectionner le bouton
!)
Else
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = Range("AW3")
Range("D6").Select
End If
Je suis un peu perplexe !
JPPhilippe.R
"j-pascal" a écrit dans le message de
news:e%23$Re Philippe,
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de news:Re j-pascal,
2 questions encore :
le tri se fait bien dans la feuille qui contiens le Private Sub
Worksheet_Change(ByVal Target As Range) ?
Oui, mais le code du Tri est dans un module "normal" (pas dans le module
de Feuil)où se trouve l'instruction de passage à "" de D6 ?
La cellule D6 = SI(SOMME(PlageTestTri)=0;"";" >>>") (le bouton se
trouve dans la cellule E6 et en fonction du résultat, j'ai une mise en
forme conditionnelle qui met le motif de la cellule en rouge ce qui
"invite" l'utilisateur à Trier !)
PlageTestTri contient une formule qui teste la colonne de Noms. Si le
nom du dessus est ">" à celui de la ligne testée, la formule renvoit un
"1". Si le contenu de la colonne est supérieur à 0 cela signifie que la
plage doit être triée.
Je sais, c'est un peu tordu, mais ça marche bien (sans recours à une
macro) ;-)Essaie toujours de glisser l'instruction "doevents" en fin de sub ;
comme ceci :
Selection.End(xlDown).offset(1, 0).Select
End If
End If
doevents
End Sub
histoire de forcer l'exécution du code évenementiel.
Désolé, ça ne fonctionne pas ;-(
JP--
Philippe.R
"j-pascal" a écrit dans le message de
news:Bonjour Philippe,
Désolé, j'avais mis le code sur un autre fil (2 sujets liés), voici le
code en question :
'-------------(début code Tri) ----------------------------
Sub TriPlageAtrier()
If Range("AX6") = "DOUBLON" Then
MsgBox "Veuillez éliminer le(s) doublon(s) avant d'effectuer le
tri
!"
Exit Sub
Else
If Range("AW6") <> "TRI" Then
MsgBox "La liste est déjà triée !"
Exit Sub
Else
Range("PlageAtrier").Select 'B422:AZ801
Selection.Sort Key1:=Range("C9"), Order1:=xlAscending,
Header:=xlGuess _
, OrderCustom:=1, MatchCase:úlse,
Orientation:=xlTopToBottom,
_
DataOption1:=xlSortNormal
Range("C9").Select
Selection.End(xlDown).offset(1, 0).Select
End If
End If
End Sub
'----------------------(fin code Tri)---------------------------
@+ ?
JP
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de
news:Bonjour,
Voici ce que je lit comme instructions dans le code que tu fournis :Private Sub Worksheet_Change(ByVal Target As Range)
'Lorsque un contenu change dans une cellule quelconque de la feuilleIf Range("D6") = " >>>" Then '2
espaces
Si la cellule D6 contient la chaîne " >>>"ActiveSheet.Shapes("Button 98").Select
sélectionne le bouton n°98Selection.Characters.Text = "TRIER ici"
inscrit sur ce bouton le texte "TRIER ici"Range("D6").Select
sélectionne la cellule D6Else
sinonActiveSheet.Shapes("Button 98").Select
sélectionne le bouton n°98Selection.Characters.Text = "Liste Ok"
inscrit sur ce bouton le texte "Liste Ok"Range("D6").Select
sélectionne la cellule D6End If
End Sub
A aucun moment l'instruction de tri ne figure, d'où ma question car
je suppose qu'une macro est affectée au bouton.
--
Philippe.R
"j-pascal" a écrit dans le message de
news:ue5f$Bonjour Philippe,
Le tri s'effectue si la cellule "D6" comprend le signe " >>>"
(situé juste à gauche du bouton de TRI) ... :
--------------------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("D6") = " >>>" Then '2
espaces
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "TRIER ici"
Range("D6").Select
Else
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "Liste Ok"
Range("D6").Select
End If
End Sub
----------------------------------------------------------------
JP
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de
news: %Bonsoir j-pascal,
Comment ton bouton lance t il le tri, je ne vois aucune instruction
correspondant dns le code fourni ?
En revanche, actuellemnt, le chnagement d'intitulé de ton bouton
est lié à un changement de valeur dans la feuille
--
Philippe.R
"j-pascal" a écrit dans le message de
news:%Bonsoir,
Si j'effectue un tri en appuyant sur le bouton 98 car la valeur de
D6 = "", le tri s'effectue et donc la valeur de D6 passe à "", mais
le texte
"TRIER ici" reste sur le bouton alors que je devrais avoir "Liste
Ok" !
"Liste Ok" s'affiche bien si j'effectue une saisie dans ma liste
...
Voici le code :
--------------------------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("D6") = " >>>" Then '2 espaces
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "TRIER ici"
Range("D6").Select
Else
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "Liste Ok"
Range("D6").Select
End If
End Sub
--------------------------------------------------------------------
Merci d'avance pour vos lumières ...
--
Cordialement @+
JP
Bonsoir,
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de news:
%23Iid3iG0HHA.1204@TK2MSFTNGP03.phx.gbl...
Re,
Je vois, du moins je l'espère ;o))
Puisqu'il s'agit du résultat d'un calcul, tente d'ajouter encore
l'instruction calculate avant le doevents
Selection.End(xlDown).offset(1, 0).Select
End If
End If
calculate
doevents
End Sub
Servir !
"a priori" ça ne fonctionne pas ;-(
J'ai fait un essai en mettant les messages "Liste Ok" et "A Trier" dans
une cellule ("AW3")
(qui se change bien en "Liste Ok" après un tri effectué à partir du bouton
(98) ; mais le texte ne se modifie pas sur le bouton !
If Range("D6") = " >>>" Then
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = Range("AW3")
Range("D6").Select '(j'ai mis ça pour désélectionner le bouton
!)
Else
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = Range("AW3")
Range("D6").Select
End If
Je suis un peu perplexe !
JP
Philippe.R
"j-pascal" <nospam-j-pascal@free.fr> a écrit dans le message de
news:e%23$SN1D0HHA.2484@TK2MSFTNGP06.phx.gbl...
Re Philippe,
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de news:
eN6ydoC0HHA.3916@TK2MSFTNGP02.phx.gbl...
Re j-pascal,
2 questions encore :
le tri se fait bien dans la feuille qui contiens le Private Sub
Worksheet_Change(ByVal Target As Range) ?
Oui, mais le code du Tri est dans un module "normal" (pas dans le module
de Feuil)
où se trouve l'instruction de passage à "" de D6 ?
La cellule D6 = SI(SOMME(PlageTestTri)=0;"";" >>>") (le bouton se
trouve dans la cellule E6 et en fonction du résultat, j'ai une mise en
forme conditionnelle qui met le motif de la cellule en rouge ce qui
"invite" l'utilisateur à Trier !)
PlageTestTri contient une formule qui teste la colonne de Noms. Si le
nom du dessus est ">" à celui de la ligne testée, la formule renvoit un
"1". Si le contenu de la colonne est supérieur à 0 cela signifie que la
plage doit être triée.
Je sais, c'est un peu tordu, mais ça marche bien (sans recours à une
macro) ;-)
Essaie toujours de glisser l'instruction "doevents" en fin de sub ;
comme ceci :
Selection.End(xlDown).offset(1, 0).Select
End If
End If
doevents
End Sub
histoire de forcer l'exécution du code évenementiel.
Désolé, ça ne fonctionne pas ;-(
JP
--
Philippe.R
"j-pascal" <nospam-j-pascal@free.fr> a écrit dans le message de
news:O7KcqAC0HHA.5764@TK2MSFTNGP03.phx.gbl...
Bonjour Philippe,
Désolé, j'avais mis le code sur un autre fil (2 sujets liés), voici le
code en question :
'-------------(début code Tri) ----------------------------
Sub TriPlageAtrier()
If Range("AX6") = "DOUBLON" Then
MsgBox "Veuillez éliminer le(s) doublon(s) avant d'effectuer le
tri
!"
Exit Sub
Else
If Range("AW6") <> "TRI" Then
MsgBox "La liste est déjà triée !"
Exit Sub
Else
Range("PlageAtrier").Select 'B422:AZ801
Selection.Sort Key1:=Range("C9"), Order1:=xlAscending,
Header:=xlGuess _
, OrderCustom:=1, MatchCase:úlse,
Orientation:=xlTopToBottom,
_
DataOption1:=xlSortNormal
Range("C9").Select
Selection.End(xlDown).offset(1, 0).Select
End If
End If
End Sub
'----------------------(fin code Tri)---------------------------
@+ ?
JP
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de
news: e4zTo8A0HHA.600@TK2MSFTNGP05.phx.gbl...
Bonjour,
Voici ce que je lit comme instructions dans le code que tu fournis :
Private Sub Worksheet_Change(ByVal Target As Range)
'Lorsque un contenu change dans une cellule quelconque de la feuille
If Range("D6") = " >>>" Then '2
espaces
Si la cellule D6 contient la chaîne " >>>"
ActiveSheet.Shapes("Button 98").Select
sélectionne le bouton n°98
Selection.Characters.Text = "TRIER ici"
inscrit sur ce bouton le texte "TRIER ici"
Range("D6").Select
sélectionne la cellule D6
Else
sinon
ActiveSheet.Shapes("Button 98").Select
sélectionne le bouton n°98
Selection.Characters.Text = "Liste Ok"
inscrit sur ce bouton le texte "Liste Ok"
Range("D6").Select
sélectionne la cellule D6
End If
End Sub
A aucun moment l'instruction de tri ne figure, d'où ma question car
je suppose qu'une macro est affectée au bouton.
--
Philippe.R
"j-pascal" <nospam-j-pascal@free.fr> a écrit dans le message de
news:ue5f$UozHHA.3940@TK2MSFTNGP05.phx.gbl...
Bonjour Philippe,
Le tri s'effectue si la cellule "D6" comprend le signe " >>>"
(situé juste à gauche du bouton de TRI) ... :
--------------------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("D6") = " >>>" Then '2
espaces
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "TRIER ici"
Range("D6").Select
Else
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "Liste Ok"
Range("D6").Select
End If
End Sub
----------------------------------------------------------------
JP
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de
news: %23HgqH9izHHA.2484@TK2MSFTNGP06.phx.gbl...
Bonsoir j-pascal,
Comment ton bouton lance t il le tri, je ne vois aucune instruction
correspondant dns le code fourni ?
En revanche, actuellemnt, le chnagement d'intitulé de ton bouton
est lié à un changement de valeur dans la feuille
--
Philippe.R
"j-pascal" <nospam-j-pascal@free.fr> a écrit dans le message de
news:%23yxcg2izHHA.5772@TK2MSFTNGP02.phx.gbl...
Bonsoir,
Si j'effectue un tri en appuyant sur le bouton 98 car la valeur de
D6 = "
", le tri s'effectue et donc la valeur de D6 passe à "", mais
le texte
"TRIER ici" reste sur le bouton alors que je devrais avoir "Liste
Ok" !
"Liste Ok" s'affiche bien si j'effectue une saisie dans ma liste
...
Voici le code :
--------------------------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("D6") = " >>>" Then '2 espaces
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "TRIER ici"
Range("D6").Select
Else
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "Liste Ok"
Range("D6").Select
End If
End Sub
--------------------------------------------------------------------
Merci d'avance pour vos lumières ...
--
Cordialement @+
JP
Bonsoir,
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de news:
%Re,
Je vois, du moins je l'espère ;o))
Puisqu'il s'agit du résultat d'un calcul, tente d'ajouter encore
l'instruction calculate avant le doevents
Selection.End(xlDown).offset(1, 0).Select
End If
End If
calculate
doevents
End Sub
Servir !
"a priori" ça ne fonctionne pas ;-(
J'ai fait un essai en mettant les messages "Liste Ok" et "A Trier" dans
une cellule ("AW3")
(qui se change bien en "Liste Ok" après un tri effectué à partir du bouton
(98) ; mais le texte ne se modifie pas sur le bouton !
If Range("D6") = " >>>" Then
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = Range("AW3")
Range("D6").Select '(j'ai mis ça pour désélectionner le bouton
!)
Else
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = Range("AW3")
Range("D6").Select
End If
Je suis un peu perplexe !
JPPhilippe.R
"j-pascal" a écrit dans le message de
news:e%23$Re Philippe,
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de news:Re j-pascal,
2 questions encore :
le tri se fait bien dans la feuille qui contiens le Private Sub
Worksheet_Change(ByVal Target As Range) ?
Oui, mais le code du Tri est dans un module "normal" (pas dans le module
de Feuil)où se trouve l'instruction de passage à "" de D6 ?
La cellule D6 = SI(SOMME(PlageTestTri)=0;"";" >>>") (le bouton se
trouve dans la cellule E6 et en fonction du résultat, j'ai une mise en
forme conditionnelle qui met le motif de la cellule en rouge ce qui
"invite" l'utilisateur à Trier !)
PlageTestTri contient une formule qui teste la colonne de Noms. Si le
nom du dessus est ">" à celui de la ligne testée, la formule renvoit un
"1". Si le contenu de la colonne est supérieur à 0 cela signifie que la
plage doit être triée.
Je sais, c'est un peu tordu, mais ça marche bien (sans recours à une
macro) ;-)Essaie toujours de glisser l'instruction "doevents" en fin de sub ;
comme ceci :
Selection.End(xlDown).offset(1, 0).Select
End If
End If
doevents
End Sub
histoire de forcer l'exécution du code évenementiel.
Désolé, ça ne fonctionne pas ;-(
JP--
Philippe.R
"j-pascal" a écrit dans le message de
news:Bonjour Philippe,
Désolé, j'avais mis le code sur un autre fil (2 sujets liés), voici le
code en question :
'-------------(début code Tri) ----------------------------
Sub TriPlageAtrier()
If Range("AX6") = "DOUBLON" Then
MsgBox "Veuillez éliminer le(s) doublon(s) avant d'effectuer le
tri
!"
Exit Sub
Else
If Range("AW6") <> "TRI" Then
MsgBox "La liste est déjà triée !"
Exit Sub
Else
Range("PlageAtrier").Select 'B422:AZ801
Selection.Sort Key1:=Range("C9"), Order1:=xlAscending,
Header:=xlGuess _
, OrderCustom:=1, MatchCase:úlse,
Orientation:=xlTopToBottom,
_
DataOption1:=xlSortNormal
Range("C9").Select
Selection.End(xlDown).offset(1, 0).Select
End If
End If
End Sub
'----------------------(fin code Tri)---------------------------
@+ ?
JP
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de
news:Bonjour,
Voici ce que je lit comme instructions dans le code que tu fournis :Private Sub Worksheet_Change(ByVal Target As Range)
'Lorsque un contenu change dans une cellule quelconque de la feuilleIf Range("D6") = " >>>" Then '2
espaces
Si la cellule D6 contient la chaîne " >>>"ActiveSheet.Shapes("Button 98").Select
sélectionne le bouton n°98Selection.Characters.Text = "TRIER ici"
inscrit sur ce bouton le texte "TRIER ici"Range("D6").Select
sélectionne la cellule D6Else
sinonActiveSheet.Shapes("Button 98").Select
sélectionne le bouton n°98Selection.Characters.Text = "Liste Ok"
inscrit sur ce bouton le texte "Liste Ok"Range("D6").Select
sélectionne la cellule D6End If
End Sub
A aucun moment l'instruction de tri ne figure, d'où ma question car
je suppose qu'une macro est affectée au bouton.
--
Philippe.R
"j-pascal" a écrit dans le message de
news:ue5f$Bonjour Philippe,
Le tri s'effectue si la cellule "D6" comprend le signe " >>>"
(situé juste à gauche du bouton de TRI) ... :
--------------------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("D6") = " >>>" Then '2
espaces
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "TRIER ici"
Range("D6").Select
Else
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "Liste Ok"
Range("D6").Select
End If
End Sub
----------------------------------------------------------------
JP
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de
news: %Bonsoir j-pascal,
Comment ton bouton lance t il le tri, je ne vois aucune instruction
correspondant dns le code fourni ?
En revanche, actuellemnt, le chnagement d'intitulé de ton bouton
est lié à un changement de valeur dans la feuille
--
Philippe.R
"j-pascal" a écrit dans le message de
news:%Bonsoir,
Si j'effectue un tri en appuyant sur le bouton 98 car la valeur de
D6 = "", le tri s'effectue et donc la valeur de D6 passe à "", mais
le texte
"TRIER ici" reste sur le bouton alors que je devrais avoir "Liste
Ok" !
"Liste Ok" s'affiche bien si j'effectue une saisie dans ma liste
...
Voici le code :
--------------------------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("D6") = " >>>" Then '2 espaces
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "TRIER ici"
Range("D6").Select
Else
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "Liste Ok"
Range("D6").Select
End If
End Sub
--------------------------------------------------------------------
Merci d'avance pour vos lumières ...
--
Cordialement @+
JP
Bonjour j-pascal,
En relisant le fil, et les messages de LSteph, il serait bon de remplacer
doevents par application.enableevents=true en fin de procédure de tri :
Selection.End(xlDown).offset(1, 0).Select
End If
End If
application.enableevents=true
calculate
End Sub
Et dans le code de la feuille, la condition étant évaluée en AW3 dont on
récupère la valeur dans le texte du bouton, ceci devrait suffir :
Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = Range("AW3").value
Range("D6").Select '(j'ai mis ça pour désélectionner le bouton !)
End Sub
avec un .value derrière la référence du range bien que ce soit la
propriété par défaut
--
Philippe.R
"j-pascal" a écrit dans le message de
news:Bonsoir,
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de news:
%Re,
Je vois, du moins je l'espère ;o))
Puisqu'il s'agit du résultat d'un calcul, tente d'ajouter encore
l'instruction calculate avant le doevents
Selection.End(xlDown).offset(1, 0).Select
End If
End If
calculate
doevents
End Sub
Servir !
"a priori" ça ne fonctionne pas ;-(
J'ai fait un essai en mettant les messages "Liste Ok" et "A Trier" dans
une cellule ("AW3")
(qui se change bien en "Liste Ok" après un tri effectué à partir du
bouton (98) ; mais le texte ne se modifie pas sur le bouton !
If Range("D6") = " >>>" Then
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = Range("AW3")
Range("D6").Select '(j'ai mis ça pour désélectionner le bouton
!)
Else
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = Range("AW3")
Range("D6").Select
End If
Je suis un peu perplexe !
JPPhilippe.R
"j-pascal" a écrit dans le message de
news:e%23$Re Philippe,
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de
news:Re j-pascal,
2 questions encore :
le tri se fait bien dans la feuille qui contiens le Private Sub
Worksheet_Change(ByVal Target As Range) ?
Oui, mais le code du Tri est dans un module "normal" (pas dans le
module de Feuil)où se trouve l'instruction de passage à "" de D6 ?
La cellule D6 = SI(SOMME(PlageTestTri)=0;"";" >>>") (le bouton se
trouve dans la cellule E6 et en fonction du résultat, j'ai une mise en
forme conditionnelle qui met le motif de la cellule en rouge ce qui
"invite" l'utilisateur à Trier !)
PlageTestTri contient une formule qui teste la colonne de Noms. Si le
nom du dessus est ">" à celui de la ligne testée, la formule renvoit un
"1". Si le contenu de la colonne est supérieur à 0 cela signifie que la
plage doit être triée.
Je sais, c'est un peu tordu, mais ça marche bien (sans recours à une
macro) ;-)Essaie toujours de glisser l'instruction "doevents" en fin de sub ;
comme ceci :
Selection.End(xlDown).offset(1, 0).Select
End If
End If
doevents
End Sub
histoire de forcer l'exécution du code évenementiel.
Désolé, ça ne fonctionne pas ;-(
JP--
Philippe.R
"j-pascal" a écrit dans le message de
news:Bonjour Philippe,
Désolé, j'avais mis le code sur un autre fil (2 sujets liés), voici
le code en question :
'-------------(début code Tri) ----------------------------
Sub TriPlageAtrier()
If Range("AX6") = "DOUBLON" Then
MsgBox "Veuillez éliminer le(s) doublon(s) avant d'effectuer
le tri
!"
Exit Sub
Else
If Range("AW6") <> "TRI" Then
MsgBox "La liste est déjà triée !"
Exit Sub
Else
Range("PlageAtrier").Select 'B422:AZ801
Selection.Sort Key1:=Range("C9"), Order1:=xlAscending,
Header:=xlGuess _
, OrderCustom:=1, MatchCase:úlse,
Orientation:=xlTopToBottom,
_
DataOption1:=xlSortNormal
Range("C9").Select
Selection.End(xlDown).offset(1, 0).Select
End If
End If
End Sub
'----------------------(fin code Tri)---------------------------
@+ ?
JP
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de
news:Bonjour,
Voici ce que je lit comme instructions dans le code que tu fournis :Private Sub Worksheet_Change(ByVal Target As Range)
'Lorsque un contenu change dans une cellule quelconque de la feuilleIf Range("D6") = " >>>" Then '2
espaces
Si la cellule D6 contient la chaîne " >>>"ActiveSheet.Shapes("Button 98").Select
sélectionne le bouton n°98Selection.Characters.Text = "TRIER ici"
inscrit sur ce bouton le texte "TRIER ici"Range("D6").Select
sélectionne la cellule D6Else
sinonActiveSheet.Shapes("Button 98").Select
sélectionne le bouton n°98Selection.Characters.Text = "Liste Ok"
inscrit sur ce bouton le texte "Liste Ok"Range("D6").Select
sélectionne la cellule D6End If
End Sub
A aucun moment l'instruction de tri ne figure, d'où ma question car
je suppose qu'une macro est affectée au bouton.
--
Philippe.R
"j-pascal" a écrit dans le message de
news:ue5f$Bonjour Philippe,
Le tri s'effectue si la cellule "D6" comprend le signe " >>>"
(situé juste à gauche du bouton de TRI) ... :
--------------------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("D6") = " >>>" Then '2
espaces
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "TRIER ici"
Range("D6").Select
Else
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "Liste Ok"
Range("D6").Select
End If
End Sub
----------------------------------------------------------------
JP
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de
news: %Bonsoir j-pascal,
Comment ton bouton lance t il le tri, je ne vois aucune
instruction correspondant dns le code fourni ?
En revanche, actuellemnt, le chnagement d'intitulé de ton bouton
est lié à un changement de valeur dans la feuille
--
Philippe.R
"j-pascal" a écrit dans le message de
news:%Bonsoir,
Si j'effectue un tri en appuyant sur le bouton 98 car la valeur
de D6 = "", le tri s'effectue et donc la valeur de D6 passe à "", mais
le texte
"TRIER ici" reste sur le bouton alors que je devrais avoir "Liste
Ok" !
"Liste Ok" s'affiche bien si j'effectue une saisie dans ma liste
...
Voici le code :
--------------------------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("D6") = " >>>" Then '2 espaces
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "TRIER ici"
Range("D6").Select
Else
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "Liste Ok"
Range("D6").Select
End If
End Sub
--------------------------------------------------------------------
Merci d'avance pour vos lumières ...
--
Cordialement @+
JP
Bonjour j-pascal,
En relisant le fil, et les messages de LSteph, il serait bon de remplacer
doevents par application.enableevents=true en fin de procédure de tri :
Selection.End(xlDown).offset(1, 0).Select
End If
End If
application.enableevents=true
calculate
End Sub
Et dans le code de la feuille, la condition étant évaluée en AW3 dont on
récupère la valeur dans le texte du bouton, ceci devrait suffir :
Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = Range("AW3").value
Range("D6").Select '(j'ai mis ça pour désélectionner le bouton !)
End Sub
avec un .value derrière la référence du range bien que ce soit la
propriété par défaut
--
Philippe.R
"j-pascal" <nospam-j-pascal@free.fr> a écrit dans le message de
news:eWehCyJ0HHA.3536@TK2MSFTNGP06.phx.gbl...
Bonsoir,
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de news:
%23Iid3iG0HHA.1204@TK2MSFTNGP03.phx.gbl...
Re,
Je vois, du moins je l'espère ;o))
Puisqu'il s'agit du résultat d'un calcul, tente d'ajouter encore
l'instruction calculate avant le doevents
Selection.End(xlDown).offset(1, 0).Select
End If
End If
calculate
doevents
End Sub
Servir !
"a priori" ça ne fonctionne pas ;-(
J'ai fait un essai en mettant les messages "Liste Ok" et "A Trier" dans
une cellule ("AW3")
(qui se change bien en "Liste Ok" après un tri effectué à partir du
bouton (98) ; mais le texte ne se modifie pas sur le bouton !
If Range("D6") = " >>>" Then
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = Range("AW3")
Range("D6").Select '(j'ai mis ça pour désélectionner le bouton
!)
Else
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = Range("AW3")
Range("D6").Select
End If
Je suis un peu perplexe !
JP
Philippe.R
"j-pascal" <nospam-j-pascal@free.fr> a écrit dans le message de
news:e%23$SN1D0HHA.2484@TK2MSFTNGP06.phx.gbl...
Re Philippe,
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de
news: eN6ydoC0HHA.3916@TK2MSFTNGP02.phx.gbl...
Re j-pascal,
2 questions encore :
le tri se fait bien dans la feuille qui contiens le Private Sub
Worksheet_Change(ByVal Target As Range) ?
Oui, mais le code du Tri est dans un module "normal" (pas dans le
module de Feuil)
où se trouve l'instruction de passage à "" de D6 ?
La cellule D6 = SI(SOMME(PlageTestTri)=0;"";" >>>") (le bouton se
trouve dans la cellule E6 et en fonction du résultat, j'ai une mise en
forme conditionnelle qui met le motif de la cellule en rouge ce qui
"invite" l'utilisateur à Trier !)
PlageTestTri contient une formule qui teste la colonne de Noms. Si le
nom du dessus est ">" à celui de la ligne testée, la formule renvoit un
"1". Si le contenu de la colonne est supérieur à 0 cela signifie que la
plage doit être triée.
Je sais, c'est un peu tordu, mais ça marche bien (sans recours à une
macro) ;-)
Essaie toujours de glisser l'instruction "doevents" en fin de sub ;
comme ceci :
Selection.End(xlDown).offset(1, 0).Select
End If
End If
doevents
End Sub
histoire de forcer l'exécution du code évenementiel.
Désolé, ça ne fonctionne pas ;-(
JP
--
Philippe.R
"j-pascal" <nospam-j-pascal@free.fr> a écrit dans le message de
news:O7KcqAC0HHA.5764@TK2MSFTNGP03.phx.gbl...
Bonjour Philippe,
Désolé, j'avais mis le code sur un autre fil (2 sujets liés), voici
le code en question :
'-------------(début code Tri) ----------------------------
Sub TriPlageAtrier()
If Range("AX6") = "DOUBLON" Then
MsgBox "Veuillez éliminer le(s) doublon(s) avant d'effectuer
le tri
!"
Exit Sub
Else
If Range("AW6") <> "TRI" Then
MsgBox "La liste est déjà triée !"
Exit Sub
Else
Range("PlageAtrier").Select 'B422:AZ801
Selection.Sort Key1:=Range("C9"), Order1:=xlAscending,
Header:=xlGuess _
, OrderCustom:=1, MatchCase:úlse,
Orientation:=xlTopToBottom,
_
DataOption1:=xlSortNormal
Range("C9").Select
Selection.End(xlDown).offset(1, 0).Select
End If
End If
End Sub
'----------------------(fin code Tri)---------------------------
@+ ?
JP
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de
news: e4zTo8A0HHA.600@TK2MSFTNGP05.phx.gbl...
Bonjour,
Voici ce que je lit comme instructions dans le code que tu fournis :
Private Sub Worksheet_Change(ByVal Target As Range)
'Lorsque un contenu change dans une cellule quelconque de la feuille
If Range("D6") = " >>>" Then '2
espaces
Si la cellule D6 contient la chaîne " >>>"
ActiveSheet.Shapes("Button 98").Select
sélectionne le bouton n°98
Selection.Characters.Text = "TRIER ici"
inscrit sur ce bouton le texte "TRIER ici"
Range("D6").Select
sélectionne la cellule D6
Else
sinon
ActiveSheet.Shapes("Button 98").Select
sélectionne le bouton n°98
Selection.Characters.Text = "Liste Ok"
inscrit sur ce bouton le texte "Liste Ok"
Range("D6").Select
sélectionne la cellule D6
End If
End Sub
A aucun moment l'instruction de tri ne figure, d'où ma question car
je suppose qu'une macro est affectée au bouton.
--
Philippe.R
"j-pascal" <nospam-j-pascal@free.fr> a écrit dans le message de
news:ue5f$UozHHA.3940@TK2MSFTNGP05.phx.gbl...
Bonjour Philippe,
Le tri s'effectue si la cellule "D6" comprend le signe " >>>"
(situé juste à gauche du bouton de TRI) ... :
--------------------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("D6") = " >>>" Then '2
espaces
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "TRIER ici"
Range("D6").Select
Else
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "Liste Ok"
Range("D6").Select
End If
End Sub
----------------------------------------------------------------
JP
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de
news: %23HgqH9izHHA.2484@TK2MSFTNGP06.phx.gbl...
Bonsoir j-pascal,
Comment ton bouton lance t il le tri, je ne vois aucune
instruction correspondant dns le code fourni ?
En revanche, actuellemnt, le chnagement d'intitulé de ton bouton
est lié à un changement de valeur dans la feuille
--
Philippe.R
"j-pascal" <nospam-j-pascal@free.fr> a écrit dans le message de
news:%23yxcg2izHHA.5772@TK2MSFTNGP02.phx.gbl...
Bonsoir,
Si j'effectue un tri en appuyant sur le bouton 98 car la valeur
de D6 = "
", le tri s'effectue et donc la valeur de D6 passe à "", mais
le texte
"TRIER ici" reste sur le bouton alors que je devrais avoir "Liste
Ok" !
"Liste Ok" s'affiche bien si j'effectue une saisie dans ma liste
...
Voici le code :
--------------------------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("D6") = " >>>" Then '2 espaces
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "TRIER ici"
Range("D6").Select
Else
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "Liste Ok"
Range("D6").Select
End If
End Sub
--------------------------------------------------------------------
Merci d'avance pour vos lumières ...
--
Cordialement @+
JP
Bonjour j-pascal,
En relisant le fil, et les messages de LSteph, il serait bon de remplacer
doevents par application.enableevents=true en fin de procédure de tri :
Selection.End(xlDown).offset(1, 0).Select
End If
End If
application.enableevents=true
calculate
End Sub
Et dans le code de la feuille, la condition étant évaluée en AW3 dont on
récupère la valeur dans le texte du bouton, ceci devrait suffir :
Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = Range("AW3").value
Range("D6").Select '(j'ai mis ça pour désélectionner le bouton !)
End Sub
avec un .value derrière la référence du range bien que ce soit la
propriété par défaut
--
Philippe.R
"j-pascal" a écrit dans le message de
news:Bonsoir,
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de news:
%Re,
Je vois, du moins je l'espère ;o))
Puisqu'il s'agit du résultat d'un calcul, tente d'ajouter encore
l'instruction calculate avant le doevents
Selection.End(xlDown).offset(1, 0).Select
End If
End If
calculate
doevents
End Sub
Servir !
"a priori" ça ne fonctionne pas ;-(
J'ai fait un essai en mettant les messages "Liste Ok" et "A Trier" dans
une cellule ("AW3")
(qui se change bien en "Liste Ok" après un tri effectué à partir du
bouton (98) ; mais le texte ne se modifie pas sur le bouton !
If Range("D6") = " >>>" Then
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = Range("AW3")
Range("D6").Select '(j'ai mis ça pour désélectionner le bouton
!)
Else
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = Range("AW3")
Range("D6").Select
End If
Je suis un peu perplexe !
JPPhilippe.R
"j-pascal" a écrit dans le message de
news:e%23$Re Philippe,
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de
news:Re j-pascal,
2 questions encore :
le tri se fait bien dans la feuille qui contiens le Private Sub
Worksheet_Change(ByVal Target As Range) ?
Oui, mais le code du Tri est dans un module "normal" (pas dans le
module de Feuil)où se trouve l'instruction de passage à "" de D6 ?
La cellule D6 = SI(SOMME(PlageTestTri)=0;"";" >>>") (le bouton se
trouve dans la cellule E6 et en fonction du résultat, j'ai une mise en
forme conditionnelle qui met le motif de la cellule en rouge ce qui
"invite" l'utilisateur à Trier !)
PlageTestTri contient une formule qui teste la colonne de Noms. Si le
nom du dessus est ">" à celui de la ligne testée, la formule renvoit un
"1". Si le contenu de la colonne est supérieur à 0 cela signifie que la
plage doit être triée.
Je sais, c'est un peu tordu, mais ça marche bien (sans recours à une
macro) ;-)Essaie toujours de glisser l'instruction "doevents" en fin de sub ;
comme ceci :
Selection.End(xlDown).offset(1, 0).Select
End If
End If
doevents
End Sub
histoire de forcer l'exécution du code évenementiel.
Désolé, ça ne fonctionne pas ;-(
JP--
Philippe.R
"j-pascal" a écrit dans le message de
news:Bonjour Philippe,
Désolé, j'avais mis le code sur un autre fil (2 sujets liés), voici
le code en question :
'-------------(début code Tri) ----------------------------
Sub TriPlageAtrier()
If Range("AX6") = "DOUBLON" Then
MsgBox "Veuillez éliminer le(s) doublon(s) avant d'effectuer
le tri
!"
Exit Sub
Else
If Range("AW6") <> "TRI" Then
MsgBox "La liste est déjà triée !"
Exit Sub
Else
Range("PlageAtrier").Select 'B422:AZ801
Selection.Sort Key1:=Range("C9"), Order1:=xlAscending,
Header:=xlGuess _
, OrderCustom:=1, MatchCase:úlse,
Orientation:=xlTopToBottom,
_
DataOption1:=xlSortNormal
Range("C9").Select
Selection.End(xlDown).offset(1, 0).Select
End If
End If
End Sub
'----------------------(fin code Tri)---------------------------
@+ ?
JP
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de
news:Bonjour,
Voici ce que je lit comme instructions dans le code que tu fournis :Private Sub Worksheet_Change(ByVal Target As Range)
'Lorsque un contenu change dans une cellule quelconque de la feuilleIf Range("D6") = " >>>" Then '2
espaces
Si la cellule D6 contient la chaîne " >>>"ActiveSheet.Shapes("Button 98").Select
sélectionne le bouton n°98Selection.Characters.Text = "TRIER ici"
inscrit sur ce bouton le texte "TRIER ici"Range("D6").Select
sélectionne la cellule D6Else
sinonActiveSheet.Shapes("Button 98").Select
sélectionne le bouton n°98Selection.Characters.Text = "Liste Ok"
inscrit sur ce bouton le texte "Liste Ok"Range("D6").Select
sélectionne la cellule D6End If
End Sub
A aucun moment l'instruction de tri ne figure, d'où ma question car
je suppose qu'une macro est affectée au bouton.
--
Philippe.R
"j-pascal" a écrit dans le message de
news:ue5f$Bonjour Philippe,
Le tri s'effectue si la cellule "D6" comprend le signe " >>>"
(situé juste à gauche du bouton de TRI) ... :
--------------------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("D6") = " >>>" Then '2
espaces
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "TRIER ici"
Range("D6").Select
Else
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "Liste Ok"
Range("D6").Select
End If
End Sub
----------------------------------------------------------------
JP
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de
news: %Bonsoir j-pascal,
Comment ton bouton lance t il le tri, je ne vois aucune
instruction correspondant dns le code fourni ?
En revanche, actuellemnt, le chnagement d'intitulé de ton bouton
est lié à un changement de valeur dans la feuille
--
Philippe.R
"j-pascal" a écrit dans le message de
news:%Bonsoir,
Si j'effectue un tri en appuyant sur le bouton 98 car la valeur
de D6 = "", le tri s'effectue et donc la valeur de D6 passe à "", mais
le texte
"TRIER ici" reste sur le bouton alors que je devrais avoir "Liste
Ok" !
"Liste Ok" s'affiche bien si j'effectue une saisie dans ma liste
...
Voici le code :
--------------------------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("D6") = " >>>" Then '2 espaces
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "TRIER ici"
Range("D6").Select
Else
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "Liste Ok"
Range("D6").Select
End If
End Sub
--------------------------------------------------------------------
Merci d'avance pour vos lumières ...
--
Cordialement @+
JP
Quelle persévérance !!
J'aime pas qu'on me résiste ;o)))))
Bonjour Philippe,
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de news:
%Bonjour j-pascal,
En relisant le fil, et les messages de LSteph, il serait bon de remplacer
doevents par application.enableevents=true en fin de procédure de tri :
Selection.End(xlDown).offset(1, 0).Select
End If
End If
application.enableevents=true
calculate
End Sub
Malheureusement, ça ne règle pas le pb. La seule chose qui fasse passer
l'affichage à "Liste Ok" , c'est une saisie dans la feuille (y compris pas
sélection via menu déroulant).Et dans le code de la feuille, la condition étant évaluée en AW3 dont on
récupère la valeur dans le texte du bouton, ceci devrait suffir :
Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = Range("AW3").value
Range("D6").Select '(j'ai mis ça pour désélectionner le bouton !)
End Sub
avec un .value derrière la référence du range bien que ce soit la
propriété par défaut
J'ai testé ; cela fonctionne effectivement très bien.
Pour revenir à mon "pb" initial (car de mon côté, je continue de
chercher...) : quand on a une "Private Sub Worksheet_Change", qu'est ce
qui se passe "concrétement" lorsqu'on saisie une valeur dans la feuille ?
Autrement dit, à partir de quel "état" cette procédure est-elle activée ?
JP--
Philippe.R
"j-pascal" a écrit dans le message de
news:Bonsoir,
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de news:
%Re,
Je vois, du moins je l'espère ;o))
Puisqu'il s'agit du résultat d'un calcul, tente d'ajouter encore
l'instruction calculate avant le doevents
Selection.End(xlDown).offset(1, 0).Select
End If
End If
calculate
doevents
End Sub
Servir !
"a priori" ça ne fonctionne pas ;-(
J'ai fait un essai en mettant les messages "Liste Ok" et "A Trier" dans
une cellule ("AW3")
(qui se change bien en "Liste Ok" après un tri effectué à partir du
bouton (98) ; mais le texte ne se modifie pas sur le bouton !
If Range("D6") = " >>>" Then
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = Range("AW3")
Range("D6").Select '(j'ai mis ça pour désélectionner le bouton
!)
Else
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = Range("AW3")
Range("D6").Select
End If
Je suis un peu perplexe !
JPPhilippe.R
"j-pascal" a écrit dans le message de
news:e%23$Re Philippe,
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de
news:Re j-pascal,
2 questions encore :
le tri se fait bien dans la feuille qui contiens le Private Sub
Worksheet_Change(ByVal Target As Range) ?
Oui, mais le code du Tri est dans un module "normal" (pas dans le
module de Feuil)où se trouve l'instruction de passage à "" de D6 ?
La cellule D6 = SI(SOMME(PlageTestTri)=0;"";" >>>") (le bouton se
trouve dans la cellule E6 et en fonction du résultat, j'ai une mise en
forme conditionnelle qui met le motif de la cellule en rouge ce qui
"invite" l'utilisateur à Trier !)
PlageTestTri contient une formule qui teste la colonne de Noms. Si le
nom du dessus est ">" à celui de la ligne testée, la formule renvoit
un "1". Si le contenu de la colonne est supérieur à 0 cela signifie
que la plage doit être triée.
Je sais, c'est un peu tordu, mais ça marche bien (sans recours à une
macro) ;-)Essaie toujours de glisser l'instruction "doevents" en fin de sub ;
comme ceci :
Selection.End(xlDown).offset(1, 0).Select
End If
End If
doevents
End Sub
histoire de forcer l'exécution du code évenementiel.
Désolé, ça ne fonctionne pas ;-(
JP--
Philippe.R
"j-pascal" a écrit dans le message de
news:Bonjour Philippe,
Désolé, j'avais mis le code sur un autre fil (2 sujets liés), voici
le code en question :
'-------------(début code Tri) ----------------------------
Sub TriPlageAtrier()
If Range("AX6") = "DOUBLON" Then
MsgBox "Veuillez éliminer le(s) doublon(s) avant d'effectuer
le tri
!"
Exit Sub
Else
If Range("AW6") <> "TRI" Then
MsgBox "La liste est déjà triée !"
Exit Sub
Else
Range("PlageAtrier").Select 'B422:AZ801
Selection.Sort Key1:=Range("C9"), Order1:=xlAscending,
Header:=xlGuess _
, OrderCustom:=1, MatchCase:úlse,
Orientation:=xlTopToBottom,
_
DataOption1:=xlSortNormal
Range("C9").Select
Selection.End(xlDown).offset(1, 0).Select
End If
End If
End Sub
'----------------------(fin code Tri)---------------------------
@+ ?
JP
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de
news:Bonjour,
Voici ce que je lit comme instructions dans le code que tu fournis
:Private Sub Worksheet_Change(ByVal Target As Range)
'Lorsque un contenu change dans une cellule quelconque de la
feuilleIf Range("D6") = " >>>" Then '2
espaces
Si la cellule D6 contient la chaîne " >>>"ActiveSheet.Shapes("Button 98").Select
sélectionne le bouton n°98Selection.Characters.Text = "TRIER ici"
inscrit sur ce bouton le texte "TRIER ici"Range("D6").Select
sélectionne la cellule D6Else
sinonActiveSheet.Shapes("Button 98").Select
sélectionne le bouton n°98Selection.Characters.Text = "Liste Ok"
inscrit sur ce bouton le texte "Liste Ok"Range("D6").Select
sélectionne la cellule D6End If
End Sub
A aucun moment l'instruction de tri ne figure, d'où ma question car
je suppose qu'une macro est affectée au bouton.
--
Philippe.R
"j-pascal" a écrit dans le message de
news:ue5f$Bonjour Philippe,
Le tri s'effectue si la cellule "D6" comprend le signe " >>>"
(situé juste à gauche du bouton de TRI) ... :
--------------------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("D6") = " >>>" Then '2
espaces
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "TRIER ici"
Range("D6").Select
Else
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "Liste Ok"
Range("D6").Select
End If
End Sub
----------------------------------------------------------------
JP
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de
news: %Bonsoir j-pascal,
Comment ton bouton lance t il le tri, je ne vois aucune
instruction correspondant dns le code fourni ?
En revanche, actuellemnt, le chnagement d'intitulé de ton bouton
est lié à un changement de valeur dans la feuille
--
Philippe.R
"j-pascal" a écrit dans le message de
news:%Bonsoir,
Si j'effectue un tri en appuyant sur le bouton 98 car la valeur
de D6 = "", le tri s'effectue et donc la valeur de D6 passe à "", mais
le texte
"TRIER ici" reste sur le bouton alors que je devrais avoir
"Liste Ok" !
"Liste Ok" s'affiche bien si j'effectue une saisie dans ma liste
...
Voici le code :
--------------------------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("D6") = " >>>" Then '2 espaces
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "TRIER ici"
Range("D6").Select
Else
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "Liste Ok"
Range("D6").Select
End If
End Sub
--------------------------------------------------------------------
Merci d'avance pour vos lumières ...
--
Cordialement @+
JP
Quelle persévérance !!
J'aime pas qu'on me résiste ;o)))))
Bonjour Philippe,
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de news:
%2357P9mO0HHA.464@TK2MSFTNGP02.phx.gbl...
Bonjour j-pascal,
En relisant le fil, et les messages de LSteph, il serait bon de remplacer
doevents par application.enableevents=true en fin de procédure de tri :
Selection.End(xlDown).offset(1, 0).Select
End If
End If
application.enableevents=true
calculate
End Sub
Malheureusement, ça ne règle pas le pb. La seule chose qui fasse passer
l'affichage à "Liste Ok" , c'est une saisie dans la feuille (y compris pas
sélection via menu déroulant).
Et dans le code de la feuille, la condition étant évaluée en AW3 dont on
récupère la valeur dans le texte du bouton, ceci devrait suffir :
Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = Range("AW3").value
Range("D6").Select '(j'ai mis ça pour désélectionner le bouton !)
End Sub
avec un .value derrière la référence du range bien que ce soit la
propriété par défaut
J'ai testé ; cela fonctionne effectivement très bien.
Pour revenir à mon "pb" initial (car de mon côté, je continue de
chercher...) : quand on a une "Private Sub Worksheet_Change", qu'est ce
qui se passe "concrétement" lorsqu'on saisie une valeur dans la feuille ?
Autrement dit, à partir de quel "état" cette procédure est-elle activée ?
JP
--
Philippe.R
"j-pascal" <nospam-j-pascal@free.fr> a écrit dans le message de
news:eWehCyJ0HHA.3536@TK2MSFTNGP06.phx.gbl...
Bonsoir,
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de news:
%23Iid3iG0HHA.1204@TK2MSFTNGP03.phx.gbl...
Re,
Je vois, du moins je l'espère ;o))
Puisqu'il s'agit du résultat d'un calcul, tente d'ajouter encore
l'instruction calculate avant le doevents
Selection.End(xlDown).offset(1, 0).Select
End If
End If
calculate
doevents
End Sub
Servir !
"a priori" ça ne fonctionne pas ;-(
J'ai fait un essai en mettant les messages "Liste Ok" et "A Trier" dans
une cellule ("AW3")
(qui se change bien en "Liste Ok" après un tri effectué à partir du
bouton (98) ; mais le texte ne se modifie pas sur le bouton !
If Range("D6") = " >>>" Then
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = Range("AW3")
Range("D6").Select '(j'ai mis ça pour désélectionner le bouton
!)
Else
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = Range("AW3")
Range("D6").Select
End If
Je suis un peu perplexe !
JP
Philippe.R
"j-pascal" <nospam-j-pascal@free.fr> a écrit dans le message de
news:e%23$SN1D0HHA.2484@TK2MSFTNGP06.phx.gbl...
Re Philippe,
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de
news: eN6ydoC0HHA.3916@TK2MSFTNGP02.phx.gbl...
Re j-pascal,
2 questions encore :
le tri se fait bien dans la feuille qui contiens le Private Sub
Worksheet_Change(ByVal Target As Range) ?
Oui, mais le code du Tri est dans un module "normal" (pas dans le
module de Feuil)
où se trouve l'instruction de passage à "" de D6 ?
La cellule D6 = SI(SOMME(PlageTestTri)=0;"";" >>>") (le bouton se
trouve dans la cellule E6 et en fonction du résultat, j'ai une mise en
forme conditionnelle qui met le motif de la cellule en rouge ce qui
"invite" l'utilisateur à Trier !)
PlageTestTri contient une formule qui teste la colonne de Noms. Si le
nom du dessus est ">" à celui de la ligne testée, la formule renvoit
un "1". Si le contenu de la colonne est supérieur à 0 cela signifie
que la plage doit être triée.
Je sais, c'est un peu tordu, mais ça marche bien (sans recours à une
macro) ;-)
Essaie toujours de glisser l'instruction "doevents" en fin de sub ;
comme ceci :
Selection.End(xlDown).offset(1, 0).Select
End If
End If
doevents
End Sub
histoire de forcer l'exécution du code évenementiel.
Désolé, ça ne fonctionne pas ;-(
JP
--
Philippe.R
"j-pascal" <nospam-j-pascal@free.fr> a écrit dans le message de
news:O7KcqAC0HHA.5764@TK2MSFTNGP03.phx.gbl...
Bonjour Philippe,
Désolé, j'avais mis le code sur un autre fil (2 sujets liés), voici
le code en question :
'-------------(début code Tri) ----------------------------
Sub TriPlageAtrier()
If Range("AX6") = "DOUBLON" Then
MsgBox "Veuillez éliminer le(s) doublon(s) avant d'effectuer
le tri
!"
Exit Sub
Else
If Range("AW6") <> "TRI" Then
MsgBox "La liste est déjà triée !"
Exit Sub
Else
Range("PlageAtrier").Select 'B422:AZ801
Selection.Sort Key1:=Range("C9"), Order1:=xlAscending,
Header:=xlGuess _
, OrderCustom:=1, MatchCase:úlse,
Orientation:=xlTopToBottom,
_
DataOption1:=xlSortNormal
Range("C9").Select
Selection.End(xlDown).offset(1, 0).Select
End If
End If
End Sub
'----------------------(fin code Tri)---------------------------
@+ ?
JP
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de
news: e4zTo8A0HHA.600@TK2MSFTNGP05.phx.gbl...
Bonjour,
Voici ce que je lit comme instructions dans le code que tu fournis
:
Private Sub Worksheet_Change(ByVal Target As Range)
'Lorsque un contenu change dans une cellule quelconque de la
feuille
If Range("D6") = " >>>" Then '2
espaces
Si la cellule D6 contient la chaîne " >>>"
ActiveSheet.Shapes("Button 98").Select
sélectionne le bouton n°98
Selection.Characters.Text = "TRIER ici"
inscrit sur ce bouton le texte "TRIER ici"
Range("D6").Select
sélectionne la cellule D6
Else
sinon
ActiveSheet.Shapes("Button 98").Select
sélectionne le bouton n°98
Selection.Characters.Text = "Liste Ok"
inscrit sur ce bouton le texte "Liste Ok"
Range("D6").Select
sélectionne la cellule D6
End If
End Sub
A aucun moment l'instruction de tri ne figure, d'où ma question car
je suppose qu'une macro est affectée au bouton.
--
Philippe.R
"j-pascal" <nospam-j-pascal@free.fr> a écrit dans le message de
news:ue5f$UozHHA.3940@TK2MSFTNGP05.phx.gbl...
Bonjour Philippe,
Le tri s'effectue si la cellule "D6" comprend le signe " >>>"
(situé juste à gauche du bouton de TRI) ... :
--------------------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("D6") = " >>>" Then '2
espaces
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "TRIER ici"
Range("D6").Select
Else
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "Liste Ok"
Range("D6").Select
End If
End Sub
----------------------------------------------------------------
JP
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de
news: %23HgqH9izHHA.2484@TK2MSFTNGP06.phx.gbl...
Bonsoir j-pascal,
Comment ton bouton lance t il le tri, je ne vois aucune
instruction correspondant dns le code fourni ?
En revanche, actuellemnt, le chnagement d'intitulé de ton bouton
est lié à un changement de valeur dans la feuille
--
Philippe.R
"j-pascal" <nospam-j-pascal@free.fr> a écrit dans le message de
news:%23yxcg2izHHA.5772@TK2MSFTNGP02.phx.gbl...
Bonsoir,
Si j'effectue un tri en appuyant sur le bouton 98 car la valeur
de D6 = "
", le tri s'effectue et donc la valeur de D6 passe à "", mais
le texte
"TRIER ici" reste sur le bouton alors que je devrais avoir
"Liste Ok" !
"Liste Ok" s'affiche bien si j'effectue une saisie dans ma liste
...
Voici le code :
--------------------------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("D6") = " >>>" Then '2 espaces
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "TRIER ici"
Range("D6").Select
Else
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "Liste Ok"
Range("D6").Select
End If
End Sub
--------------------------------------------------------------------
Merci d'avance pour vos lumières ...
--
Cordialement @+
JP
Quelle persévérance !!
J'aime pas qu'on me résiste ;o)))))
Bonjour Philippe,
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de news:
%Bonjour j-pascal,
En relisant le fil, et les messages de LSteph, il serait bon de remplacer
doevents par application.enableevents=true en fin de procédure de tri :
Selection.End(xlDown).offset(1, 0).Select
End If
End If
application.enableevents=true
calculate
End Sub
Malheureusement, ça ne règle pas le pb. La seule chose qui fasse passer
l'affichage à "Liste Ok" , c'est une saisie dans la feuille (y compris pas
sélection via menu déroulant).Et dans le code de la feuille, la condition étant évaluée en AW3 dont on
récupère la valeur dans le texte du bouton, ceci devrait suffir :
Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = Range("AW3").value
Range("D6").Select '(j'ai mis ça pour désélectionner le bouton !)
End Sub
avec un .value derrière la référence du range bien que ce soit la
propriété par défaut
J'ai testé ; cela fonctionne effectivement très bien.
Pour revenir à mon "pb" initial (car de mon côté, je continue de
chercher...) : quand on a une "Private Sub Worksheet_Change", qu'est ce
qui se passe "concrétement" lorsqu'on saisie une valeur dans la feuille ?
Autrement dit, à partir de quel "état" cette procédure est-elle activée ?
JP--
Philippe.R
"j-pascal" a écrit dans le message de
news:Bonsoir,
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de news:
%Re,
Je vois, du moins je l'espère ;o))
Puisqu'il s'agit du résultat d'un calcul, tente d'ajouter encore
l'instruction calculate avant le doevents
Selection.End(xlDown).offset(1, 0).Select
End If
End If
calculate
doevents
End Sub
Servir !
"a priori" ça ne fonctionne pas ;-(
J'ai fait un essai en mettant les messages "Liste Ok" et "A Trier" dans
une cellule ("AW3")
(qui se change bien en "Liste Ok" après un tri effectué à partir du
bouton (98) ; mais le texte ne se modifie pas sur le bouton !
If Range("D6") = " >>>" Then
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = Range("AW3")
Range("D6").Select '(j'ai mis ça pour désélectionner le bouton
!)
Else
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = Range("AW3")
Range("D6").Select
End If
Je suis un peu perplexe !
JPPhilippe.R
"j-pascal" a écrit dans le message de
news:e%23$Re Philippe,
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de
news:Re j-pascal,
2 questions encore :
le tri se fait bien dans la feuille qui contiens le Private Sub
Worksheet_Change(ByVal Target As Range) ?
Oui, mais le code du Tri est dans un module "normal" (pas dans le
module de Feuil)où se trouve l'instruction de passage à "" de D6 ?
La cellule D6 = SI(SOMME(PlageTestTri)=0;"";" >>>") (le bouton se
trouve dans la cellule E6 et en fonction du résultat, j'ai une mise en
forme conditionnelle qui met le motif de la cellule en rouge ce qui
"invite" l'utilisateur à Trier !)
PlageTestTri contient une formule qui teste la colonne de Noms. Si le
nom du dessus est ">" à celui de la ligne testée, la formule renvoit
un "1". Si le contenu de la colonne est supérieur à 0 cela signifie
que la plage doit être triée.
Je sais, c'est un peu tordu, mais ça marche bien (sans recours à une
macro) ;-)Essaie toujours de glisser l'instruction "doevents" en fin de sub ;
comme ceci :
Selection.End(xlDown).offset(1, 0).Select
End If
End If
doevents
End Sub
histoire de forcer l'exécution du code évenementiel.
Désolé, ça ne fonctionne pas ;-(
JP--
Philippe.R
"j-pascal" a écrit dans le message de
news:Bonjour Philippe,
Désolé, j'avais mis le code sur un autre fil (2 sujets liés), voici
le code en question :
'-------------(début code Tri) ----------------------------
Sub TriPlageAtrier()
If Range("AX6") = "DOUBLON" Then
MsgBox "Veuillez éliminer le(s) doublon(s) avant d'effectuer
le tri
!"
Exit Sub
Else
If Range("AW6") <> "TRI" Then
MsgBox "La liste est déjà triée !"
Exit Sub
Else
Range("PlageAtrier").Select 'B422:AZ801
Selection.Sort Key1:=Range("C9"), Order1:=xlAscending,
Header:=xlGuess _
, OrderCustom:=1, MatchCase:úlse,
Orientation:=xlTopToBottom,
_
DataOption1:=xlSortNormal
Range("C9").Select
Selection.End(xlDown).offset(1, 0).Select
End If
End If
End Sub
'----------------------(fin code Tri)---------------------------
@+ ?
JP
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de
news:Bonjour,
Voici ce que je lit comme instructions dans le code que tu fournis
:Private Sub Worksheet_Change(ByVal Target As Range)
'Lorsque un contenu change dans une cellule quelconque de la
feuilleIf Range("D6") = " >>>" Then '2
espaces
Si la cellule D6 contient la chaîne " >>>"ActiveSheet.Shapes("Button 98").Select
sélectionne le bouton n°98Selection.Characters.Text = "TRIER ici"
inscrit sur ce bouton le texte "TRIER ici"Range("D6").Select
sélectionne la cellule D6Else
sinonActiveSheet.Shapes("Button 98").Select
sélectionne le bouton n°98Selection.Characters.Text = "Liste Ok"
inscrit sur ce bouton le texte "Liste Ok"Range("D6").Select
sélectionne la cellule D6End If
End Sub
A aucun moment l'instruction de tri ne figure, d'où ma question car
je suppose qu'une macro est affectée au bouton.
--
Philippe.R
"j-pascal" a écrit dans le message de
news:ue5f$Bonjour Philippe,
Le tri s'effectue si la cellule "D6" comprend le signe " >>>"
(situé juste à gauche du bouton de TRI) ... :
--------------------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("D6") = " >>>" Then '2
espaces
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "TRIER ici"
Range("D6").Select
Else
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "Liste Ok"
Range("D6").Select
End If
End Sub
----------------------------------------------------------------
JP
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de
news: %Bonsoir j-pascal,
Comment ton bouton lance t il le tri, je ne vois aucune
instruction correspondant dns le code fourni ?
En revanche, actuellemnt, le chnagement d'intitulé de ton bouton
est lié à un changement de valeur dans la feuille
--
Philippe.R
"j-pascal" a écrit dans le message de
news:%Bonsoir,
Si j'effectue un tri en appuyant sur le bouton 98 car la valeur
de D6 = "", le tri s'effectue et donc la valeur de D6 passe à "", mais
le texte
"TRIER ici" reste sur le bouton alors que je devrais avoir
"Liste Ok" !
"Liste Ok" s'affiche bien si j'effectue une saisie dans ma liste
...
Voici le code :
--------------------------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("D6") = " >>>" Then '2 espaces
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "TRIER ici"
Range("D6").Select
Else
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "Liste Ok"
Range("D6").Select
End If
End Sub
--------------------------------------------------------------------
Merci d'avance pour vos lumières ...
--
Cordialement @+
JP
Re j-pascal,Quelle persévérance !!
J'aime pas qu'on me résiste ;o)))))
Les procédures de feuille, du type Worksheet_qqch(), dont
Worksheet_Change() fait partie sont des procédures évenementielles, qui
permettent de réaliser une action lors de la réalisation d'un évènement
donné.
Dans le cas présent, avec Worksheet_Change(), c'est le changement d'une
valeur dans la feuille qui décenchera la procédure.
Ces procédures sont inhibées par l'instruction
application.enableeventsúlse et rétablies par
application.enableevents=true
Je joins un petit classeur exemple avec une macro de tri lancée par le
bouton
Sub triplage()
'MPFE le 28/07/2007
Application.EnableEvents = False
Range("G1:G23").Select
Selection.Sort Key1:=Range("G1"), Order1:=xlAscending, Header:=xlGuess,
_
OrderCustom:=1, MatchCase:úlse, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Application.EnableEvents = True
[a1] = 2
DoEvents
End Sub
et une macro évenementielle
Private Sub Worksheet_Change(ByVal Target As Range)
'MPFE le 28/07/2007
'La première ligne de commande permet de faire passer la cellule a1 à 1
If Not Intersect(Target, Range("g1:g23")) Is Nothing Then [a1] = 1
'la suite reprend la logique de ton classeur
ActiveSheet.Shapes("Button 1").Select
Selection.Characters.Text = Range("A6").Value
Range("a1").Select
End Sub
permettant de simuler ce qui devrait se passer normalement (à ce que j'ai
pigé)
http://cjoint.com/?hCsXLUjFEj
--
Philippe.R
"j-pascal" a écrit dans le message de
news:%Bonjour Philippe,
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de news:
%Bonjour j-pascal,
En relisant le fil, et les messages de LSteph, il serait bon de
remplacer doevents par application.enableevents=true en fin de procédure
de tri :
Selection.End(xlDown).offset(1, 0).Select
End If
End If
application.enableevents=true
calculate
End Sub
Malheureusement, ça ne règle pas le pb. La seule chose qui fasse passer
l'affichage à "Liste Ok" , c'est une saisie dans la feuille (y compris
pas sélection via menu déroulant).Et dans le code de la feuille, la condition étant évaluée en AW3 dont on
récupère la valeur dans le texte du bouton, ceci devrait suffir :
Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = Range("AW3").value
Range("D6").Select '(j'ai mis ça pour désélectionner le bouton !)
End Sub
avec un .value derrière la référence du range bien que ce soit la
propriété par défaut
J'ai testé ; cela fonctionne effectivement très bien.
Pour revenir à mon "pb" initial (car de mon côté, je continue de
chercher...) : quand on a une "Private Sub Worksheet_Change", qu'est ce
qui se passe "concrétement" lorsqu'on saisie une valeur dans la feuille ?
Autrement dit, à partir de quel "état" cette procédure est-elle activée ?
JP--
Philippe.R
"j-pascal" a écrit dans le message de
news:Bonsoir,
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de
news: %Re,
Je vois, du moins je l'espère ;o))
Puisqu'il s'agit du résultat d'un calcul, tente d'ajouter encore
l'instruction calculate avant le doevents
Selection.End(xlDown).offset(1, 0).Select
End If
End If
calculate
doevents
End Sub
Servir !
"a priori" ça ne fonctionne pas ;-(
J'ai fait un essai en mettant les messages "Liste Ok" et "A Trier" dans
une cellule ("AW3")
(qui se change bien en "Liste Ok" après un tri effectué à partir du
bouton (98) ; mais le texte ne se modifie pas sur le bouton !
If Range("D6") = " >>>" Then
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = Range("AW3")
Range("D6").Select '(j'ai mis ça pour désélectionner le
bouton !)
Else
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = Range("AW3")
Range("D6").Select
End If
Je suis un peu perplexe !
JPPhilippe.R
"j-pascal" a écrit dans le message de
news:e%23$Re Philippe,
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de
news:Re j-pascal,
2 questions encore :
le tri se fait bien dans la feuille qui contiens le Private Sub
Worksheet_Change(ByVal Target As Range) ?
Oui, mais le code du Tri est dans un module "normal" (pas dans le
module de Feuil)où se trouve l'instruction de passage à "" de D6 ?
La cellule D6 = SI(SOMME(PlageTestTri)=0;"";" >>>") (le bouton se
trouve dans la cellule E6 et en fonction du résultat, j'ai une mise
en forme conditionnelle qui met le motif de la cellule en rouge ce
qui "invite" l'utilisateur à Trier !)
PlageTestTri contient une formule qui teste la colonne de Noms. Si le
nom du dessus est ">" à celui de la ligne testée, la formule renvoit
un "1". Si le contenu de la colonne est supérieur à 0 cela signifie
que la plage doit être triée.
Je sais, c'est un peu tordu, mais ça marche bien (sans recours à une
macro) ;-)Essaie toujours de glisser l'instruction "doevents" en fin de sub ;
comme ceci :
Selection.End(xlDown).offset(1, 0).Select
End If
End If
doevents
End Sub
histoire de forcer l'exécution du code évenementiel.
Désolé, ça ne fonctionne pas ;-(
JP--
Philippe.R
"j-pascal" a écrit dans le message de
news:Bonjour Philippe,
Désolé, j'avais mis le code sur un autre fil (2 sujets liés), voici
le code en question :
'-------------(début code Tri) ----------------------------
Sub TriPlageAtrier()
If Range("AX6") = "DOUBLON" Then
MsgBox "Veuillez éliminer le(s) doublon(s) avant d'effectuer
le tri
!"
Exit Sub
Else
If Range("AW6") <> "TRI" Then
MsgBox "La liste est déjà triée !"
Exit Sub
Else
Range("PlageAtrier").Select 'B422:AZ801
Selection.Sort Key1:=Range("C9"), Order1:=xlAscending,
Header:=xlGuess _
, OrderCustom:=1, MatchCase:úlse,
Orientation:=xlTopToBottom,
_
DataOption1:=xlSortNormal
Range("C9").Select
Selection.End(xlDown).offset(1, 0).Select
End If
End If
End Sub
'----------------------(fin code Tri)---------------------------
@+ ?
JP
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de
news:Bonjour,
Voici ce que je lit comme instructions dans le code que tu fournis
:Private Sub Worksheet_Change(ByVal Target As Range)
'Lorsque un contenu change dans une cellule quelconque de la
feuilleIf Range("D6") = " >>>" Then '2
espaces
Si la cellule D6 contient la chaîne " >>>"ActiveSheet.Shapes("Button 98").Select
sélectionne le bouton n°98Selection.Characters.Text = "TRIER ici"
inscrit sur ce bouton le texte "TRIER ici"Range("D6").Select
sélectionne la cellule D6Else
sinonActiveSheet.Shapes("Button 98").Select
sélectionne le bouton n°98Selection.Characters.Text = "Liste Ok"
inscrit sur ce bouton le texte "Liste Ok"Range("D6").Select
sélectionne la cellule D6End If
End Sub
A aucun moment l'instruction de tri ne figure, d'où ma question
car je suppose qu'une macro est affectée au bouton.
--
Philippe.R
"j-pascal" a écrit dans le message de
news:ue5f$Bonjour Philippe,
Le tri s'effectue si la cellule "D6" comprend le signe " >>>"
(situé juste à gauche du bouton de TRI) ... :
--------------------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("D6") = " >>>" Then '2
espaces
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "TRIER ici"
Range("D6").Select
Else
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "Liste Ok"
Range("D6").Select
End If
End Sub
----------------------------------------------------------------
JP
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message
de news: %Bonsoir j-pascal,
Comment ton bouton lance t il le tri, je ne vois aucune
instruction correspondant dns le code fourni ?
En revanche, actuellemnt, le chnagement d'intitulé de ton bouton
est lié à un changement de valeur dans la feuille
--
Philippe.R
"j-pascal" a écrit dans le message de
news:%Bonsoir,
Si j'effectue un tri en appuyant sur le bouton 98 car la valeur
de D6 = "", le tri s'effectue et donc la valeur de D6 passe à "",
mais le texte
"TRIER ici" reste sur le bouton alors que je devrais avoir
"Liste Ok" !
"Liste Ok" s'affiche bien si j'effectue une saisie dans ma
liste ...
Voici le code :
--------------------------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("D6") = " >>>" Then '2 espaces
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "TRIER ici"
Range("D6").Select
Else
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "Liste Ok"
Range("D6").Select
End If
End Sub
--------------------------------------------------------------------
Merci d'avance pour vos lumières ...
--
Cordialement @+
JP
Re j-pascal,
Quelle persévérance !!
J'aime pas qu'on me résiste ;o)))))
Les procédures de feuille, du type Worksheet_qqch(), dont
Worksheet_Change() fait partie sont des procédures évenementielles, qui
permettent de réaliser une action lors de la réalisation d'un évènement
donné.
Dans le cas présent, avec Worksheet_Change(), c'est le changement d'une
valeur dans la feuille qui décenchera la procédure.
Ces procédures sont inhibées par l'instruction
application.enableeventsúlse et rétablies par
application.enableevents=true
Je joins un petit classeur exemple avec une macro de tri lancée par le
bouton
Sub triplage()
'MPFE le 28/07/2007
Application.EnableEvents = False
Range("G1:G23").Select
Selection.Sort Key1:=Range("G1"), Order1:=xlAscending, Header:=xlGuess,
_
OrderCustom:=1, MatchCase:úlse, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Application.EnableEvents = True
[a1] = 2
DoEvents
End Sub
et une macro évenementielle
Private Sub Worksheet_Change(ByVal Target As Range)
'MPFE le 28/07/2007
'La première ligne de commande permet de faire passer la cellule a1 à 1
If Not Intersect(Target, Range("g1:g23")) Is Nothing Then [a1] = 1
'la suite reprend la logique de ton classeur
ActiveSheet.Shapes("Button 1").Select
Selection.Characters.Text = Range("A6").Value
Range("a1").Select
End Sub
permettant de simuler ce qui devrait se passer normalement (à ce que j'ai
pigé)
http://cjoint.com/?hCsXLUjFEj
--
Philippe.R
"j-pascal" <nospam-j-pascal@free.fr> a écrit dans le message de
news:%238xPc9S0HHA.5380@TK2MSFTNGP04.phx.gbl...
Bonjour Philippe,
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de news:
%2357P9mO0HHA.464@TK2MSFTNGP02.phx.gbl...
Bonjour j-pascal,
En relisant le fil, et les messages de LSteph, il serait bon de
remplacer doevents par application.enableevents=true en fin de procédure
de tri :
Selection.End(xlDown).offset(1, 0).Select
End If
End If
application.enableevents=true
calculate
End Sub
Malheureusement, ça ne règle pas le pb. La seule chose qui fasse passer
l'affichage à "Liste Ok" , c'est une saisie dans la feuille (y compris
pas sélection via menu déroulant).
Et dans le code de la feuille, la condition étant évaluée en AW3 dont on
récupère la valeur dans le texte du bouton, ceci devrait suffir :
Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = Range("AW3").value
Range("D6").Select '(j'ai mis ça pour désélectionner le bouton !)
End Sub
avec un .value derrière la référence du range bien que ce soit la
propriété par défaut
J'ai testé ; cela fonctionne effectivement très bien.
Pour revenir à mon "pb" initial (car de mon côté, je continue de
chercher...) : quand on a une "Private Sub Worksheet_Change", qu'est ce
qui se passe "concrétement" lorsqu'on saisie une valeur dans la feuille ?
Autrement dit, à partir de quel "état" cette procédure est-elle activée ?
JP
--
Philippe.R
"j-pascal" <nospam-j-pascal@free.fr> a écrit dans le message de
news:eWehCyJ0HHA.3536@TK2MSFTNGP06.phx.gbl...
Bonsoir,
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de
news: %23Iid3iG0HHA.1204@TK2MSFTNGP03.phx.gbl...
Re,
Je vois, du moins je l'espère ;o))
Puisqu'il s'agit du résultat d'un calcul, tente d'ajouter encore
l'instruction calculate avant le doevents
Selection.End(xlDown).offset(1, 0).Select
End If
End If
calculate
doevents
End Sub
Servir !
"a priori" ça ne fonctionne pas ;-(
J'ai fait un essai en mettant les messages "Liste Ok" et "A Trier" dans
une cellule ("AW3")
(qui se change bien en "Liste Ok" après un tri effectué à partir du
bouton (98) ; mais le texte ne se modifie pas sur le bouton !
If Range("D6") = " >>>" Then
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = Range("AW3")
Range("D6").Select '(j'ai mis ça pour désélectionner le
bouton !)
Else
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = Range("AW3")
Range("D6").Select
End If
Je suis un peu perplexe !
JP
Philippe.R
"j-pascal" <nospam-j-pascal@free.fr> a écrit dans le message de
news:e%23$SN1D0HHA.2484@TK2MSFTNGP06.phx.gbl...
Re Philippe,
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de
news: eN6ydoC0HHA.3916@TK2MSFTNGP02.phx.gbl...
Re j-pascal,
2 questions encore :
le tri se fait bien dans la feuille qui contiens le Private Sub
Worksheet_Change(ByVal Target As Range) ?
Oui, mais le code du Tri est dans un module "normal" (pas dans le
module de Feuil)
où se trouve l'instruction de passage à "" de D6 ?
La cellule D6 = SI(SOMME(PlageTestTri)=0;"";" >>>") (le bouton se
trouve dans la cellule E6 et en fonction du résultat, j'ai une mise
en forme conditionnelle qui met le motif de la cellule en rouge ce
qui "invite" l'utilisateur à Trier !)
PlageTestTri contient une formule qui teste la colonne de Noms. Si le
nom du dessus est ">" à celui de la ligne testée, la formule renvoit
un "1". Si le contenu de la colonne est supérieur à 0 cela signifie
que la plage doit être triée.
Je sais, c'est un peu tordu, mais ça marche bien (sans recours à une
macro) ;-)
Essaie toujours de glisser l'instruction "doevents" en fin de sub ;
comme ceci :
Selection.End(xlDown).offset(1, 0).Select
End If
End If
doevents
End Sub
histoire de forcer l'exécution du code évenementiel.
Désolé, ça ne fonctionne pas ;-(
JP
--
Philippe.R
"j-pascal" <nospam-j-pascal@free.fr> a écrit dans le message de
news:O7KcqAC0HHA.5764@TK2MSFTNGP03.phx.gbl...
Bonjour Philippe,
Désolé, j'avais mis le code sur un autre fil (2 sujets liés), voici
le code en question :
'-------------(début code Tri) ----------------------------
Sub TriPlageAtrier()
If Range("AX6") = "DOUBLON" Then
MsgBox "Veuillez éliminer le(s) doublon(s) avant d'effectuer
le tri
!"
Exit Sub
Else
If Range("AW6") <> "TRI" Then
MsgBox "La liste est déjà triée !"
Exit Sub
Else
Range("PlageAtrier").Select 'B422:AZ801
Selection.Sort Key1:=Range("C9"), Order1:=xlAscending,
Header:=xlGuess _
, OrderCustom:=1, MatchCase:úlse,
Orientation:=xlTopToBottom,
_
DataOption1:=xlSortNormal
Range("C9").Select
Selection.End(xlDown).offset(1, 0).Select
End If
End If
End Sub
'----------------------(fin code Tri)---------------------------
@+ ?
JP
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de
news: e4zTo8A0HHA.600@TK2MSFTNGP05.phx.gbl...
Bonjour,
Voici ce que je lit comme instructions dans le code que tu fournis
:
Private Sub Worksheet_Change(ByVal Target As Range)
'Lorsque un contenu change dans une cellule quelconque de la
feuille
If Range("D6") = " >>>" Then '2
espaces
Si la cellule D6 contient la chaîne " >>>"
ActiveSheet.Shapes("Button 98").Select
sélectionne le bouton n°98
Selection.Characters.Text = "TRIER ici"
inscrit sur ce bouton le texte "TRIER ici"
Range("D6").Select
sélectionne la cellule D6
Else
sinon
ActiveSheet.Shapes("Button 98").Select
sélectionne le bouton n°98
Selection.Characters.Text = "Liste Ok"
inscrit sur ce bouton le texte "Liste Ok"
Range("D6").Select
sélectionne la cellule D6
End If
End Sub
A aucun moment l'instruction de tri ne figure, d'où ma question
car je suppose qu'une macro est affectée au bouton.
--
Philippe.R
"j-pascal" <nospam-j-pascal@free.fr> a écrit dans le message de
news:ue5f$UozHHA.3940@TK2MSFTNGP05.phx.gbl...
Bonjour Philippe,
Le tri s'effectue si la cellule "D6" comprend le signe " >>>"
(situé juste à gauche du bouton de TRI) ... :
--------------------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("D6") = " >>>" Then '2
espaces
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "TRIER ici"
Range("D6").Select
Else
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "Liste Ok"
Range("D6").Select
End If
End Sub
----------------------------------------------------------------
JP
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message
de news: %23HgqH9izHHA.2484@TK2MSFTNGP06.phx.gbl...
Bonsoir j-pascal,
Comment ton bouton lance t il le tri, je ne vois aucune
instruction correspondant dns le code fourni ?
En revanche, actuellemnt, le chnagement d'intitulé de ton bouton
est lié à un changement de valeur dans la feuille
--
Philippe.R
"j-pascal" <nospam-j-pascal@free.fr> a écrit dans le message de
news:%23yxcg2izHHA.5772@TK2MSFTNGP02.phx.gbl...
Bonsoir,
Si j'effectue un tri en appuyant sur le bouton 98 car la valeur
de D6 = "
", le tri s'effectue et donc la valeur de D6 passe à "",
mais le texte
"TRIER ici" reste sur le bouton alors que je devrais avoir
"Liste Ok" !
"Liste Ok" s'affiche bien si j'effectue une saisie dans ma
liste ...
Voici le code :
--------------------------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("D6") = " >>>" Then '2 espaces
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "TRIER ici"
Range("D6").Select
Else
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "Liste Ok"
Range("D6").Select
End If
End Sub
--------------------------------------------------------------------
Merci d'avance pour vos lumières ...
--
Cordialement @+
JP
Re j-pascal,Quelle persévérance !!
J'aime pas qu'on me résiste ;o)))))
Les procédures de feuille, du type Worksheet_qqch(), dont
Worksheet_Change() fait partie sont des procédures évenementielles, qui
permettent de réaliser une action lors de la réalisation d'un évènement
donné.
Dans le cas présent, avec Worksheet_Change(), c'est le changement d'une
valeur dans la feuille qui décenchera la procédure.
Ces procédures sont inhibées par l'instruction
application.enableeventsúlse et rétablies par
application.enableevents=true
Je joins un petit classeur exemple avec une macro de tri lancée par le
bouton
Sub triplage()
'MPFE le 28/07/2007
Application.EnableEvents = False
Range("G1:G23").Select
Selection.Sort Key1:=Range("G1"), Order1:=xlAscending, Header:=xlGuess,
_
OrderCustom:=1, MatchCase:úlse, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Application.EnableEvents = True
[a1] = 2
DoEvents
End Sub
et une macro évenementielle
Private Sub Worksheet_Change(ByVal Target As Range)
'MPFE le 28/07/2007
'La première ligne de commande permet de faire passer la cellule a1 à 1
If Not Intersect(Target, Range("g1:g23")) Is Nothing Then [a1] = 1
'la suite reprend la logique de ton classeur
ActiveSheet.Shapes("Button 1").Select
Selection.Characters.Text = Range("A6").Value
Range("a1").Select
End Sub
permettant de simuler ce qui devrait se passer normalement (à ce que j'ai
pigé)
http://cjoint.com/?hCsXLUjFEj
--
Philippe.R
"j-pascal" a écrit dans le message de
news:%Bonjour Philippe,
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de news:
%Bonjour j-pascal,
En relisant le fil, et les messages de LSteph, il serait bon de
remplacer doevents par application.enableevents=true en fin de procédure
de tri :
Selection.End(xlDown).offset(1, 0).Select
End If
End If
application.enableevents=true
calculate
End Sub
Malheureusement, ça ne règle pas le pb. La seule chose qui fasse passer
l'affichage à "Liste Ok" , c'est une saisie dans la feuille (y compris
pas sélection via menu déroulant).Et dans le code de la feuille, la condition étant évaluée en AW3 dont on
récupère la valeur dans le texte du bouton, ceci devrait suffir :
Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = Range("AW3").value
Range("D6").Select '(j'ai mis ça pour désélectionner le bouton !)
End Sub
avec un .value derrière la référence du range bien que ce soit la
propriété par défaut
J'ai testé ; cela fonctionne effectivement très bien.
Pour revenir à mon "pb" initial (car de mon côté, je continue de
chercher...) : quand on a une "Private Sub Worksheet_Change", qu'est ce
qui se passe "concrétement" lorsqu'on saisie une valeur dans la feuille ?
Autrement dit, à partir de quel "état" cette procédure est-elle activée ?
JP--
Philippe.R
"j-pascal" a écrit dans le message de
news:Bonsoir,
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de
news: %Re,
Je vois, du moins je l'espère ;o))
Puisqu'il s'agit du résultat d'un calcul, tente d'ajouter encore
l'instruction calculate avant le doevents
Selection.End(xlDown).offset(1, 0).Select
End If
End If
calculate
doevents
End Sub
Servir !
"a priori" ça ne fonctionne pas ;-(
J'ai fait un essai en mettant les messages "Liste Ok" et "A Trier" dans
une cellule ("AW3")
(qui se change bien en "Liste Ok" après un tri effectué à partir du
bouton (98) ; mais le texte ne se modifie pas sur le bouton !
If Range("D6") = " >>>" Then
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = Range("AW3")
Range("D6").Select '(j'ai mis ça pour désélectionner le
bouton !)
Else
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = Range("AW3")
Range("D6").Select
End If
Je suis un peu perplexe !
JPPhilippe.R
"j-pascal" a écrit dans le message de
news:e%23$Re Philippe,
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de
news:Re j-pascal,
2 questions encore :
le tri se fait bien dans la feuille qui contiens le Private Sub
Worksheet_Change(ByVal Target As Range) ?
Oui, mais le code du Tri est dans un module "normal" (pas dans le
module de Feuil)où se trouve l'instruction de passage à "" de D6 ?
La cellule D6 = SI(SOMME(PlageTestTri)=0;"";" >>>") (le bouton se
trouve dans la cellule E6 et en fonction du résultat, j'ai une mise
en forme conditionnelle qui met le motif de la cellule en rouge ce
qui "invite" l'utilisateur à Trier !)
PlageTestTri contient une formule qui teste la colonne de Noms. Si le
nom du dessus est ">" à celui de la ligne testée, la formule renvoit
un "1". Si le contenu de la colonne est supérieur à 0 cela signifie
que la plage doit être triée.
Je sais, c'est un peu tordu, mais ça marche bien (sans recours à une
macro) ;-)Essaie toujours de glisser l'instruction "doevents" en fin de sub ;
comme ceci :
Selection.End(xlDown).offset(1, 0).Select
End If
End If
doevents
End Sub
histoire de forcer l'exécution du code évenementiel.
Désolé, ça ne fonctionne pas ;-(
JP--
Philippe.R
"j-pascal" a écrit dans le message de
news:Bonjour Philippe,
Désolé, j'avais mis le code sur un autre fil (2 sujets liés), voici
le code en question :
'-------------(début code Tri) ----------------------------
Sub TriPlageAtrier()
If Range("AX6") = "DOUBLON" Then
MsgBox "Veuillez éliminer le(s) doublon(s) avant d'effectuer
le tri
!"
Exit Sub
Else
If Range("AW6") <> "TRI" Then
MsgBox "La liste est déjà triée !"
Exit Sub
Else
Range("PlageAtrier").Select 'B422:AZ801
Selection.Sort Key1:=Range("C9"), Order1:=xlAscending,
Header:=xlGuess _
, OrderCustom:=1, MatchCase:úlse,
Orientation:=xlTopToBottom,
_
DataOption1:=xlSortNormal
Range("C9").Select
Selection.End(xlDown).offset(1, 0).Select
End If
End If
End Sub
'----------------------(fin code Tri)---------------------------
@+ ?
JP
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de
news:Bonjour,
Voici ce que je lit comme instructions dans le code que tu fournis
:Private Sub Worksheet_Change(ByVal Target As Range)
'Lorsque un contenu change dans une cellule quelconque de la
feuilleIf Range("D6") = " >>>" Then '2
espaces
Si la cellule D6 contient la chaîne " >>>"ActiveSheet.Shapes("Button 98").Select
sélectionne le bouton n°98Selection.Characters.Text = "TRIER ici"
inscrit sur ce bouton le texte "TRIER ici"Range("D6").Select
sélectionne la cellule D6Else
sinonActiveSheet.Shapes("Button 98").Select
sélectionne le bouton n°98Selection.Characters.Text = "Liste Ok"
inscrit sur ce bouton le texte "Liste Ok"Range("D6").Select
sélectionne la cellule D6End If
End Sub
A aucun moment l'instruction de tri ne figure, d'où ma question
car je suppose qu'une macro est affectée au bouton.
--
Philippe.R
"j-pascal" a écrit dans le message de
news:ue5f$Bonjour Philippe,
Le tri s'effectue si la cellule "D6" comprend le signe " >>>"
(situé juste à gauche du bouton de TRI) ... :
--------------------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("D6") = " >>>" Then '2
espaces
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "TRIER ici"
Range("D6").Select
Else
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "Liste Ok"
Range("D6").Select
End If
End Sub
----------------------------------------------------------------
JP
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message
de news: %Bonsoir j-pascal,
Comment ton bouton lance t il le tri, je ne vois aucune
instruction correspondant dns le code fourni ?
En revanche, actuellemnt, le chnagement d'intitulé de ton bouton
est lié à un changement de valeur dans la feuille
--
Philippe.R
"j-pascal" a écrit dans le message de
news:%Bonsoir,
Si j'effectue un tri en appuyant sur le bouton 98 car la valeur
de D6 = "", le tri s'effectue et donc la valeur de D6 passe à "",
mais le texte
"TRIER ici" reste sur le bouton alors que je devrais avoir
"Liste Ok" !
"Liste Ok" s'affiche bien si j'effectue une saisie dans ma
liste ...
Voici le code :
--------------------------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("D6") = " >>>" Then '2 espaces
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "TRIER ici"
Range("D6").Select
Else
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "Liste Ok"
Range("D6").Select
End If
End Sub
--------------------------------------------------------------------
Merci d'avance pour vos lumières ...
--
Cordialement @+
JP
Re j-pascal,Quelle persévérance !!
J'aime pas qu'on me résiste ;o)))))
Les procédures de feuille, du type Worksheet_qqch(), dont
Worksheet_Change() fait partie sont des procédures évenementielles, qui
permettent de réaliser une action lors de la réalisation d'un évènement
donné.
Dans le cas présent, avec Worksheet_Change(), c'est le changement d'une
valeur dans la feuille qui décenchera la procédure.
Ces procédures sont inhibées par l'instruction
application.enableeventsúlse et rétablies par
application.enableevents=true
Je joins un petit classeur exemple avec une macro de tri lancée par le
bouton
Sub triplage()
'MPFE le 28/07/2007
Application.EnableEvents = False
Range("G1:G23").Select
Selection.Sort Key1:=Range("G1"), Order1:=xlAscending, Header:=xlGuess,
_
OrderCustom:=1, MatchCase:úlse, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Application.EnableEvents = True
[a1] = 2
DoEvents
End Sub
et une macro évenementielle
Private Sub Worksheet_Change(ByVal Target As Range)
'MPFE le 28/07/2007
'La première ligne de commande permet de faire passer la cellule a1 à 1
If Not Intersect(Target, Range("g1:g23")) Is Nothing Then [a1] = 1
'la suite reprend la logique de ton classeur
ActiveSheet.Shapes("Button 1").Select
Selection.Characters.Text = Range("A6").Value
Range("a1").Select
End Sub
permettant de simuler ce qui devrait se passer normalement (à ce que j'ai
pigé)
http://cjoint.com/?hCsXLUjFEj
--
Philippe.R
"j-pascal" a écrit dans le message de
news:%Bonjour Philippe,
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de news:
%Bonjour j-pascal,
En relisant le fil, et les messages de LSteph, il serait bon de
remplacer doevents par application.enableevents=true en fin de procédure
de tri :
Selection.End(xlDown).offset(1, 0).Select
End If
End If
application.enableevents=true
calculate
End Sub
Malheureusement, ça ne règle pas le pb. La seule chose qui fasse passer
l'affichage à "Liste Ok" , c'est une saisie dans la feuille (y compris
pas sélection via menu déroulant).Et dans le code de la feuille, la condition étant évaluée en AW3 dont on
récupère la valeur dans le texte du bouton, ceci devrait suffir :
Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = Range("AW3").value
Range("D6").Select '(j'ai mis ça pour désélectionner le bouton !)
End Sub
avec un .value derrière la référence du range bien que ce soit la
propriété par défaut
J'ai testé ; cela fonctionne effectivement très bien.
Pour revenir à mon "pb" initial (car de mon côté, je continue de
chercher...) : quand on a une "Private Sub Worksheet_Change", qu'est ce
qui se passe "concrétement" lorsqu'on saisie une valeur dans la feuille ?
Autrement dit, à partir de quel "état" cette procédure est-elle activée ?
JP--
Philippe.R
"j-pascal" a écrit dans le message de
news:Bonsoir,
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de
news: %Re,
Je vois, du moins je l'espère ;o))
Puisqu'il s'agit du résultat d'un calcul, tente d'ajouter encore
l'instruction calculate avant le doevents
Selection.End(xlDown).offset(1, 0).Select
End If
End If
calculate
doevents
End Sub
Servir !
"a priori" ça ne fonctionne pas ;-(
J'ai fait un essai en mettant les messages "Liste Ok" et "A Trier" dans
une cellule ("AW3")
(qui se change bien en "Liste Ok" après un tri effectué à partir du
bouton (98) ; mais le texte ne se modifie pas sur le bouton !
If Range("D6") = " >>>" Then
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = Range("AW3")
Range("D6").Select '(j'ai mis ça pour désélectionner le
bouton !)
Else
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = Range("AW3")
Range("D6").Select
End If
Je suis un peu perplexe !
JPPhilippe.R
"j-pascal" a écrit dans le message de
news:e%23$Re Philippe,
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de
news:Re j-pascal,
2 questions encore :
le tri se fait bien dans la feuille qui contiens le Private Sub
Worksheet_Change(ByVal Target As Range) ?
Oui, mais le code du Tri est dans un module "normal" (pas dans le
module de Feuil)où se trouve l'instruction de passage à "" de D6 ?
La cellule D6 = SI(SOMME(PlageTestTri)=0;"";" >>>") (le bouton se
trouve dans la cellule E6 et en fonction du résultat, j'ai une mise
en forme conditionnelle qui met le motif de la cellule en rouge ce
qui "invite" l'utilisateur à Trier !)
PlageTestTri contient une formule qui teste la colonne de Noms. Si le
nom du dessus est ">" à celui de la ligne testée, la formule renvoit
un "1". Si le contenu de la colonne est supérieur à 0 cela signifie
que la plage doit être triée.
Je sais, c'est un peu tordu, mais ça marche bien (sans recours à une
macro) ;-)Essaie toujours de glisser l'instruction "doevents" en fin de sub ;
comme ceci :
Selection.End(xlDown).offset(1, 0).Select
End If
End If
doevents
End Sub
histoire de forcer l'exécution du code évenementiel.
Désolé, ça ne fonctionne pas ;-(
JP--
Philippe.R
"j-pascal" a écrit dans le message de
news:Bonjour Philippe,
Désolé, j'avais mis le code sur un autre fil (2 sujets liés), voici
le code en question :
'-------------(début code Tri) ----------------------------
Sub TriPlageAtrier()
If Range("AX6") = "DOUBLON" Then
MsgBox "Veuillez éliminer le(s) doublon(s) avant d'effectuer
le tri
!"
Exit Sub
Else
If Range("AW6") <> "TRI" Then
MsgBox "La liste est déjà triée !"
Exit Sub
Else
Range("PlageAtrier").Select 'B422:AZ801
Selection.Sort Key1:=Range("C9"), Order1:=xlAscending,
Header:=xlGuess _
, OrderCustom:=1, MatchCase:úlse,
Orientation:=xlTopToBottom,
_
DataOption1:=xlSortNormal
Range("C9").Select
Selection.End(xlDown).offset(1, 0).Select
End If
End If
End Sub
'----------------------(fin code Tri)---------------------------
@+ ?
JP
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de
news:Bonjour,
Voici ce que je lit comme instructions dans le code que tu fournis
:Private Sub Worksheet_Change(ByVal Target As Range)
'Lorsque un contenu change dans une cellule quelconque de la
feuilleIf Range("D6") = " >>>" Then '2
espaces
Si la cellule D6 contient la chaîne " >>>"ActiveSheet.Shapes("Button 98").Select
sélectionne le bouton n°98Selection.Characters.Text = "TRIER ici"
inscrit sur ce bouton le texte "TRIER ici"Range("D6").Select
sélectionne la cellule D6Else
sinonActiveSheet.Shapes("Button 98").Select
sélectionne le bouton n°98Selection.Characters.Text = "Liste Ok"
inscrit sur ce bouton le texte "Liste Ok"Range("D6").Select
sélectionne la cellule D6End If
End Sub
A aucun moment l'instruction de tri ne figure, d'où ma question
car je suppose qu'une macro est affectée au bouton.
--
Philippe.R
"j-pascal" a écrit dans le message de
news:ue5f$Bonjour Philippe,
Le tri s'effectue si la cellule "D6" comprend le signe " >>>"
(situé juste à gauche du bouton de TRI) ... :
--------------------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("D6") = " >>>" Then '2
espaces
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "TRIER ici"
Range("D6").Select
Else
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "Liste Ok"
Range("D6").Select
End If
End Sub
----------------------------------------------------------------
JP
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message
de news: %Bonsoir j-pascal,
Comment ton bouton lance t il le tri, je ne vois aucune
instruction correspondant dns le code fourni ?
En revanche, actuellemnt, le chnagement d'intitulé de ton bouton
est lié à un changement de valeur dans la feuille
--
Philippe.R
"j-pascal" a écrit dans le message de
news:%Bonsoir,
Si j'effectue un tri en appuyant sur le bouton 98 car la valeur
de D6 = "", le tri s'effectue et donc la valeur de D6 passe à "",
mais le texte
"TRIER ici" reste sur le bouton alors que je devrais avoir
"Liste Ok" !
"Liste Ok" s'affiche bien si j'effectue une saisie dans ma
liste ...
Voici le code :
--------------------------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("D6") = " >>>" Then '2 espaces
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "TRIER ici"
Range("D6").Select
Else
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "Liste Ok"
Range("D6").Select
End If
End Sub
--------------------------------------------------------------------
Merci d'avance pour vos lumières ...
--
Cordialement @+
JP
Re j-pascal,
Quelle persévérance !!
J'aime pas qu'on me résiste ;o)))))
Les procédures de feuille, du type Worksheet_qqch(), dont
Worksheet_Change() fait partie sont des procédures évenementielles, qui
permettent de réaliser une action lors de la réalisation d'un évènement
donné.
Dans le cas présent, avec Worksheet_Change(), c'est le changement d'une
valeur dans la feuille qui décenchera la procédure.
Ces procédures sont inhibées par l'instruction
application.enableeventsúlse et rétablies par
application.enableevents=true
Je joins un petit classeur exemple avec une macro de tri lancée par le
bouton
Sub triplage()
'MPFE le 28/07/2007
Application.EnableEvents = False
Range("G1:G23").Select
Selection.Sort Key1:=Range("G1"), Order1:=xlAscending, Header:=xlGuess,
_
OrderCustom:=1, MatchCase:úlse, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Application.EnableEvents = True
[a1] = 2
DoEvents
End Sub
et une macro évenementielle
Private Sub Worksheet_Change(ByVal Target As Range)
'MPFE le 28/07/2007
'La première ligne de commande permet de faire passer la cellule a1 à 1
If Not Intersect(Target, Range("g1:g23")) Is Nothing Then [a1] = 1
'la suite reprend la logique de ton classeur
ActiveSheet.Shapes("Button 1").Select
Selection.Characters.Text = Range("A6").Value
Range("a1").Select
End Sub
permettant de simuler ce qui devrait se passer normalement (à ce que j'ai
pigé)
http://cjoint.com/?hCsXLUjFEj
--
Philippe.R
"j-pascal" <nospam-j-pascal@free.fr> a écrit dans le message de
news:%238xPc9S0HHA.5380@TK2MSFTNGP04.phx.gbl...
Bonjour Philippe,
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de news:
%2357P9mO0HHA.464@TK2MSFTNGP02.phx.gbl...
Bonjour j-pascal,
En relisant le fil, et les messages de LSteph, il serait bon de
remplacer doevents par application.enableevents=true en fin de procédure
de tri :
Selection.End(xlDown).offset(1, 0).Select
End If
End If
application.enableevents=true
calculate
End Sub
Malheureusement, ça ne règle pas le pb. La seule chose qui fasse passer
l'affichage à "Liste Ok" , c'est une saisie dans la feuille (y compris
pas sélection via menu déroulant).
Et dans le code de la feuille, la condition étant évaluée en AW3 dont on
récupère la valeur dans le texte du bouton, ceci devrait suffir :
Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = Range("AW3").value
Range("D6").Select '(j'ai mis ça pour désélectionner le bouton !)
End Sub
avec un .value derrière la référence du range bien que ce soit la
propriété par défaut
J'ai testé ; cela fonctionne effectivement très bien.
Pour revenir à mon "pb" initial (car de mon côté, je continue de
chercher...) : quand on a une "Private Sub Worksheet_Change", qu'est ce
qui se passe "concrétement" lorsqu'on saisie une valeur dans la feuille ?
Autrement dit, à partir de quel "état" cette procédure est-elle activée ?
JP
--
Philippe.R
"j-pascal" <nospam-j-pascal@free.fr> a écrit dans le message de
news:eWehCyJ0HHA.3536@TK2MSFTNGP06.phx.gbl...
Bonsoir,
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de
news: %23Iid3iG0HHA.1204@TK2MSFTNGP03.phx.gbl...
Re,
Je vois, du moins je l'espère ;o))
Puisqu'il s'agit du résultat d'un calcul, tente d'ajouter encore
l'instruction calculate avant le doevents
Selection.End(xlDown).offset(1, 0).Select
End If
End If
calculate
doevents
End Sub
Servir !
"a priori" ça ne fonctionne pas ;-(
J'ai fait un essai en mettant les messages "Liste Ok" et "A Trier" dans
une cellule ("AW3")
(qui se change bien en "Liste Ok" après un tri effectué à partir du
bouton (98) ; mais le texte ne se modifie pas sur le bouton !
If Range("D6") = " >>>" Then
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = Range("AW3")
Range("D6").Select '(j'ai mis ça pour désélectionner le
bouton !)
Else
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = Range("AW3")
Range("D6").Select
End If
Je suis un peu perplexe !
JP
Philippe.R
"j-pascal" <nospam-j-pascal@free.fr> a écrit dans le message de
news:e%23$SN1D0HHA.2484@TK2MSFTNGP06.phx.gbl...
Re Philippe,
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de
news: eN6ydoC0HHA.3916@TK2MSFTNGP02.phx.gbl...
Re j-pascal,
2 questions encore :
le tri se fait bien dans la feuille qui contiens le Private Sub
Worksheet_Change(ByVal Target As Range) ?
Oui, mais le code du Tri est dans un module "normal" (pas dans le
module de Feuil)
où se trouve l'instruction de passage à "" de D6 ?
La cellule D6 = SI(SOMME(PlageTestTri)=0;"";" >>>") (le bouton se
trouve dans la cellule E6 et en fonction du résultat, j'ai une mise
en forme conditionnelle qui met le motif de la cellule en rouge ce
qui "invite" l'utilisateur à Trier !)
PlageTestTri contient une formule qui teste la colonne de Noms. Si le
nom du dessus est ">" à celui de la ligne testée, la formule renvoit
un "1". Si le contenu de la colonne est supérieur à 0 cela signifie
que la plage doit être triée.
Je sais, c'est un peu tordu, mais ça marche bien (sans recours à une
macro) ;-)
Essaie toujours de glisser l'instruction "doevents" en fin de sub ;
comme ceci :
Selection.End(xlDown).offset(1, 0).Select
End If
End If
doevents
End Sub
histoire de forcer l'exécution du code évenementiel.
Désolé, ça ne fonctionne pas ;-(
JP
--
Philippe.R
"j-pascal" <nospam-j-pascal@free.fr> a écrit dans le message de
news:O7KcqAC0HHA.5764@TK2MSFTNGP03.phx.gbl...
Bonjour Philippe,
Désolé, j'avais mis le code sur un autre fil (2 sujets liés), voici
le code en question :
'-------------(début code Tri) ----------------------------
Sub TriPlageAtrier()
If Range("AX6") = "DOUBLON" Then
MsgBox "Veuillez éliminer le(s) doublon(s) avant d'effectuer
le tri
!"
Exit Sub
Else
If Range("AW6") <> "TRI" Then
MsgBox "La liste est déjà triée !"
Exit Sub
Else
Range("PlageAtrier").Select 'B422:AZ801
Selection.Sort Key1:=Range("C9"), Order1:=xlAscending,
Header:=xlGuess _
, OrderCustom:=1, MatchCase:úlse,
Orientation:=xlTopToBottom,
_
DataOption1:=xlSortNormal
Range("C9").Select
Selection.End(xlDown).offset(1, 0).Select
End If
End If
End Sub
'----------------------(fin code Tri)---------------------------
@+ ?
JP
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de
news: e4zTo8A0HHA.600@TK2MSFTNGP05.phx.gbl...
Bonjour,
Voici ce que je lit comme instructions dans le code que tu fournis
:
Private Sub Worksheet_Change(ByVal Target As Range)
'Lorsque un contenu change dans une cellule quelconque de la
feuille
If Range("D6") = " >>>" Then '2
espaces
Si la cellule D6 contient la chaîne " >>>"
ActiveSheet.Shapes("Button 98").Select
sélectionne le bouton n°98
Selection.Characters.Text = "TRIER ici"
inscrit sur ce bouton le texte "TRIER ici"
Range("D6").Select
sélectionne la cellule D6
Else
sinon
ActiveSheet.Shapes("Button 98").Select
sélectionne le bouton n°98
Selection.Characters.Text = "Liste Ok"
inscrit sur ce bouton le texte "Liste Ok"
Range("D6").Select
sélectionne la cellule D6
End If
End Sub
A aucun moment l'instruction de tri ne figure, d'où ma question
car je suppose qu'une macro est affectée au bouton.
--
Philippe.R
"j-pascal" <nospam-j-pascal@free.fr> a écrit dans le message de
news:ue5f$UozHHA.3940@TK2MSFTNGP05.phx.gbl...
Bonjour Philippe,
Le tri s'effectue si la cellule "D6" comprend le signe " >>>"
(situé juste à gauche du bouton de TRI) ... :
--------------------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("D6") = " >>>" Then '2
espaces
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "TRIER ici"
Range("D6").Select
Else
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "Liste Ok"
Range("D6").Select
End If
End Sub
----------------------------------------------------------------
JP
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message
de news: %23HgqH9izHHA.2484@TK2MSFTNGP06.phx.gbl...
Bonsoir j-pascal,
Comment ton bouton lance t il le tri, je ne vois aucune
instruction correspondant dns le code fourni ?
En revanche, actuellemnt, le chnagement d'intitulé de ton bouton
est lié à un changement de valeur dans la feuille
--
Philippe.R
"j-pascal" <nospam-j-pascal@free.fr> a écrit dans le message de
news:%23yxcg2izHHA.5772@TK2MSFTNGP02.phx.gbl...
Bonsoir,
Si j'effectue un tri en appuyant sur le bouton 98 car la valeur
de D6 = "
", le tri s'effectue et donc la valeur de D6 passe à "",
mais le texte
"TRIER ici" reste sur le bouton alors que je devrais avoir
"Liste Ok" !
"Liste Ok" s'affiche bien si j'effectue une saisie dans ma
liste ...
Voici le code :
--------------------------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("D6") = " >>>" Then '2 espaces
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "TRIER ici"
Range("D6").Select
Else
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "Liste Ok"
Range("D6").Select
End If
End Sub
--------------------------------------------------------------------
Merci d'avance pour vos lumières ...
--
Cordialement @+
JP
Re j-pascal,Quelle persévérance !!
J'aime pas qu'on me résiste ;o)))))
Les procédures de feuille, du type Worksheet_qqch(), dont
Worksheet_Change() fait partie sont des procédures évenementielles, qui
permettent de réaliser une action lors de la réalisation d'un évènement
donné.
Dans le cas présent, avec Worksheet_Change(), c'est le changement d'une
valeur dans la feuille qui décenchera la procédure.
Ces procédures sont inhibées par l'instruction
application.enableeventsúlse et rétablies par
application.enableevents=true
Je joins un petit classeur exemple avec une macro de tri lancée par le
bouton
Sub triplage()
'MPFE le 28/07/2007
Application.EnableEvents = False
Range("G1:G23").Select
Selection.Sort Key1:=Range("G1"), Order1:=xlAscending, Header:=xlGuess,
_
OrderCustom:=1, MatchCase:úlse, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Application.EnableEvents = True
[a1] = 2
DoEvents
End Sub
et une macro évenementielle
Private Sub Worksheet_Change(ByVal Target As Range)
'MPFE le 28/07/2007
'La première ligne de commande permet de faire passer la cellule a1 à 1
If Not Intersect(Target, Range("g1:g23")) Is Nothing Then [a1] = 1
'la suite reprend la logique de ton classeur
ActiveSheet.Shapes("Button 1").Select
Selection.Characters.Text = Range("A6").Value
Range("a1").Select
End Sub
permettant de simuler ce qui devrait se passer normalement (à ce que j'ai
pigé)
http://cjoint.com/?hCsXLUjFEj
--
Philippe.R
"j-pascal" a écrit dans le message de
news:%Bonjour Philippe,
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de news:
%Bonjour j-pascal,
En relisant le fil, et les messages de LSteph, il serait bon de
remplacer doevents par application.enableevents=true en fin de procédure
de tri :
Selection.End(xlDown).offset(1, 0).Select
End If
End If
application.enableevents=true
calculate
End Sub
Malheureusement, ça ne règle pas le pb. La seule chose qui fasse passer
l'affichage à "Liste Ok" , c'est une saisie dans la feuille (y compris
pas sélection via menu déroulant).Et dans le code de la feuille, la condition étant évaluée en AW3 dont on
récupère la valeur dans le texte du bouton, ceci devrait suffir :
Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = Range("AW3").value
Range("D6").Select '(j'ai mis ça pour désélectionner le bouton !)
End Sub
avec un .value derrière la référence du range bien que ce soit la
propriété par défaut
J'ai testé ; cela fonctionne effectivement très bien.
Pour revenir à mon "pb" initial (car de mon côté, je continue de
chercher...) : quand on a une "Private Sub Worksheet_Change", qu'est ce
qui se passe "concrétement" lorsqu'on saisie une valeur dans la feuille ?
Autrement dit, à partir de quel "état" cette procédure est-elle activée ?
JP--
Philippe.R
"j-pascal" a écrit dans le message de
news:Bonsoir,
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de
news: %Re,
Je vois, du moins je l'espère ;o))
Puisqu'il s'agit du résultat d'un calcul, tente d'ajouter encore
l'instruction calculate avant le doevents
Selection.End(xlDown).offset(1, 0).Select
End If
End If
calculate
doevents
End Sub
Servir !
"a priori" ça ne fonctionne pas ;-(
J'ai fait un essai en mettant les messages "Liste Ok" et "A Trier" dans
une cellule ("AW3")
(qui se change bien en "Liste Ok" après un tri effectué à partir du
bouton (98) ; mais le texte ne se modifie pas sur le bouton !
If Range("D6") = " >>>" Then
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = Range("AW3")
Range("D6").Select '(j'ai mis ça pour désélectionner le
bouton !)
Else
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = Range("AW3")
Range("D6").Select
End If
Je suis un peu perplexe !
JPPhilippe.R
"j-pascal" a écrit dans le message de
news:e%23$Re Philippe,
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de
news:Re j-pascal,
2 questions encore :
le tri se fait bien dans la feuille qui contiens le Private Sub
Worksheet_Change(ByVal Target As Range) ?
Oui, mais le code du Tri est dans un module "normal" (pas dans le
module de Feuil)où se trouve l'instruction de passage à "" de D6 ?
La cellule D6 = SI(SOMME(PlageTestTri)=0;"";" >>>") (le bouton se
trouve dans la cellule E6 et en fonction du résultat, j'ai une mise
en forme conditionnelle qui met le motif de la cellule en rouge ce
qui "invite" l'utilisateur à Trier !)
PlageTestTri contient une formule qui teste la colonne de Noms. Si le
nom du dessus est ">" à celui de la ligne testée, la formule renvoit
un "1". Si le contenu de la colonne est supérieur à 0 cela signifie
que la plage doit être triée.
Je sais, c'est un peu tordu, mais ça marche bien (sans recours à une
macro) ;-)Essaie toujours de glisser l'instruction "doevents" en fin de sub ;
comme ceci :
Selection.End(xlDown).offset(1, 0).Select
End If
End If
doevents
End Sub
histoire de forcer l'exécution du code évenementiel.
Désolé, ça ne fonctionne pas ;-(
JP--
Philippe.R
"j-pascal" a écrit dans le message de
news:Bonjour Philippe,
Désolé, j'avais mis le code sur un autre fil (2 sujets liés), voici
le code en question :
'-------------(début code Tri) ----------------------------
Sub TriPlageAtrier()
If Range("AX6") = "DOUBLON" Then
MsgBox "Veuillez éliminer le(s) doublon(s) avant d'effectuer
le tri
!"
Exit Sub
Else
If Range("AW6") <> "TRI" Then
MsgBox "La liste est déjà triée !"
Exit Sub
Else
Range("PlageAtrier").Select 'B422:AZ801
Selection.Sort Key1:=Range("C9"), Order1:=xlAscending,
Header:=xlGuess _
, OrderCustom:=1, MatchCase:úlse,
Orientation:=xlTopToBottom,
_
DataOption1:=xlSortNormal
Range("C9").Select
Selection.End(xlDown).offset(1, 0).Select
End If
End If
End Sub
'----------------------(fin code Tri)---------------------------
@+ ?
JP
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de
news:Bonjour,
Voici ce que je lit comme instructions dans le code que tu fournis
:Private Sub Worksheet_Change(ByVal Target As Range)
'Lorsque un contenu change dans une cellule quelconque de la
feuilleIf Range("D6") = " >>>" Then '2
espaces
Si la cellule D6 contient la chaîne " >>>"ActiveSheet.Shapes("Button 98").Select
sélectionne le bouton n°98Selection.Characters.Text = "TRIER ici"
inscrit sur ce bouton le texte "TRIER ici"Range("D6").Select
sélectionne la cellule D6Else
sinonActiveSheet.Shapes("Button 98").Select
sélectionne le bouton n°98Selection.Characters.Text = "Liste Ok"
inscrit sur ce bouton le texte "Liste Ok"Range("D6").Select
sélectionne la cellule D6End If
End Sub
A aucun moment l'instruction de tri ne figure, d'où ma question
car je suppose qu'une macro est affectée au bouton.
--
Philippe.R
"j-pascal" a écrit dans le message de
news:ue5f$Bonjour Philippe,
Le tri s'effectue si la cellule "D6" comprend le signe " >>>"
(situé juste à gauche du bouton de TRI) ... :
--------------------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("D6") = " >>>" Then '2
espaces
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "TRIER ici"
Range("D6").Select
Else
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "Liste Ok"
Range("D6").Select
End If
End Sub
----------------------------------------------------------------
JP
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message
de news: %Bonsoir j-pascal,
Comment ton bouton lance t il le tri, je ne vois aucune
instruction correspondant dns le code fourni ?
En revanche, actuellemnt, le chnagement d'intitulé de ton bouton
est lié à un changement de valeur dans la feuille
--
Philippe.R
"j-pascal" a écrit dans le message de
news:%Bonsoir,
Si j'effectue un tri en appuyant sur le bouton 98 car la valeur
de D6 = "", le tri s'effectue et donc la valeur de D6 passe à "",
mais le texte
"TRIER ici" reste sur le bouton alors que je devrais avoir
"Liste Ok" !
"Liste Ok" s'affiche bien si j'effectue une saisie dans ma
liste ...
Voici le code :
--------------------------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("D6") = " >>>" Then '2 espaces
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "TRIER ici"
Range("D6").Select
Else
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "Liste Ok"
Range("D6").Select
End If
End Sub
--------------------------------------------------------------------
Merci d'avance pour vos lumières ...
--
Cordialement @+
JP
Bonjour Philippe,
Juste pour dire que pour la "détection" de commentaire(s), c'est résolu.
Merci vraiment pour l'aide précieuse que tu m'as apportée tout au long de
ce fil. Il ne me reste plus qu'à étudier tout ça de près ...
Cordialement
JP
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de news:
%Re j-pascal,Quelle persévérance !!
J'aime pas qu'on me résiste ;o)))))
Les procédures de feuille, du type Worksheet_qqch(), dont
Worksheet_Change() fait partie sont des procédures évenementielles, qui
permettent de réaliser une action lors de la réalisation d'un évènement
donné.
Dans le cas présent, avec Worksheet_Change(), c'est le changement d'une
valeur dans la feuille qui décenchera la procédure.
Ces procédures sont inhibées par l'instruction
application.enableeventsúlse et rétablies par
application.enableevents=true
Je joins un petit classeur exemple avec une macro de tri lancée par le
bouton
Sub triplage()
'MPFE le 28/07/2007
Application.EnableEvents = False
Range("G1:G23").Select
Selection.Sort Key1:=Range("G1"), Order1:=xlAscending,
Header:=xlGuess, _
OrderCustom:=1, MatchCase:úlse, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Application.EnableEvents = True
[a1] = 2
DoEvents
End Sub
et une macro évenementielle
Private Sub Worksheet_Change(ByVal Target As Range)
'MPFE le 28/07/2007
'La première ligne de commande permet de faire passer la cellule a1 à 1
If Not Intersect(Target, Range("g1:g23")) Is Nothing Then [a1] = 1
'la suite reprend la logique de ton classeur
ActiveSheet.Shapes("Button 1").Select
Selection.Characters.Text = Range("A6").Value
Range("a1").Select
End Sub
permettant de simuler ce qui devrait se passer normalement (à ce que j'ai
pigé)
http://cjoint.com/?hCsXLUjFEj
--
Philippe.R
"j-pascal" a écrit dans le message de
news:%Bonjour Philippe,
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de news:
%Bonjour j-pascal,
En relisant le fil, et les messages de LSteph, il serait bon de
remplacer doevents par application.enableevents=true en fin de
procédure de tri :
Selection.End(xlDown).offset(1, 0).Select
End If
End If
application.enableevents=true
calculate
End Sub
Malheureusement, ça ne règle pas le pb. La seule chose qui fasse passer
l'affichage à "Liste Ok" , c'est une saisie dans la feuille (y compris
pas sélection via menu déroulant).Et dans le code de la feuille, la condition étant évaluée en AW3 dont
on récupère la valeur dans le texte du bouton, ceci devrait suffir :
Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = Range("AW3").value
Range("D6").Select '(j'ai mis ça pour désélectionner le bouton !)
End Sub
avec un .value derrière la référence du range bien que ce soit la
propriété par défaut
J'ai testé ; cela fonctionne effectivement très bien.
Pour revenir à mon "pb" initial (car de mon côté, je continue de
chercher...) : quand on a une "Private Sub Worksheet_Change", qu'est ce
qui se passe "concrétement" lorsqu'on saisie une valeur dans la feuille
? Autrement dit, à partir de quel "état" cette procédure est-elle
activée ?
JP--
Philippe.R
"j-pascal" a écrit dans le message de
news:Bonsoir,
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de
news: %Re,
Je vois, du moins je l'espère ;o))
Puisqu'il s'agit du résultat d'un calcul, tente d'ajouter encore
l'instruction calculate avant le doevents
Selection.End(xlDown).offset(1, 0).Select
End If
End If
calculate
doevents
End Sub
Servir !
"a priori" ça ne fonctionne pas ;-(
J'ai fait un essai en mettant les messages "Liste Ok" et "A Trier"
dans une cellule ("AW3")
(qui se change bien en "Liste Ok" après un tri effectué à partir du
bouton (98) ; mais le texte ne se modifie pas sur le bouton !
If Range("D6") = " >>>" Then
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = Range("AW3")
Range("D6").Select '(j'ai mis ça pour désélectionner le
bouton !)
Else
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = Range("AW3")
Range("D6").Select
End If
Je suis un peu perplexe !
JPPhilippe.R
"j-pascal" a écrit dans le message de
news:e%23$Re Philippe,
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de
news:Re j-pascal,
2 questions encore :
le tri se fait bien dans la feuille qui contiens le Private Sub
Worksheet_Change(ByVal Target As Range) ?
Oui, mais le code du Tri est dans un module "normal" (pas dans le
module de Feuil)où se trouve l'instruction de passage à "" de D6 ?
La cellule D6 = SI(SOMME(PlageTestTri)=0;"";" >>>") (le bouton se
trouve dans la cellule E6 et en fonction du résultat, j'ai une mise
en forme conditionnelle qui met le motif de la cellule en rouge ce
qui "invite" l'utilisateur à Trier !)
PlageTestTri contient une formule qui teste la colonne de Noms. Si
le nom du dessus est ">" à celui de la ligne testée, la formule
renvoit un "1". Si le contenu de la colonne est supérieur à 0 cela
signifie que la plage doit être triée.
Je sais, c'est un peu tordu, mais ça marche bien (sans recours à une
macro) ;-)Essaie toujours de glisser l'instruction "doevents" en fin de sub ;
comme ceci :
Selection.End(xlDown).offset(1, 0).Select
End If
End If
doevents
End Sub
histoire de forcer l'exécution du code évenementiel.
Désolé, ça ne fonctionne pas ;-(
JP--
Philippe.R
"j-pascal" a écrit dans le message de
news:Bonjour Philippe,
Désolé, j'avais mis le code sur un autre fil (2 sujets liés),
voici le code en question :
'-------------(début code Tri) ----------------------------
Sub TriPlageAtrier()
If Range("AX6") = "DOUBLON" Then
MsgBox "Veuillez éliminer le(s) doublon(s) avant
d'effectuer le tri
!"
Exit Sub
Else
If Range("AW6") <> "TRI" Then
MsgBox "La liste est déjà triée !"
Exit Sub
Else
Range("PlageAtrier").Select 'B422:AZ801
Selection.Sort Key1:=Range("C9"), Order1:=xlAscending,
Header:=xlGuess _
, OrderCustom:=1, MatchCase:úlse,
Orientation:=xlTopToBottom,
_
DataOption1:=xlSortNormal
Range("C9").Select
Selection.End(xlDown).offset(1, 0).Select
End If
End If
End Sub
'----------------------(fin code Tri)---------------------------
@+ ?
JP
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de
news:Bonjour,
Voici ce que je lit comme instructions dans le code que tu
fournis :Private Sub Worksheet_Change(ByVal Target As Range)
'Lorsque un contenu change dans une cellule quelconque de la
feuilleIf Range("D6") = " >>>" Then '2
espaces
Si la cellule D6 contient la chaîne " >>>"ActiveSheet.Shapes("Button 98").Select
sélectionne le bouton n°98Selection.Characters.Text = "TRIER ici"
inscrit sur ce bouton le texte "TRIER ici"Range("D6").Select
sélectionne la cellule D6Else
sinonActiveSheet.Shapes("Button 98").Select
sélectionne le bouton n°98Selection.Characters.Text = "Liste Ok"
inscrit sur ce bouton le texte "Liste Ok"Range("D6").Select
sélectionne la cellule D6End If
End Sub
A aucun moment l'instruction de tri ne figure, d'où ma question
car je suppose qu'une macro est affectée au bouton.
--
Philippe.R
"j-pascal" a écrit dans le message de
news:ue5f$Bonjour Philippe,
Le tri s'effectue si la cellule "D6" comprend le signe " >>>"
(situé juste à gauche du bouton de TRI) ... :
--------------------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("D6") = " >>>" Then '2
espaces
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "TRIER ici"
Range("D6").Select
Else
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "Liste Ok"
Range("D6").Select
End If
End Sub
----------------------------------------------------------------
JP
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message
de news: %Bonsoir j-pascal,
Comment ton bouton lance t il le tri, je ne vois aucune
instruction correspondant dns le code fourni ?
En revanche, actuellemnt, le chnagement d'intitulé de ton
bouton est lié à un changement de valeur dans la feuille
--
Philippe.R
"j-pascal" a écrit dans le message de
news:%Bonsoir,
Si j'effectue un tri en appuyant sur le bouton 98 car la
valeur de D6 = "", le tri s'effectue et donc la valeur de D6 passe à "",
mais le texte
"TRIER ici" reste sur le bouton alors que je devrais avoir
"Liste Ok" !
"Liste Ok" s'affiche bien si j'effectue une saisie dans ma
liste ...
Voici le code :
--------------------------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("D6") = " >>>" Then '2 espaces
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "TRIER ici"
Range("D6").Select
Else
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "Liste Ok"
Range("D6").Select
End If
End Sub
--------------------------------------------------------------------
Merci d'avance pour vos lumières ...
--
Cordialement @+
JP
Bonjour Philippe,
Juste pour dire que pour la "détection" de commentaire(s), c'est résolu.
Merci vraiment pour l'aide précieuse que tu m'as apportée tout au long de
ce fil. Il ne me reste plus qu'à étudier tout ça de près ...
Cordialement
JP
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de news:
%233nOTdT0HHA.6072@TK2MSFTNGP03.phx.gbl...
Re j-pascal,
Quelle persévérance !!
J'aime pas qu'on me résiste ;o)))))
Les procédures de feuille, du type Worksheet_qqch(), dont
Worksheet_Change() fait partie sont des procédures évenementielles, qui
permettent de réaliser une action lors de la réalisation d'un évènement
donné.
Dans le cas présent, avec Worksheet_Change(), c'est le changement d'une
valeur dans la feuille qui décenchera la procédure.
Ces procédures sont inhibées par l'instruction
application.enableeventsúlse et rétablies par
application.enableevents=true
Je joins un petit classeur exemple avec une macro de tri lancée par le
bouton
Sub triplage()
'MPFE le 28/07/2007
Application.EnableEvents = False
Range("G1:G23").Select
Selection.Sort Key1:=Range("G1"), Order1:=xlAscending,
Header:=xlGuess, _
OrderCustom:=1, MatchCase:úlse, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Application.EnableEvents = True
[a1] = 2
DoEvents
End Sub
et une macro évenementielle
Private Sub Worksheet_Change(ByVal Target As Range)
'MPFE le 28/07/2007
'La première ligne de commande permet de faire passer la cellule a1 à 1
If Not Intersect(Target, Range("g1:g23")) Is Nothing Then [a1] = 1
'la suite reprend la logique de ton classeur
ActiveSheet.Shapes("Button 1").Select
Selection.Characters.Text = Range("A6").Value
Range("a1").Select
End Sub
permettant de simuler ce qui devrait se passer normalement (à ce que j'ai
pigé)
http://cjoint.com/?hCsXLUjFEj
--
Philippe.R
"j-pascal" <nospam-j-pascal@free.fr> a écrit dans le message de
news:%238xPc9S0HHA.5380@TK2MSFTNGP04.phx.gbl...
Bonjour Philippe,
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de news:
%2357P9mO0HHA.464@TK2MSFTNGP02.phx.gbl...
Bonjour j-pascal,
En relisant le fil, et les messages de LSteph, il serait bon de
remplacer doevents par application.enableevents=true en fin de
procédure de tri :
Selection.End(xlDown).offset(1, 0).Select
End If
End If
application.enableevents=true
calculate
End Sub
Malheureusement, ça ne règle pas le pb. La seule chose qui fasse passer
l'affichage à "Liste Ok" , c'est une saisie dans la feuille (y compris
pas sélection via menu déroulant).
Et dans le code de la feuille, la condition étant évaluée en AW3 dont
on récupère la valeur dans le texte du bouton, ceci devrait suffir :
Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = Range("AW3").value
Range("D6").Select '(j'ai mis ça pour désélectionner le bouton !)
End Sub
avec un .value derrière la référence du range bien que ce soit la
propriété par défaut
J'ai testé ; cela fonctionne effectivement très bien.
Pour revenir à mon "pb" initial (car de mon côté, je continue de
chercher...) : quand on a une "Private Sub Worksheet_Change", qu'est ce
qui se passe "concrétement" lorsqu'on saisie une valeur dans la feuille
? Autrement dit, à partir de quel "état" cette procédure est-elle
activée ?
JP
--
Philippe.R
"j-pascal" <nospam-j-pascal@free.fr> a écrit dans le message de
news:eWehCyJ0HHA.3536@TK2MSFTNGP06.phx.gbl...
Bonsoir,
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de
news: %23Iid3iG0HHA.1204@TK2MSFTNGP03.phx.gbl...
Re,
Je vois, du moins je l'espère ;o))
Puisqu'il s'agit du résultat d'un calcul, tente d'ajouter encore
l'instruction calculate avant le doevents
Selection.End(xlDown).offset(1, 0).Select
End If
End If
calculate
doevents
End Sub
Servir !
"a priori" ça ne fonctionne pas ;-(
J'ai fait un essai en mettant les messages "Liste Ok" et "A Trier"
dans une cellule ("AW3")
(qui se change bien en "Liste Ok" après un tri effectué à partir du
bouton (98) ; mais le texte ne se modifie pas sur le bouton !
If Range("D6") = " >>>" Then
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = Range("AW3")
Range("D6").Select '(j'ai mis ça pour désélectionner le
bouton !)
Else
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = Range("AW3")
Range("D6").Select
End If
Je suis un peu perplexe !
JP
Philippe.R
"j-pascal" <nospam-j-pascal@free.fr> a écrit dans le message de
news:e%23$SN1D0HHA.2484@TK2MSFTNGP06.phx.gbl...
Re Philippe,
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de
news: eN6ydoC0HHA.3916@TK2MSFTNGP02.phx.gbl...
Re j-pascal,
2 questions encore :
le tri se fait bien dans la feuille qui contiens le Private Sub
Worksheet_Change(ByVal Target As Range) ?
Oui, mais le code du Tri est dans un module "normal" (pas dans le
module de Feuil)
où se trouve l'instruction de passage à "" de D6 ?
La cellule D6 = SI(SOMME(PlageTestTri)=0;"";" >>>") (le bouton se
trouve dans la cellule E6 et en fonction du résultat, j'ai une mise
en forme conditionnelle qui met le motif de la cellule en rouge ce
qui "invite" l'utilisateur à Trier !)
PlageTestTri contient une formule qui teste la colonne de Noms. Si
le nom du dessus est ">" à celui de la ligne testée, la formule
renvoit un "1". Si le contenu de la colonne est supérieur à 0 cela
signifie que la plage doit être triée.
Je sais, c'est un peu tordu, mais ça marche bien (sans recours à une
macro) ;-)
Essaie toujours de glisser l'instruction "doevents" en fin de sub ;
comme ceci :
Selection.End(xlDown).offset(1, 0).Select
End If
End If
doevents
End Sub
histoire de forcer l'exécution du code évenementiel.
Désolé, ça ne fonctionne pas ;-(
JP
--
Philippe.R
"j-pascal" <nospam-j-pascal@free.fr> a écrit dans le message de
news:O7KcqAC0HHA.5764@TK2MSFTNGP03.phx.gbl...
Bonjour Philippe,
Désolé, j'avais mis le code sur un autre fil (2 sujets liés),
voici le code en question :
'-------------(début code Tri) ----------------------------
Sub TriPlageAtrier()
If Range("AX6") = "DOUBLON" Then
MsgBox "Veuillez éliminer le(s) doublon(s) avant
d'effectuer le tri
!"
Exit Sub
Else
If Range("AW6") <> "TRI" Then
MsgBox "La liste est déjà triée !"
Exit Sub
Else
Range("PlageAtrier").Select 'B422:AZ801
Selection.Sort Key1:=Range("C9"), Order1:=xlAscending,
Header:=xlGuess _
, OrderCustom:=1, MatchCase:úlse,
Orientation:=xlTopToBottom,
_
DataOption1:=xlSortNormal
Range("C9").Select
Selection.End(xlDown).offset(1, 0).Select
End If
End If
End Sub
'----------------------(fin code Tri)---------------------------
@+ ?
JP
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de
news: e4zTo8A0HHA.600@TK2MSFTNGP05.phx.gbl...
Bonjour,
Voici ce que je lit comme instructions dans le code que tu
fournis :
Private Sub Worksheet_Change(ByVal Target As Range)
'Lorsque un contenu change dans une cellule quelconque de la
feuille
If Range("D6") = " >>>" Then '2
espaces
Si la cellule D6 contient la chaîne " >>>"
ActiveSheet.Shapes("Button 98").Select
sélectionne le bouton n°98
Selection.Characters.Text = "TRIER ici"
inscrit sur ce bouton le texte "TRIER ici"
Range("D6").Select
sélectionne la cellule D6
Else
sinon
ActiveSheet.Shapes("Button 98").Select
sélectionne le bouton n°98
Selection.Characters.Text = "Liste Ok"
inscrit sur ce bouton le texte "Liste Ok"
Range("D6").Select
sélectionne la cellule D6
End If
End Sub
A aucun moment l'instruction de tri ne figure, d'où ma question
car je suppose qu'une macro est affectée au bouton.
--
Philippe.R
"j-pascal" <nospam-j-pascal@free.fr> a écrit dans le message de
news:ue5f$UozHHA.3940@TK2MSFTNGP05.phx.gbl...
Bonjour Philippe,
Le tri s'effectue si la cellule "D6" comprend le signe " >>>"
(situé juste à gauche du bouton de TRI) ... :
--------------------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("D6") = " >>>" Then '2
espaces
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "TRIER ici"
Range("D6").Select
Else
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "Liste Ok"
Range("D6").Select
End If
End Sub
----------------------------------------------------------------
JP
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message
de news: %23HgqH9izHHA.2484@TK2MSFTNGP06.phx.gbl...
Bonsoir j-pascal,
Comment ton bouton lance t il le tri, je ne vois aucune
instruction correspondant dns le code fourni ?
En revanche, actuellemnt, le chnagement d'intitulé de ton
bouton est lié à un changement de valeur dans la feuille
--
Philippe.R
"j-pascal" <nospam-j-pascal@free.fr> a écrit dans le message de
news:%23yxcg2izHHA.5772@TK2MSFTNGP02.phx.gbl...
Bonsoir,
Si j'effectue un tri en appuyant sur le bouton 98 car la
valeur de D6 = "
", le tri s'effectue et donc la valeur de D6 passe à "",
mais le texte
"TRIER ici" reste sur le bouton alors que je devrais avoir
"Liste Ok" !
"Liste Ok" s'affiche bien si j'effectue une saisie dans ma
liste ...
Voici le code :
--------------------------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("D6") = " >>>" Then '2 espaces
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "TRIER ici"
Range("D6").Select
Else
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "Liste Ok"
Range("D6").Select
End If
End Sub
--------------------------------------------------------------------
Merci d'avance pour vos lumières ...
--
Cordialement @+
JP
Bonjour Philippe,
Juste pour dire que pour la "détection" de commentaire(s), c'est résolu.
Merci vraiment pour l'aide précieuse que tu m'as apportée tout au long de
ce fil. Il ne me reste plus qu'à étudier tout ça de près ...
Cordialement
JP
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de news:
%Re j-pascal,Quelle persévérance !!
J'aime pas qu'on me résiste ;o)))))
Les procédures de feuille, du type Worksheet_qqch(), dont
Worksheet_Change() fait partie sont des procédures évenementielles, qui
permettent de réaliser une action lors de la réalisation d'un évènement
donné.
Dans le cas présent, avec Worksheet_Change(), c'est le changement d'une
valeur dans la feuille qui décenchera la procédure.
Ces procédures sont inhibées par l'instruction
application.enableeventsúlse et rétablies par
application.enableevents=true
Je joins un petit classeur exemple avec une macro de tri lancée par le
bouton
Sub triplage()
'MPFE le 28/07/2007
Application.EnableEvents = False
Range("G1:G23").Select
Selection.Sort Key1:=Range("G1"), Order1:=xlAscending,
Header:=xlGuess, _
OrderCustom:=1, MatchCase:úlse, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Application.EnableEvents = True
[a1] = 2
DoEvents
End Sub
et une macro évenementielle
Private Sub Worksheet_Change(ByVal Target As Range)
'MPFE le 28/07/2007
'La première ligne de commande permet de faire passer la cellule a1 à 1
If Not Intersect(Target, Range("g1:g23")) Is Nothing Then [a1] = 1
'la suite reprend la logique de ton classeur
ActiveSheet.Shapes("Button 1").Select
Selection.Characters.Text = Range("A6").Value
Range("a1").Select
End Sub
permettant de simuler ce qui devrait se passer normalement (à ce que j'ai
pigé)
http://cjoint.com/?hCsXLUjFEj
--
Philippe.R
"j-pascal" a écrit dans le message de
news:%Bonjour Philippe,
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de news:
%Bonjour j-pascal,
En relisant le fil, et les messages de LSteph, il serait bon de
remplacer doevents par application.enableevents=true en fin de
procédure de tri :
Selection.End(xlDown).offset(1, 0).Select
End If
End If
application.enableevents=true
calculate
End Sub
Malheureusement, ça ne règle pas le pb. La seule chose qui fasse passer
l'affichage à "Liste Ok" , c'est une saisie dans la feuille (y compris
pas sélection via menu déroulant).Et dans le code de la feuille, la condition étant évaluée en AW3 dont
on récupère la valeur dans le texte du bouton, ceci devrait suffir :
Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = Range("AW3").value
Range("D6").Select '(j'ai mis ça pour désélectionner le bouton !)
End Sub
avec un .value derrière la référence du range bien que ce soit la
propriété par défaut
J'ai testé ; cela fonctionne effectivement très bien.
Pour revenir à mon "pb" initial (car de mon côté, je continue de
chercher...) : quand on a une "Private Sub Worksheet_Change", qu'est ce
qui se passe "concrétement" lorsqu'on saisie une valeur dans la feuille
? Autrement dit, à partir de quel "état" cette procédure est-elle
activée ?
JP--
Philippe.R
"j-pascal" a écrit dans le message de
news:Bonsoir,
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de
news: %Re,
Je vois, du moins je l'espère ;o))
Puisqu'il s'agit du résultat d'un calcul, tente d'ajouter encore
l'instruction calculate avant le doevents
Selection.End(xlDown).offset(1, 0).Select
End If
End If
calculate
doevents
End Sub
Servir !
"a priori" ça ne fonctionne pas ;-(
J'ai fait un essai en mettant les messages "Liste Ok" et "A Trier"
dans une cellule ("AW3")
(qui se change bien en "Liste Ok" après un tri effectué à partir du
bouton (98) ; mais le texte ne se modifie pas sur le bouton !
If Range("D6") = " >>>" Then
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = Range("AW3")
Range("D6").Select '(j'ai mis ça pour désélectionner le
bouton !)
Else
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = Range("AW3")
Range("D6").Select
End If
Je suis un peu perplexe !
JPPhilippe.R
"j-pascal" a écrit dans le message de
news:e%23$Re Philippe,
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de
news:Re j-pascal,
2 questions encore :
le tri se fait bien dans la feuille qui contiens le Private Sub
Worksheet_Change(ByVal Target As Range) ?
Oui, mais le code du Tri est dans un module "normal" (pas dans le
module de Feuil)où se trouve l'instruction de passage à "" de D6 ?
La cellule D6 = SI(SOMME(PlageTestTri)=0;"";" >>>") (le bouton se
trouve dans la cellule E6 et en fonction du résultat, j'ai une mise
en forme conditionnelle qui met le motif de la cellule en rouge ce
qui "invite" l'utilisateur à Trier !)
PlageTestTri contient une formule qui teste la colonne de Noms. Si
le nom du dessus est ">" à celui de la ligne testée, la formule
renvoit un "1". Si le contenu de la colonne est supérieur à 0 cela
signifie que la plage doit être triée.
Je sais, c'est un peu tordu, mais ça marche bien (sans recours à une
macro) ;-)Essaie toujours de glisser l'instruction "doevents" en fin de sub ;
comme ceci :
Selection.End(xlDown).offset(1, 0).Select
End If
End If
doevents
End Sub
histoire de forcer l'exécution du code évenementiel.
Désolé, ça ne fonctionne pas ;-(
JP--
Philippe.R
"j-pascal" a écrit dans le message de
news:Bonjour Philippe,
Désolé, j'avais mis le code sur un autre fil (2 sujets liés),
voici le code en question :
'-------------(début code Tri) ----------------------------
Sub TriPlageAtrier()
If Range("AX6") = "DOUBLON" Then
MsgBox "Veuillez éliminer le(s) doublon(s) avant
d'effectuer le tri
!"
Exit Sub
Else
If Range("AW6") <> "TRI" Then
MsgBox "La liste est déjà triée !"
Exit Sub
Else
Range("PlageAtrier").Select 'B422:AZ801
Selection.Sort Key1:=Range("C9"), Order1:=xlAscending,
Header:=xlGuess _
, OrderCustom:=1, MatchCase:úlse,
Orientation:=xlTopToBottom,
_
DataOption1:=xlSortNormal
Range("C9").Select
Selection.End(xlDown).offset(1, 0).Select
End If
End If
End Sub
'----------------------(fin code Tri)---------------------------
@+ ?
JP
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message de
news:Bonjour,
Voici ce que je lit comme instructions dans le code que tu
fournis :Private Sub Worksheet_Change(ByVal Target As Range)
'Lorsque un contenu change dans une cellule quelconque de la
feuilleIf Range("D6") = " >>>" Then '2
espaces
Si la cellule D6 contient la chaîne " >>>"ActiveSheet.Shapes("Button 98").Select
sélectionne le bouton n°98Selection.Characters.Text = "TRIER ici"
inscrit sur ce bouton le texte "TRIER ici"Range("D6").Select
sélectionne la cellule D6Else
sinonActiveSheet.Shapes("Button 98").Select
sélectionne le bouton n°98Selection.Characters.Text = "Liste Ok"
inscrit sur ce bouton le texte "Liste Ok"Range("D6").Select
sélectionne la cellule D6End If
End Sub
A aucun moment l'instruction de tri ne figure, d'où ma question
car je suppose qu'une macro est affectée au bouton.
--
Philippe.R
"j-pascal" a écrit dans le message de
news:ue5f$Bonjour Philippe,
Le tri s'effectue si la cellule "D6" comprend le signe " >>>"
(situé juste à gauche du bouton de TRI) ... :
--------------------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("D6") = " >>>" Then '2
espaces
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "TRIER ici"
Range("D6").Select
Else
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "Liste Ok"
Range("D6").Select
End If
End Sub
----------------------------------------------------------------
JP
"Philippe.R" <AS_rauphil_at_wanadoo.fr> a écrit dans le message
de news: %Bonsoir j-pascal,
Comment ton bouton lance t il le tri, je ne vois aucune
instruction correspondant dns le code fourni ?
En revanche, actuellemnt, le chnagement d'intitulé de ton
bouton est lié à un changement de valeur dans la feuille
--
Philippe.R
"j-pascal" a écrit dans le message de
news:%Bonsoir,
Si j'effectue un tri en appuyant sur le bouton 98 car la
valeur de D6 = "", le tri s'effectue et donc la valeur de D6 passe à "",
mais le texte
"TRIER ici" reste sur le bouton alors que je devrais avoir
"Liste Ok" !
"Liste Ok" s'affiche bien si j'effectue une saisie dans ma
liste ...
Voici le code :
--------------------------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("D6") = " >>>" Then '2 espaces
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "TRIER ici"
Range("D6").Select
Else
ActiveSheet.Shapes("Button 98").Select
Selection.Characters.Text = "Liste Ok"
Range("D6").Select
End If
End Sub
--------------------------------------------------------------------
Merci d'avance pour vos lumières ...
--
Cordialement @+
JP