Menu

Sub RecopiePlage() [Résolu]

chrisnapoli - 1 juin 2018 à 22:51 - Dernière réponse : yg_be 6075 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 27 juillet 2018 Dernière intervention
- 14 juin 2018 à 09:25
Bonjour,
je n ai toujours pas de solutions pour résoudre ce problème je voudrais savoir pourquoi seule la première des conditions marche dans ce code

Option Compare Text
Private Sub linkrg(target As Range, source As Range)
source.Copy
target.Parent.Activate
target.Select
target.Parent.Paste link:=True
Application.CutCopyMode = False
End Sub
Sub RecopiePlage()

Application.ScreenUpdating = True

If [AX101] = "Ok" Then
Call linkrg([CK11:CS51], [BA101:BI141])
ElseIf [AX144] = "Ok" Then
Call linkrg([CK11:CS51], [BA144:BI184])
ElseIf [AX187] = "Ok" Then
Call linkrg([CK11:CS51], [BA187:BI227])
ElseIf [AX230] = "Ok" Then
Call linkrg([CK11:CS51], [BA230:BI270])
ElseIf [AX273] = "Ok" Then
Call linkrg([CK11:CS51], [BA273:BI313])
ElseIf [BZ101] = "Ok" Then
Call linkrg([DB11:DJ51], [BO101:BW141])
ElseIf [BZ144] = "Ok" Then
Call linkrg([DB11:DJ51], [BO144:BW184])
ElseIf [BZ187] = "Ok" Then
Call linkrg([DB11:DJ51], [BO187:BW227])
ElseIf [BZ230] = "Ok" Then
Call linkrg([DB11:DJ51], [BO230:BW270])
ElseIf [BZ273] = "Ok" Then
Call linkrg([DB11:DJ51], [BO273:BW313])
ElseIf [AX316] = "Ok" Then
Call linkrg([CK57:CS97], [BA316:BI356])
ElseIf [AX359] = "Ok" Then
Call linkrg([CK57:CS97], [BA359:BI399])
ElseIf [AX402] = "Ok" Then
Call linkrg([CK57:CS97], [BA402:BI442])
ElseIf [AX445] = "Ok" Then
Call linkrg([CK57:CS97], [BA445:BI485])
ElseIf [AX488] = "Ok" Then
Call linkrg([CK57:CS97], [BA488:BI528])
ElseIf [BZ316] = "Ok" Then
Call linkrg([DB57:DJ97], [BO316:BW356])
ElseIf [BZ359] = "Ok" Then
Call linkrg([DB57:DJ97], [BO359:BW399])
ElseIf [BZ402] = "Ok" Then
Call linkrg([DB57:DJ97], [BO402:BW442])
ElseIf [BZ445] = "Ok" Then
Call linkrg([DB57:DJ97], [BO445:BW485])
ElseIf [BZ488] = "Ok" Then
Call linkrg([DB57:DJ97], [BO488:BW528])
End If
End Sub









Afficher la suite 

Votre réponse

56 réponses

yg_be 6075 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 27 juillet 2018 Dernière intervention - 1 juin 2018 à 23:44
0
Merci
bonsoir, peut-être en remplacant
ElseIf [BZ101] = "Ok" Then

par
End if
If [BZ101] = "Ok" Then
yg_be 6075 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 27 juillet 2018 Dernière intervention > Chrisnapoli - 7 juin 2018 à 09:25
as-tu déjà une procédure "change" pour cette feuille?
bonjour
je n 'ai que ce code dans cette feuille

Option Explicit


Sub Worksheet_SelectionChange(ByVal target As Range)
Dim Lig As Byte, Col As Byte
If Not Application.Intersect(target, Range("CV12:CV51,CX12:CX51,CV58:CV97,CX58:CX97")) Is Nothing Then
Range("DP2") = target
End If
End Sub
yg_be 6075 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 27 juillet 2018 Dernière intervention > Chrisnapoli - 7 juin 2018 à 17:37
alors, à ajouter à la fin du module de cette feuille:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("AX101,AX144,AX187,AX230,AX273")) Is Nothing Then
    If [AX101] = "Ok" Then
        Call linkrg([CK11:CS51], [BA101:BI141])
    ElseIf [AX144] = "Ok" Then
        Call linkrg([CK11:CS51], [BA144:BI184])
    ElseIf [AX187] = "Ok" Then
        Call linkrg([CK11:CS51], [BA187:BI227])
    ElseIf [AX230] = "Ok" Then
        Call linkrg([CK11:CS51], [BA230:BI270])
    ElseIf [AX273] = "Ok" Then
        Call linkrg([CK11:CS51], [BA273:BI313])
    End If
ElseIf Not Application.Intersect(Target, Range("BZ101,BZ144,BZ187,BZ230,BZ273")) Is Nothing Then
    If [BZ101] = "Ok" Then
        Call linkrg([DB11:DJ51], [BO101:BW141])
    ElseIf [BZ144] = "Ok" Then
        Call linkrg([DB11:DJ51], [BO144:BW184])
    ElseIf [BZ187] = "Ok" Then
        Call linkrg([DB11:DJ51], [BO187:BW227])
    ElseIf [BZ230] = "Ok" Then
        Call linkrg([DB11:DJ51], [BO230:BW270])
    ElseIf [BZ273] = "Ok" Then
        Call linkrg([DB11:DJ51], [BO273:BW313])
    End If
ElseIf Not Application.Intersect(Target, Range("AX316,AX359,AX402,AX445,AX488")) Is Nothing Then
    If [AX316] = "Ok" Then
        Call linkrg([CK57:CS97], [BA316:BI356])
    ElseIf [AX359] = "Ok" Then
        Call linkrg([CK57:CS97], [BA359:BI399])
    ElseIf [AX402] = "Ok" Then
        Call linkrg([CK57:CS97], [BA402:BI442])
    ElseIf [AX445] = "Ok" Then
        Call linkrg([CK57:CS97], [BA445:BI485])
    ElseIf [AX488] = "Ok" Then
        Call linkrg([CK57:CS97], [BA488:BI528])
    End If
ElseIf Not Application.Intersect(Target, Range("BZ316,BZ359,BZ402,BZ445,BZ488")) Is Nothing Then
    If [BZ316] = "Ok" Then
        Call linkrg([DB57:DJ97], [BO316:BW356])
    ElseIf [BZ359] = "Ok" Then
        Call linkrg([DB57:DJ97], [BO359:BW399])
    ElseIf [BZ402] = "Ok" Then
        Call linkrg([DB57:DJ97], [BO402:BW442])
    ElseIf [BZ445] = "Ok" Then
        Call linkrg([DB57:DJ97], [BO445:BW485])
    ElseIf [BZ488] = "Ok" Then
        Call linkrg([DB57:DJ97], [BO488:BW528])
    End If
End If

End Sub
Private Sub linkrg(target As Range, source As Range) 
source.Copy 
target.Parent.Activate 
target.Select 
target.Parent.Paste link:=True 
Application.CutCopyMode = False 
End Sub 

si cela fonctionne, tu pourras supprimer le code que tu montres en #2, devenu inutile.
je l ai mis directement dans la feuille comme ceci
a la suite de ce qu il y avait alors que le code lui était dans un module faut il le laisser dans la feuille ou mettre ce code seul dans le module en remplacement de l autre????
Option Explicit


Sub Worksheet_SelectionChange(ByVal target As Range)
Dim Lig As Byte, Col As Byte
If Not Application.Intersect(target, Range("CV12:CV51,CX12:CX51,CV58:CV97,CX58:CX97")) Is Nothing Then
Range("DP2") = target
End If
End Sub
Private Sub Worksheet_Change(ByVal target As Range)
If Not Application.Intersect(target, Range("AX101,AX144,AX187,AX230,AX273")) Is Nothing Then
If [AX101] = "Ok" Then
Call linkrg([CK11:CS51], [BA101:BI141])
ElseIf [AX144] = "Ok" Then
Call linkrg([CK11:CS51], [BA144:BI184])
ElseIf [AX187] = "Ok" Then
Call linkrg([CK11:CS51], [BA187:BI227])
ElseIf [AX230] = "Ok" Then
Call linkrg([CK11:CS51], [BA230:BI270])
ElseIf [AX273] = "Ok" Then
Call linkrg([CK11:CS51], [BA273:BI313])
End If
ElseIf Not Application.Intersect(target, Range("BZ101,BZ144,BZ187,BZ230,BZ273")) Is Nothing Then
If [BZ101] = "Ok" Then
Call linkrg([DB11:DJ51], [BO101:BW141])
ElseIf [BZ144] = "Ok" Then
Call linkrg([DB11:DJ51], [BO144:BW184])
ElseIf [BZ187] = "Ok" Then
Call linkrg([DB11:DJ51], [BO187:BW227])
ElseIf [BZ230] = "Ok" Then
Call linkrg([DB11:DJ51], [BO230:BW270])
ElseIf [BZ273] = "Ok" Then
Call linkrg([DB11:DJ51], [BO273:BW313])
End If
ElseIf Not Application.Intersect(target, Range("AX316,AX359,AX402,AX445,AX488")) Is Nothing Then
If [AX316] = "Ok" Then
Call linkrg([CK57:CS97], [BA316:BI356])
ElseIf [AX359] = "Ok" Then
Call linkrg([CK57:CS97], [BA359:BI399])
ElseIf [AX402] = "Ok" Then
Call linkrg([CK57:CS97], [BA402:BI442])
ElseIf [AX445] = "Ok" Then
Call linkrg([CK57:CS97], [BA445:BI485])
ElseIf [AX488] = "Ok" Then
Call linkrg([CK57:CS97], [BA488:BI528])
End If
ElseIf Not Application.Intersect(target, Range("BZ316,BZ359,BZ402,BZ445,BZ488")) Is Nothing Then
If [BZ316] = "Ok" Then
Call linkrg([DB57:DJ97], [BO316:BW356])
ElseIf [BZ359] = "Ok" Then
Call linkrg([DB57:DJ97], [BO359:BW399])
ElseIf [BZ402] = "Ok" Then
Call linkrg([DB57:DJ97], [BO402:BW442])
ElseIf [BZ445] = "Ok" Then
Call linkrg([DB57:DJ97], [BO445:BW485])
ElseIf [BZ488] = "Ok" Then
Call linkrg([DB57:DJ97], [BO488:BW528])
End If
End If

End Sub
Private Sub linkrg(target As Range, source As Range)
source.Copy
target.Parent.Activate
target.Select
target.Parent.Paste link:=True
Application.CutCopyMode = False
End Sub
yg_be 6075 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 27 juillet 2018 Dernière intervention > Chrisnapoli - 7 juin 2018 à 19:04
le nouveau code doit aller dans la feuille, et, si cela fonctionne, tu pourras supprimer l'ancien code que tu montres en #2, devenu inutile (ou à garder en souvenir, ou pour si jamais).
Commenter la réponse de yg_be
Chrisnapoli - 11 juin 2018 à 11:14
0
Merci
Bbonjour
j ai mis le code ainsi dans la feuille le graphe fonctionne en temps réel les OK changent de cellules au bon timing mais le pas des changements ne se répercutent pas sur les 2 graphes ????
peut être faut il linscrire a un autre emplacement????

Option Explicit


Sub Worksheet_SelectionChange(ByVal target As Range)
Dim Lig As Byte, Col As Byte
If Not Application.Intersect(target, Range("CV12:CV51,CX12:CX51,CV58:CV97,CX58:CX97")) Is Nothing Then
Range("DP2") = target
End If
End Sub



Private Sub Worksheet_Change(ByVal target As Range)
If Not Application.Intersect(target, Range("AX101,AX144,AX187,AX230,AX273")) Is Nothing Then
If [AX101] = "Ok" Then
Call linkrg([CK11:CS51], [BA101:BI141])
ElseIf [AX144] = "Ok" Then
Call linkrg([CK11:CS51], [BA144:BI184])
ElseIf [AX187] = "Ok" Then
Call linkrg([CK11:CS51], [BA187:BI227])
ElseIf [AX230] = "Ok" Then
Call linkrg([CK11:CS51], [BA230:BI270])
ElseIf [AX273] = "Ok" Then
Call linkrg([CK11:CS51], [BA273:BI313])
End If
ElseIf Not Application.Intersect(target, Range("BZ101,BZ144,BZ187,BZ230,BZ273")) Is Nothing Then
If [BZ101] = "Ok" Then
Call linkrg([DB11:DJ51], [BO101:BW141])
ElseIf [BZ144] = "Ok" Then

etc......
yg_be 6075 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 27 juillet 2018 Dernière intervention - 11 juin 2018 à 16:38
qu'est-ce qui fait changer les "ok"?
cela fonctionne-t-'il si tu changes les "ok" à la main?
Commenter la réponse de Chrisnapoli
Chrisnapoli - 11 juin 2018 à 18:35
0
Merci
ce qui fait changer les OK ce sont ces formules ex sur un cote

=SI(BY101>0,0175;"OK";"")
=SI(ET(BY144>0,014;BY144<=0,0175);"OK";"")
=SI(ET(BY187>0,009;BY187<=0,014);"OK";"")
=SI(ET(BY230>0,005;BY230<=0,009);"OK";"")
=SI(ET(BY273>=0;BY273<=0,005);"OK";"")

Chaque BY correspond a un MAX d'une plage

=MAX(BO102:BW141)
=MAX(BO145:BW184)
=MAX(BO188:BW227)
=MAX(BO231:BW270)
=MAX(BO274:BW313) ce qui correspond pour ce cote a 5 barres de progressions comme ceci

0,25% 0,50% 0,75% 1,00% 1,25% 1,50% 1,75% 2,00% >2,00%

0,20% 0,40% 0,60% -0,80% 1,00% 1,20% 1,40% 1,60% >1,60%

0,15% 0,30% 0,45% 0,60% 0,75% 0,90% 1,05% 1,20% >1,20%

0,10% 0,20% 0,30% 0,40% 0,50% 0,60% 0,70% 0,80% >0,80%

0,05% 0,10% 0,15% 0,20% 0,25% 0,30% 0,35% 0,40% >0,40%

le OK change chaque fois que une des cotations dépassent la condition inscrite dans les cellules BY(pour ce cote dans notre exemple)
il y a deux graphes chaque graphe a un cote positif et un cote négatif il y a au total 20 plages qui permettent de rendre les 2 graphes visiblent a l ecran beaucoup plus animés
puisque selon le max il passe de un pas de 0.05% au minimum a la plus grande progression qui est de 0.25% en 0.25% les formules dans les plages sont de ce type
exemple pour la plus petite progression de 0.05en 0.05

0,05% 0,10% 0,15% 0,20% 0,25% 0,30% 0,35% 0,40% >0,40%


=SIERREUR(SI(ET(BC12>=0;BC12<=0,0005);BC12;"");"")
=SIERREUR(SI(ET(BC12>0,0005;BC12<=0,001);BC12;"");"")
=SIERREUR(SI(ET(BC12>0,001;BC12<=0,0015);BC12;"");"")
=SIERREUR(SI(ET(BC12>0,0015;BC12<=0,002);BC12;"");"")
=SIERREUR(SI(ET(BC12>0,002;BC12<=0,0025);BC12;"");"")
=SIERREUR(SI(ET(BC12>0,0025;BC12<=0,003);BC12;"");"")
=SIERREUR(SI(ET(BC12>0,003;BC12<=0,0035);BC12;"");"")
=SIERREUR(SI(ET(BC12>0,0035;BC12<=0,004);BC12;"");"")
=SIERREUR(SI(BC12>0,004;BC12;"");"")
il ya 360 formules de ce type par plage puisque cela correspond aux 40 valeurs du Cac40 soit 360*5*4=7200
yg_be 6075 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 27 juillet 2018 Dernière intervention - 11 juin 2018 à 20:04
si tout cela change quand les cotations changent, je pense qu'il vaut mieux retourner à la solution en #2, et faire
call RecopiePlage()
juste après avoir recopié les cotations.
Commenter la réponse de Chrisnapoli
Chrisnapoli - 11 juin 2018 à 20:47
0
Merci
j ai mis le code comme ceci dans la feuille a la suite du premier code quand je mets les deux parenthèses après call RecopiePlage elles s'effacent d'elles même j ai aussi le message suivant qui apparaît quand j essaye d'activer le graphe
seuls les commentaires peuvent apparaître après end sub end function ou end property
je ne sais pas si c'est pas mieux de trouver pourquoi ne marche pas le code d'avant parceque la procédure égale est parfaitement respectée, le graphe tourne en temps reel c'est seulement au changement des OK que quelque chose cloche moi je crois que c'est dans l écriture du code parce que le début du code ressemble étrangement a celui qui le précède ;hors celui qui le précède ne fonctionne que si il y a action sur les cellules et dans notre cas on a pas d'action sur les cellules c'est elles qui changent elles même

Private Sub Worksheet_Change(ByVal target As Range)
If Not Application.Intersect(target, Range("AX101,AX144,AX187,AX230,AX273")) Is Nothing Then
et
Sub Worksheet_SelectionChange(ByVal target As Range)
Dim Lig As Byte, Col As Byte
If Not Application.Intersect(target, Range("CV12:CV51,CX12:CX51,CV58:CV97,CX58:CX97")) Is Nothing Then
Range("DP2") = target le code de #2 je l ai inscrit ainsi

Option Explicit
Sub Worksheet_SelectionChange(ByVal target As Range)
Dim Lig As Byte, Col As Byte
If Not Application.Intersect(target, Range("CV12:CV51,CX12:CX51,CV58:CV97,CX58:CX97")) Is Nothing Then
Range("DP2") = target
End If
End Sub
Option Compare Text

Private Sub linkrg(target As Range, source As Range)
source.Copy
target.Parent.Activate
target.Select
target.Parent.Paste link:=True
Application.CutCopyMode = False
End Sub
Sub RecopiePlage()

Application.ScreenUpdating = True


If [AX101] = "Ok" Then
Call linkrg([CK11:CS51], [BA101:BI141])
ElseIf [AX144] = "Ok" Then
Call linkrg([CK11:CS51], [BA144:BI184])
ElseIf [AX187] = "Ok" Then
Call linkrg([CK11:CS51], [BA187:BI227])
ElseIf [AX230] = "Ok" Then
Call linkrg([CK11:CS51], [BA230:BI270])
ElseIf [AX273] = "Ok" Then
Call linkrg([CK11:CS51], [BA273:BI313])
End If
If [BZ101] = "Ok" Then
Call linkrg([DB11:DJ51], [BO101:BW141])
ElseIf [BZ144] = "Ok" Then
Call linkrg([DB11:DJ51], [BO144:BW184])
ElseIf [BZ187] = "Ok" Then
Call linkrg([DB11:DJ51], [BO187:BW227])
ElseIf [BZ230] = "Ok" Then
Call linkrg([DB11:DJ51], [BO230:BW270])
ElseIf [BZ273] = "Ok" Then
Call linkrg([DB11:DJ51], [BO273:BW313])
End If
If [AX316] = "Ok" Then
Call linkrg([CK57:CS97], [BA316:BI356])
ElseIf [AX359] = "Ok" Then
Call linkrg([CK57:CS97], [BA359:BI399])
ElseIf [AX402] = "Ok" Then
Call linkrg([CK57:CS97], [BA402:BI442])
ElseIf [AX445] = "Ok" Then
Call linkrg([CK57:CS97], [BA445:BI485])
ElseIf [AX488] = "Ok" Then
Call linkrg([CK57:CS97], [BA488:BI528])
End If
If [BZ316] = "Ok" Then
Call linkrg([DB57:DJ97], [BO316:BW356])
ElseIf [BZ359] = "Ok" Then
Call linkrg([DB57:DJ97], [BO359:BW399])
ElseIf [BZ402] = "Ok" Then
Call linkrg([DB57:DJ97], [BO402:BW442])
ElseIf [BZ445] = "Ok" Then
Call linkrg([DB57:DJ97], [BO445:BW485])
ElseIf [BZ488] = "Ok" Then
Call linkrg([DB57:DJ97], [BO488:BW528])
Call RecopiePlage
End If
End Sub
Option Compare Text
Private Sub linkrg(target As Range, source As Range)
source.Copy
target.Parent.Activate
target.Select
target.Parent.Paste link:=True
Application.CutCopyMode = False
End Sub
Sub RecopiePlage()

Application.ScreenUpdating = True


If [AX101] = "Ok" Then
Call linkrg([CK11:CS51], [BA101:BI141])
ElseIf [AX144] = "Ok" Then
Call linkrg([CK11:CS51], [BA144:BI184])
ElseIf [AX187] = "Ok" Then
Call linkrg([CK11:CS51], [BA187:BI227])
ElseIf [AX230] = "Ok" Then
Call linkrg([CK11:CS51], [BA230:BI270])
ElseIf [AX273] = "Ok" Then
Call linkrg([CK11:CS51], [BA273:BI313])
End If
If [BZ101] = "Ok" Then
Call linkrg([DB11:DJ51], [BO101:BW141])
ElseIf [BZ144] = "Ok" Then
Call linkrg([DB11:DJ51], [BO144:BW184])
ElseIf [BZ187] = "Ok" Then
Call linkrg([DB11:DJ51], [BO187:BW227])
ElseIf [BZ230] = "Ok" Then
Call linkrg([DB11:DJ51], [BO230:BW270])
ElseIf [BZ273] = "Ok" Then
Call linkrg([DB11:DJ51], [BO273:BW313])
End If
If [AX316] = "Ok" Then
Call linkrg([CK57:CS97], [BA316:BI356])
ElseIf [AX359] = "Ok" Then
Call linkrg([CK57:CS97], [BA359:BI399])
ElseIf [AX402] = "Ok" Then
Call linkrg([CK57:CS97], [BA402:BI442])
ElseIf [AX445] = "Ok" Then
Call linkrg([CK57:CS97], [BA445:BI485])
ElseIf [AX488] = "Ok" Then
Call linkrg([CK57:CS97], [BA488:BI528])
End If
If [BZ316] = "Ok" Then
Call linkrg([DB57:DJ97], [BO316:BW356])
ElseIf [BZ359] = "Ok" Then
Call linkrg([DB57:DJ97], [BO359:BW399])
ElseIf [BZ402] = "Ok" Then
Call linkrg([DB57:DJ97], [BO402:BW442])
ElseIf [BZ445] = "Ok" Then
Call linkrg([DB57:DJ97], [BO445:BW485])
ElseIf [BZ488] = "Ok" Then
Call linkrg([DB57:DJ97], [BO488:BW528])

End If
End Sub
yg_be 6075 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 27 juillet 2018 Dernière intervention > Chrisnapoli - 11 juin 2018 à 21:54
je pense qu'il faut ajouter
call recopieplage()
dans le timer.
en fait étant donne que cela marche parfaitement avec le Bouton ,n 'est il pas possible d’écrire
si une seule des cellules (BZ101;BZ144;BZ187;BZ230;BZ273;BZ316;BZ359;BZ402;BZ445;BZ448;AX101;AX144,AX187;AX230;AX273;AX316;AX359;AX402;AX445;AX448 contenant les OK changent ;alors actionner la macro RecopiePlage
yg_be 6075 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 27 juillet 2018 Dernière intervention > chrisnapoli - 11 juin 2018 à 22:13
je pense que non, car ces cellules ne changent pas, leur contenus étant des formules. c'est ce qu'on avait fait en #15, mais Worksheet_Change ne fonctionnait pas, car les cellules ne changeaient pas.
moi je pense quil faut ecrire un code disant chaque fois qu une des 10 cellules de la plage () passe de OK a ("");OU chaque fois qu'une des 10 cellules de la plagle () , passe de OK a ("") ,alors exécuter la macro recopiePlage
Commenter la réponse de Chrisnapoli
Chrisnapoli - 11 juin 2018 à 21:13
0
Merci
je viens de mettre le code dans un module a part et la macro s'actionne parfaitement-mais par bouton j ai enlevé call recopieplage() donc c'est qu on est pas du tout loin de la vérité maintenant il faut trouver un moyen que le changement de OK se fasse seul
de plus lorsque j ai essaye il y avait un résultat qui correspondait parfaitement a la réalité 2 plages étaient complètement différente d'un cote et de l autre mais ça reflétait exactement l équivalent de ce que donnait les OK
yg_be 6075 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 27 juillet 2018 Dernière intervention - 11 juin 2018 à 22:13
je pense qu'il faut ajouter
call recopieplage()
dans le timer.
Commenter la réponse de Chrisnapoli
chrisnapoli - 11 juin 2018 à 22:20
0
Merci
cela ne servirait a rien puisque le timer est a part de la partie graphique je l ai désolidarise puisque il m empêche de pouvoir travailler sur le fichier
de plus ces deux graphiques ou je veux faire changer le pas de progression me servent uniquement pour modèle afin que le develloper qui me transcrit ma logique sur le web en java script comprenne exactement ce que je fait
Commenter la réponse de chrisnapoli
chrisnapoli - 12 juin 2018 à 19:14
0
Merci
Bonjour
toujours pas de solution ?? le graphe a tourne toute la journée la macro marche mais il faut l actionner ne pourrait on pas ecrire un code qui dise que lorsque un OK est dans une des 20 cellules ; alors copier en mode valeur ce OK sur la cellule directement a droite pour le cote positif et directement a gauche pour le cote negatif puis un autre code qui dit des que le contenue d 'une des 20 cellules ou est inscrit OK est egal a ("") ; actionner la macro recopie plage autant de fois qu il y a de changements ..???

les OK actuels du cote positifs sont en BY101; BY144;BY187;BY230;BY273;BY316.BY359;BY402;BY445,

les OK actuels du cote négatif en AX101; AX144;AX187;AX230;AX273;AX316.AX359;AX402;AX445
yg_be 6075 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 27 juillet 2018 Dernière intervention - 12 juin 2018 à 19:32
on pourrait sans doute écrire un code qui fait ce que tu décris (je n'ai pas tout compris), MAIS le soucis, c'est de déclencher l’exécution de ce code.
c'est pour cela que je pense au timer, qui, j'imagine, vient modifier les valeurs des cellules de départ. j'imagine mal? qu'est-ce qui provoque un changement dans les valeurs retournées par les formules?
Commenter la réponse de chrisnapoli
chrisnapoli - 12 juin 2018 à 20:34
0
Merci
le timer est étranger complètement a cette procédure puisque on ne s'en sert pas pour ces 2 graphes

il faut dabord comprendre le systeme
a la base ce sont 2 graphiques a barres de progression identique mise a part que un donne les cotations par rapport au début de la séance et l autre par rapport a la veille
au depart j ai choisi par facilite de faire les barres avec un pas de 0.25 en 0.25 c'est a dire que la barre demarre a zero et s'arrete a 2.00% comme ceci
>-2,00% -2,00% -1,75% -1,50% -1,25% -1,00% -0,75% -0,50% -0,25% pour le negatif et
0,25% 0,50% 0,75% 1,00% 1,25% 1,50% 1,75% 2,00% >2,00%pour le positif
j ai par la suite décidé pour que les graphes soient plus animes d"ajouter 5 pas cela démarre en 0.05 puis en 0.10 puis en 0.15 puis en 0.20 et au final j arrive a l ancien graphe 0.25 pour que ce systeme fonctionne j ai créé les plages correspondantes a ces graphes chaque plage a les formules adaptes pour son pas pour que le systeme s actionne j ai sélectionné chaque plage pour avoir le Max qui est évidement le même dans chaque plage c'est le critère qui est inscrit dans la cellule ou viennent se mettre les OK qui font que les plages changent
exemple si je suis dans la plus petite plage qui part de 0 a 0.40%
je dit si le max de cette plage est supérieur ou égal a 0 et inférieur ou égal a 0.50 alors mettez moi OK dans la cellule
pour la deuxième barre je mets comme critère si le max est supérieur a 0.5% et inférieur ou égal a 0.9% alors mettez moi OK dans la cellule
pour la troisiem barre je mets comme critere si le max est supérieur a 0.9% et inferieur ou egal a 1.4% alors mettez moi OK dans la cellule
pour la quatrième barre je mets comme critère si le max est supérieur a1.4% et inférieur ou égal a 1.75% alors mettez moi OK dans la cellule
pour la cinquième barre( la derniere) je mets comme critère si le max est supérieur a 1.75% alors mettez moi OK dans la cellule
pour le négatif c'est la même chose en inversant les signes
Donc c'est bien les OK qui sont chargé de régler les plages a mesure que le max augmente ou diminue
on peut parfois avoir un pas différent sur les 4 plages des 2 graphes selon les cours qui s'affichent ou doivent apparaître sur les 2 graphes principaux i
pour moi du moment que la macro provoque le changement manuellement(si un Ok a change evidement) je pense qu i est tout a fait possible de faire un code

j ai pense a dupliquer les cellules OK en mode valeur a cote pour qu il n y ai aucune formule dans la cellule vu ce que tu m 'as dit hier
je pense que le code peut distinguer une cellule OK et une cellule ou il n y a rien dedans (maintenant je ne sais pas comment s'ecrit en code la détection de changement dans une cellule????

en fait il ne faudrait plus faire référence aux plages simplement dire """chaque fois qu une des cellules passent d' OK a ("") alors actionner la macro recopieplage je ne vois pas d'autres moyens que celui ci cela fait une action pour copier en mode valeur les cellules contenant les OK et un autre code qui actionne ces cellules en mode valeur des que l une d'entre elles change
comment ??i parceque la cotation qui provoque le changement dans les 2 graphes est la =différence d'une operation mathematique entre la valeur de deux liens DDE(dern/ouvert)

ouverture % dern/ouv dernier exemple pour la premiere =(BD12-BB12)/BB12
47,110 1,040% 47,600
106,450 1,362% 107,900
98,020 1,398% 99,390
27,690 1,029% 27,975
116,600 1,286% 118,100
21,595 1,088% 21,830
54,190 -0,554% 53,890
39,820 -0,075% 39,790
113,000 1,903% 115,150
15,375 0,260% 15,415
11,905 1,260% 12,055
65,640 0,457% 65,940
13,625 -0,477% 13,560
117,500 -0,128% 117,350
492,700 -0,183% 491,800
44,350 0,383% 44,520
63,680 1,351% 64,540
207,100 -0,145% 206,800
300,550 0,449% 301,900
111,500 0,493% 112,050
14,840 -0,337% 14,790
144,400 -1,177% 142,700
20,140 -0,050% 20,130
59,900 0,000% 59,900
83,340 0,348% 83,630
103,150 0,533% 103,700
43,165 0,846% 43,530
66,070 0,484% 66,390
74,500 1,987% 75,980
37,450 0,214% 37,530
83,260 -0,312% 83,000
115,600 0,260% 115,900
20,300 0,296% 20,360
26,870 2,568% 27,560
52,260 0,899% 52,730
192,550 -1,506% 189,650
54,760 0,730% 55,160
19,555 -0,716% 19,415
84,360 0,735% 84,980
21,620 0,463% 21,720

% ouv/clot ouverture % dern/CLV
0,641% 47,110 1,688%
0,996% 106,450 2,372%
0,730% 98,020 2,137%
-0,036% 27,690 0,993%
0,344% 116,600 1,635%
1,266% 21,595 2,368%
2,130% 54,190 1,564%
0,708% 39,820 0,632%
0,311% 113,000 2,219%
-0,324% 15,375 -0,065%
1,405% 11,905 2,683%
0,382% 65,640 0,841%
0,665% 13,625 0,185%
0,513% 117,500 0,385%
0,613% 492,700 0,429%
0,499% 44,350 0,884%
0,632% 63,680 1,991%
0,730% 207,100 0,584%
1,178% 300,550 1,633%
0,723% 111,500 1,220%
0,781% 14,840 0,441%
0,487% 144,400 -0,696%
0,978% 20,140 0,928%
0,605% 59,900 0,605%
0,859% 83,340 1,210%
0,979% 103,150 1,517%
0,676% 43,165 1,528%
0,670% 66,070 1,158%
0,976% 74,500 2,982%
1,614% 37,450 1,832%
0,289% 83,260 -0,024%
0,522% 115,600 0,783%
-0,295% 20,300 0,000%
-0,408% 26,870 2,150%
0,403% 52,260 1,306%
0,000% 192,550 -1,506%
0,810% 54,760 1,546%
0,695% 19,555 -0,026%
0,764% 84,360 1,505%
0,465% 21,620 0,929%
yg_be 6075 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 27 juillet 2018 Dernière intervention > chrisnapoli - 13 juin 2018 à 08:07
à quelle fréquence veux-tu réagir aux changements de ok? pourquoi pas via un timer?
bonjour
non je ne veux pas avec un timer parceque le timer ja deja vu qu il creait des perturbations et des retards en fin de journée de plus un timer va m empecher de travailler sur le fichier
si il n ya pas de solutions pour résoudre mon problème j ai vu sur le forum qu une personne avait un soucis avoisinant et le gars lui a fait un code de copier coller et balaie ,sous condition les formules de ses plages vers d'autres plages , ce n 'est pas exactement ce que je voulais parceque moi je suis persuadé qu il doit existe un moyen d'activer cette macro des le changement dans une des cellules
yg_be 6075 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 27 juillet 2018 Dernière intervention > Chrisnapoli - 13 juin 2018 à 09:17
on a essayé d'activer le code quand les cellules "ok" changeaient, mais cela n'a pas déclenché parce que les cellules ne changent pas, c'est juste le résultat de la fonction qui change. penses-tu à d'autres cellules qui changent réellement?
ou bien via Worksheet_Calculate(), à investiguer.
yg_be 6075 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 27 juillet 2018 Dernière intervention > yg_be 6075 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 27 juillet 2018 Dernière intervention - 13 juin 2018 à 16:30
je voulais écrire "le résultat de la formule"
Commenter la réponse de chrisnapoli
Chrisnapoli - 13 juin 2018 à 09:42
0
Merci
oui je comprends bien ce que tu veux me dire
alors si au lieu de mettre dans le code la condition OK,on mettait les criteres du MAX des plages qui sont inscrit dans d autres cellules
(puisque eux ils changent )
lorsqu' ils atteindront le critère inscrit dans la formule alors peur être que le changement se fera automatiquement
on dirait pour les plages

BO101:BW141;BO144:BW184;BO187:BW227;BO230:BW270;BO273:BW313

condition1
SI(BY101>0,0175)
condition 2
SI(ET(BY144>0,014;BY144<=0,0175)
Condition3
SI(ET(BY187>0,009;BY187<=0,014)
Condition4
SI(ET(BY230>0,005;BY230<=0,009)
Condition5
SI(ET(BY273>=0;BY273<=0,005)

etc pour les autres plages...

. de quelle maniére inscrire ces formules a la place des OK????
yg_be 6075 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 27 juillet 2018 Dernière intervention - 13 juin 2018 à 17:05
le soucis, c'est de déclencher le code, donc pas utile de modifier le contenu du code.
pour le déclencher, on peut utiliser
soit un timer,
soit Worksheet_Change, si on trouve des cellules qui changent vraiment (qui déclenchent Worksheet_Change)
soit (je vais regarder si cela a du sens) via Worksheet_Calculate()
yg_be 6075 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 27 juillet 2018 Dernière intervention > yg_be 6075 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 27 juillet 2018 Dernière intervention - 13 juin 2018 à 17:21
à première vue, Worksheet_Calculate() me semble une bonne option, cela déclenche quand une fonction de la feuille est réévaluée (peut-être trop souvent, on verra).
pour tester, ajouter dans la feuille:
Private Sub Worksheet_Calculate()
call RecopiePlage() 
End Sub
Commenter la réponse de Chrisnapoli
Chrisnapoli - 13 juin 2018 à 13:07
0
Merci
est ce que tu peux me corriger mon code je ne sais pas de quelle façon cela s’écrit?????? (elles se mettent en rouge, je ne dois pas respecterle mode d'ecriture sans doute...)
après j essayerais
les cellules prises en compte ,cette fois ne sont pas inertes elles correspondent au max de chaque plage donné en temps réel

Option Compare Text
Private Sub linkrg(target As Range, source As Range)
source.Copy
target.Parent.Activate
target.Select
target.Parent.Paste link:=True
Application.CutCopyMode = False
End Sub
Sub RecopiePlage()

Application.ScreenUpdating = True

If [AY101] <-0,0175" Then
Call linkrg([CK11:CS51], [BA101:BI141])
ElseIf [AY144] <-0,014 ; [AY144] >=-0,0175 Then
Call linkrg([CK11:CS51], [BA144:BI184])
ElseIf [AY187] <-0,009 ; [AY187]>=-0,014 Then
Call linkrg([CK11:CS51], [BA187:BI227])
ElseIf [AY230] <-0,005 ; [AY230] >=-0,009Then
Call linkrg([CK11:CS51], [BA230:BI270])
ElseIf [AY273] <0 ; [AY273] >)-0,005 Then
Call linkrg([CK11:CS51], [BA273:BI313])
End If
If [BY101] >0,0175 Then
Call linkrg([DB11:DJ51], [BO101:BW141])
ElseIf [BY144] >0,014 ; [BY144] <=0,0175 Then
Call linkrg([DB11:DJ51], [BO144:BW184])
ElseIf [BY187] >0,009 ;[BY187]<=0,014 Then
Call linkrg([DB11:DJ51], [BO187:BW227])
ElseIf [BY230] >0,005 ; [BY230]<=0,009Then
Call linkrg([DB11:DJ51], [BO230:BW270])
ElseIf [BY273] >= 0 ; [BY273] <=0,005Then
Call linkrg([DB11:DJ51], [BO273:BW313])
End If
If [AY316] <=0,0175 Then
Call linkrg([CK57:CS97], [BA316:BI356])
ElseIf [AY359] <-0,014 ; [AY359] >=-0,0175 Then
Call linkrg([CK57:CS97], [BA359:BI399])
ElseIf [AY402] <-0,009 ; [AY402] >=-0,014Then
Call linkrg([CK57:CS97], [BA402:BI442])
ElseIf [AY445] <=0,005 ; [AY445] >=-0,009 Then
Call linkrg([CK57:CS97], [BA445:BI485])
ElseIf [AY488] <0 ; [AY488] >=-0,005 Then
Call linkrg([CK57:CS97], [BA488:BI528])
End If
If [BY316] > 0,0175 Then
Call linkrg([DB57:DJ97], [BO316:BW356])
ElseIf [BY359] >0,014 ; [BY359] <=0,0175 Then
Call linkrg([DB57:DJ97], [BO359:BW399])
ElseIf [BY402] >0,009 ;[BY402] <=0,014 Then
Call linkrg([DB57:DJ97], [BO402:BW442])
ElseIf [BY445] >0,005 ; [BY445] <=0,009 Then
Call linkrg([DB57:DJ97], [BO445:BW485])
ElseIf [BY488] >=0 ; [BY488] ;<=0,005 Then
Call linkrg([DB57:DJ97], [BO488:BW528])
End If
Cells(12, 1).Activate
ActiveWindow.ScrollRow = ActiveCell.Row
End Sub
yg_be 6075 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 27 juillet 2018 Dernière intervention - 13 juin 2018 à 16:27
en VBA, toujours des points décimaux, je pense
[AY101] <-0.0175


au lieu de:
[AY488] <0 ; [AY488] >=-0,005
probablement
[AY488] <0 and [AY488] >=-0.005
bon je vais essayer
que veux tu dire par je voulais ecrire le resultat de la formule?? parceque le resultat est constemment en mouvement....
yg_be 6075 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 27 juillet 2018 Dernière intervention > chrisnapoli - 13 juin 2018 à 17:24
je voulais corriger mon texte précédent:
on a essayé d'activer le code quand les cellules "ok" changeaient, en utilisant Worksheet_Change, mais cela n'a pas déclenché parce que les cellules ne changent pas, c'est juste le résultat de la formule qui change.
Commenter la réponse de Chrisnapoli
chrisnapoli - 13 juin 2018 à 17:19
0
Merci
il y en a un qui m a dit de mettre ca dans la feuille
Private Sub Worksheet_Calculate()
Call RecopiePlage
End Sub et de garder le code recopieplage dans le module

j ai essaye ca marche mais le probleme est que ca tourne en boucle et ca copie sans interruption
alors quil faudrait que ca copie des que un ok a change de cellule et que la copie ne se fasse que une fois
ainsi le pas reste le meme tant que le Ok n a pas change a nouveau de cellule
yg_be 6075 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 27 juillet 2018 Dernière intervention - 13 juin 2018 à 17:32
RecopiePlage() est toujours comme en #22?
je pense qu'on peut l'améliorer pour ne faire la copie que quand un "ok" change.
Commenter la réponse de chrisnapoli
chrisnapoli - 13 juin 2018 à 17:47
0
Merci
oui je mets le code que je veux
ca donne le même résultat avec l'ancien et le nouveau c'est exactement pareil je suis oblige d actionner la macro manuellement avec le bouton
si tu dits qu on peut l améliorer c'est daccord mais il faut qu il copie des qu'un des 4 Ok change et qu'il copie une seule fois tant que aucun autre changement n 'est détectée parceque sinon ca va faire comme je t ai dit tourner sans arrêt en boucle et c'est pas bon
Commenter la réponse de chrisnapoli
yg_be 6075 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 27 juillet 2018 Dernière intervention - 13 juin 2018 à 17:53
0
Merci
pour gagner un peu de temps, nouvelle sub linkrg:
Private Sub linkrg(Target As Range, source As Range)
Application.ScreenUpdating = False
source.Copy
Target.Parent.Activate
Target.Select
Target.Parent.Paste Link:=True
Target.PasteSpecial (xlPasteFormats)
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub 

je propose ceci pour éviter de recopier tout le temps tout, ceci ne devrait plus recopier la première série que quand un "ok" y change. si c'est bon, j'adapte pour les trois séries suivantes:
Sub RecopiePlage()
Static ax1 As Integer

If [AX101] = "Ok" Then
    If ax1 <> 101 Then
        Call linkrg([CK11:CS51], [BA101:BI141])
        ax1 = 101
    End If
ElseIf [AX144] = "Ok" Then
    If ax1 <> 144 Then
        Call linkrg([CK11:CS51], [BA144:BI184])
        ax1 = 144
    End If
ElseIf [AX187] = "Ok" Then
    If ax1 <> 187 Then
        Call linkrg([CK11:CS51], [BA187:BI227])
        ax1 = 187
    End If
ElseIf [AX230] = "Ok" Then
    If ax1 <> 230 Then
        Call linkrg([CK11:CS51], [BA230:BI270])
        ax1 = 230
    End If
ElseIf [AX273] = "Ok" Then
    If ax1 <> 273 Then
        Call linkrg([CK11:CS51], [BA273:BI313])
        ax1 = 273
    End If
End If
If [BZ101] = "Ok" Then
Call linkrg([DB11:DJ51], [BO101:BW141])
ElseIf [BZ144] = "Ok" Then
Call linkrg([DB11:DJ51], [BO144:BW184])
ElseIf [BZ187] = "Ok" Then
Call linkrg([DB11:DJ51], [BO187:BW227])
ElseIf [BZ230] = "Ok" Then
Call linkrg([DB11:DJ51], [BO230:BW270])
ElseIf [BZ273] = "Ok" Then
Call linkrg([DB11:DJ51], [BO273:BW313])
End If
If [AX316] = "Ok" Then
Call linkrg([CK57:CS97], [BA316:BI356])
ElseIf [AX359] = "Ok" Then
Call linkrg([CK57:CS97], [BA359:BI399])
ElseIf [AX402] = "Ok" Then
Call linkrg([CK57:CS97], [BA402:BI442])
ElseIf [AX445] = "Ok" Then
Call linkrg([CK57:CS97], [BA445:BI485])
ElseIf [AX488] = "Ok" Then
Call linkrg([CK57:CS97], [BA488:BI528])
End If
If [BZ316] = "Ok" Then
Call linkrg([DB57:DJ97], [BO316:BW356])
ElseIf [BZ359] = "Ok" Then
Call linkrg([DB57:DJ97], [BO359:BW399])
ElseIf [BZ402] = "Ok" Then
Call linkrg([DB57:DJ97], [BO402:BW442])
ElseIf [BZ445] = "Ok" Then
Call linkrg([DB57:DJ97], [BO445:BW485])
ElseIf [BZ488] = "Ok" Then
Call linkrg([DB57:DJ97], [BO488:BW528])
End If
End Sub
Bonjour
j ai fait les essais ce matin rien ne se passe c'est desesperant
yg_be 6075 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 27 juillet 2018 Dernière intervention > chrisnapoli - 14 juin 2018 à 09:25
peux-tu utiliser plutôt les deux nouveaux sujets de discussion que tu viens de créer?
Commenter la réponse de yg_be
chrisnapoli - 13 juin 2018 à 19:34
0
Merci
j ai mis le code comme ceci dans le module matin je verrais si ca marche demain matin

Private Sub linkrg(Target As Range, source As Range)
Application.ScreenUpdating = False
source.Copy
Target.Parent.Activate
Target.Select
Target.Parent.Paste Link:=True
Target.PasteSpecial (xlPasteFormats)
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub
Sub RecopiePlage()
Static ax1 As Integer

If [AX101] = "Ok" Then
If ax1 <> 101 Then
Call linkrg([CK11:CS51], [BA101:BI141])
ax1 = 101
End If
ElseIf [AX144] = "Ok" Then
If ax1 <> 144 Then
Call linkrg([CK11:CS51], [BA144:BI184])
ax1 = 144
End If
ElseIf [AX187] = "Ok" Then
If ax1 <> 187 Then
Call linkrg([CK11:CS51], [BA187:BI227])
ax1 = 187
End If
ElseIf [AX230] = "Ok" Then
If ax1 <> 230 Then
Call linkrg([CK11:CS51], [BA230:BI270])
ax1 = 230
End If
ElseIf [AX273] = "Ok" Then
If ax1 <> 273 Then
Call linkrg([CK11:CS51], [BA273:BI313])
ax1 = 273
End If
End If
If [BZ101] = "Ok" Then
Call linkrg([DB11:DJ51], [BO101:BW141])
ElseIf [BZ144] = "Ok" Then
Call linkrg([DB11:DJ51], [BO144:BW184])
ElseIf [BZ187] = "Ok" Then
Call linkrg([DB11:DJ51], [BO187:BW227])
ElseIf [BZ230] = "Ok" Then
Call linkrg([DB11:DJ51], [BO230:BW270])
ElseIf [BZ273] = "Ok" Then
Call linkrg([DB11:DJ51], [BO273:BW313])
End If
If [AX316] = "Ok" Then
Call linkrg([CK57:CS97], [BA316:BI356])
ElseIf [AX359] = "Ok" Then
Call linkrg([CK57:CS97], [BA359:BI399])
ElseIf [AX402] = "Ok" Then
Call linkrg([CK57:CS97], [BA402:BI442])
ElseIf [AX445] = "Ok" Then
Call linkrg([CK57:CS97], [BA445:BI485])
ElseIf [AX488] = "Ok" Then
Call linkrg([CK57:CS97], [BA488:BI528])
End If
If [BZ316] = "Ok" Then
Call linkrg([DB57:DJ97], [BO316:BW356])
ElseIf [BZ359] = "Ok" Then
Call linkrg([DB57:DJ97], [BO359:BW402])
ElseIf [BZ402] = "Ok" Then
Call linkrg([DB57:DJ97], [BO402:BW445])
ElseIf [BZ445] = "Ok" Then
Call linkrg([DB57:DJ97], [BO445:BW488])
ElseIf [BZ488] = "Ok" Then
Call linkrg([DB57:DJ97], [BO488:BW528])
End If
End Sub
yg_be 6075 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 27 juillet 2018 Dernière intervention - 13 juin 2018 à 20:59
peux-tu utiliser plutôt les deux nouveaux sujets de discussion que tu viens de créer?
Commenter la réponse de chrisnapoli