Remplacer le contenu d'une plage sous condition
Fermé
Chrisnapoli
-
7 mai 2018 à 22:14
yg_be Messages postés 23346 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 24 novembre 2024 - 19 mai 2018 à 11:56
yg_be Messages postés 23346 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 24 novembre 2024 - 19 mai 2018 à 11:56
A voir également:
- Remplacer le contenu d'une plage sous condition
- Excel cellule couleur si condition texte - Guide
- Remplacer disque dur par ssd - Guide
- Remplacer word - Guide
- Le fichier à télécharger correspond au contenu brut d’un courrier électronique. de quel pays a été envoyé ce message ? - Guide
- Word a trouvé du contenu illisible - Guide
17 réponses
Frenchie83
Messages postés
2240
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
11 août 2023
338
8 mai 2018 à 09:08
8 mai 2018 à 09:08
Bonjour,
Voilà
Cdlt
Voilà
Option Compare Text Sub RecopiePlage() Application.ScreenUpdating = False Cpt = 0 For Each cell In Range("AX101, AX144, AX187, AX230, AX273, BZ101, BZ144, BZ187, BZ230, BZ273") If cell = "Ok" Then Cpt = Cpt + 1 If Cpt > 1 Then MsgBox "Il y a plusieurs cellules avec la mention Ok" Exit Sub End If Next If [AX101] = "Ok" Then [CK11:CS51] = [BA101:BI141] ElseIf [AX144] = "Ok" Then [CK11:CS51] = [BA144:BI184] ElseIf [AX187] = "Ok" Then [CK11:CS51] = [BA187:BI227] ElseIf [AX230] = "Ok" Then [CK11:CS51] = [BA230:BI270] ElseIf [AX273] = "Ok" Then [CK11:CS51] = [BA273:BI313] ElseIf [BZ101] = "Ok" Then [CK11:CS51] = [BO101:BO141] ElseIf [BZ144] = "Ok" Then [CK11:CS51] = [BO144:BO184] ElseIf [BZ187] = "Ok" Then [CK11:CS51] = [BO187:BO227] ElseIf [BZ230] = "Ok" Then [CK11:CS51] = [BO230:BO270] ElseIf [BZ273] = "Ok" Then [CK11:CS51] = [BO273:BO313] End If End Sub
Cdlt
Frenchie83
Messages postés
2240
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
11 août 2023
338
9 mai 2018 à 12:24
9 mai 2018 à 12:24
Bonjour,
Franchement j'ai beaucoup de mal à comprendre le raisonnement.
Tout d'abord, quand je regarde le code que vous retournez, ça ne correspond plus avec la demande initiale où tous les résultats devaient s'afficher dans la plage "CK11:CS51", alors que maintenant je vois du " DB11:DJ51".
De plus, qu'entendez-vous par "graphe récepteur"?
cela me renvoie les valeurs en nombre au lieu de pourcentage,. Comment puis je deviner le contenu des cellules si n'en connais pas la teneur?
Dans l'exemple fournit: =SI(AX101=OK;=BA101;"") , =BA101 Qu'est-ce que cela doit retourner, une valeur, une formule ?
Il va falloir être plus clair, concis tout en étant le plus précis possible dans les demandes avec des exemples de résultats à obtenir à l'appui, sinon on ne va pas s'en sortir.
cdlt
Franchement j'ai beaucoup de mal à comprendre le raisonnement.
Tout d'abord, quand je regarde le code que vous retournez, ça ne correspond plus avec la demande initiale où tous les résultats devaient s'afficher dans la plage "CK11:CS51", alors que maintenant je vois du " DB11:DJ51".
De plus, qu'entendez-vous par "graphe récepteur"?
cela me renvoie les valeurs en nombre au lieu de pourcentage,. Comment puis je deviner le contenu des cellules si n'en connais pas la teneur?
Dans l'exemple fournit: =SI(AX101=OK;=BA101;"") , =BA101 Qu'est-ce que cela doit retourner, une valeur, une formule ?
Il va falloir être plus clair, concis tout en étant le plus précis possible dans les demandes avec des exemples de résultats à obtenir à l'appui, sinon on ne va pas s'en sortir.
cdlt
Bonjour
Je t 'explique clairement ce sont 2 graphes a barres de progression un en dessous de l 'autre) je t'avais dans le passé donné une capture d'écran ou un fichier (je ne me souviens pas)
POUR le premier Graphe
D’un côté tu as le négatif avec 40 barres à gauche
De l’autre cote tu as le positif avec 40 barres à droite
Tout en haut tu as une échelle de progression en pourcentage (une de chaque cote de CK11:CS11
L’autre pour le cote positif à droite en DB11:DJ11
à partir de la ligne 12 jusqu’ a la ligne 51 ce sont des cotations boursières qui s'affichent en temps réel par le biais d’une api et de formules mathématiques que j 'ai crée
Pour la partie gauche on a cette équivalence
If [AX101] = "Ok" Then
[CK11:CS51] = [BA101:BI141]
ElseIf [AX144] = "Ok" Then
[CK11:CS51] = [BA144:BI184]
ElseIf [AX187] = "Ok" Then
[CK11:CS51] = [BA187:BI227]
ElseIf [AX230] = "Ok" Then
[CK11:CS51] = [BA230:BI270]
ElseIf [AX273] = "Ok" Then
[CK11:CS51] = [BA273:BI313]
Pour la partie droite on a cette équivalence
ElseIf [BZ101] = "Ok" Then
[DB11:DJ51] = [BO101:BW141]
ElseIf [BZ144] = "Ok" Then
[DB11:DJ51] = [BO144:BW184]
ElseIf [BZ187] = "Ok" Then
[DB11:DJ51] = [BO187:BW227]
ElseIf [BZ230] = "Ok" Then
[DB11:DJ51] = [BO230:BW270]
ElseIf [BZ273] = "Ok" Then
[DB11:DJ51] = [BO273:BW313
>-2,00% -2,00% -1,75% -1,50% -1,25% -1,00% -0,75% -0,50% -0,25% (ligne11negatif)
0,25% 0,50% 0,75% 1,00%>-- 1,25% 1,50% 1,75% 2,00% >2,00% (ligne11Positif)
POUR le Deuxième Graphe c'est exactement la même structure sauf que ce graphe fait référence a des cotations de la journée d’avant
D’un côté tu as le négatif avec 40 barres à gauche
De l’autre cote tu as le positif avec 40 barres à droite
Tout en haut tu as une échelle de progression en pourcentage (une de chaque cote de CK57:CS57
L’autre pour le cote positif à droite en DB57:DJ57
a partir de la ligne 58 jusque a la ligne 97 ce sont des cotations boursières qui s'affichent en temps réel par le biais d’une api et de formules mathématiques que j 'ai crée
Pour la partie gauche on a cette équivalence
If [AX316] = "Ok" Then
[CK57:CS97] = [BA316:BI356]
ElseIf [AX359] = "Ok" Then
[CK57:CS97] = [BA359:BI399]
ElseIf [AX402] = "Ok" Then
[CK57:CS97] = [BA402:BI442]
ElseIf [AX445] = "Ok" Then
[CK57:CS97] = [BA445:BI485]
ElseIf [AX488] = "Ok" Then
[CK57:CS97] = [BA488:BI528]
Pour la partie droite on a cette équivalence
ElseIf [BZ316] = "Ok" Then
[DB57:DJ97] = [BO316:BW356]
ElseIf [BZ359] = "Ok" Then
[DB57:DJ97] = [BO359:BW399]
ElseIf [BZ402] = "Ok" Then
[DB57:DJ97] = [BO402:BW442]
ElseIf [BZ445] = "Ok" Then
[DB57:DJ97] = [BO445:BW485]
ElseIf [BZ488] = "Ok" Then
[DB57:DJ97] = [BO488:BW528
>-2,00% -2,00% -1,75% -1,50% -1,25% -1,00% -0,75% -0,50% -0,25% (ligne 57 négatif)
0,25% 0,50% 0,75% 1,00%>-- 1,25% 1,50% 1,75% 2,00% >2,00% (ligne 57 Positif)
ce qu’ il faut comprendre c'est que ce sont bien les deux graphes qui vont pour le premier de CK11:CS51 à DB11:DB51
pour le deuxième CK57:CS97 à DB57 :DJ97 qui vont recevoir les cotations des autres plages énumérés il ne faut pas que ces cotations soient copiés vers ces 2 graphes mais que le code disent simplement "égale le contenue de"
je ne veux pas d'un Code qui me copierais les formules a mesure que les ok apparaîtront sur telle ou telle plage
pour la bonne raison que le graphe tourne en temps réel et ce serait trop complique a gérer d autant qu’ il y a des mises en forme conditionnelles dans les cellules
il faut simplement comme je te l ai dit que le code affiche les cotations en temps réel des cellules dans la bonne plage quand elle est "OK"
je le dit et redit c'est comme si dans une cellule quelconque,qu' on nommera pour exemple A1 si dans A1 était inscrit le chiffre 2 et bien si tu es dans la cellule B tu dits (=A1) et 2 vient s'afficher; tout simplement pas la peine de faire une procédure de collage pour avoir le 2 (le égale suffit)
excuse-moi pour les données je les avais pas mise la première fois parce que je savais que si tu trouvais un code lj allais peut être moi-même l’adapter pour l 'autre cote(mais je me suis rendu compte que il était préférable pour qu’ il n y ai pas d'erreurs, de tout te donner avant que tu commences si tu comprends pas dits moi ce qui ne va pas...???
Bonne journée
Je t 'explique clairement ce sont 2 graphes a barres de progression un en dessous de l 'autre) je t'avais dans le passé donné une capture d'écran ou un fichier (je ne me souviens pas)
POUR le premier Graphe
D’un côté tu as le négatif avec 40 barres à gauche
De l’autre cote tu as le positif avec 40 barres à droite
Tout en haut tu as une échelle de progression en pourcentage (une de chaque cote de CK11:CS11
L’autre pour le cote positif à droite en DB11:DJ11
à partir de la ligne 12 jusqu’ a la ligne 51 ce sont des cotations boursières qui s'affichent en temps réel par le biais d’une api et de formules mathématiques que j 'ai crée
Pour la partie gauche on a cette équivalence
If [AX101] = "Ok" Then
[CK11:CS51] = [BA101:BI141]
ElseIf [AX144] = "Ok" Then
[CK11:CS51] = [BA144:BI184]
ElseIf [AX187] = "Ok" Then
[CK11:CS51] = [BA187:BI227]
ElseIf [AX230] = "Ok" Then
[CK11:CS51] = [BA230:BI270]
ElseIf [AX273] = "Ok" Then
[CK11:CS51] = [BA273:BI313]
Pour la partie droite on a cette équivalence
ElseIf [BZ101] = "Ok" Then
[DB11:DJ51] = [BO101:BW141]
ElseIf [BZ144] = "Ok" Then
[DB11:DJ51] = [BO144:BW184]
ElseIf [BZ187] = "Ok" Then
[DB11:DJ51] = [BO187:BW227]
ElseIf [BZ230] = "Ok" Then
[DB11:DJ51] = [BO230:BW270]
ElseIf [BZ273] = "Ok" Then
[DB11:DJ51] = [BO273:BW313
>-2,00% -2,00% -1,75% -1,50% -1,25% -1,00% -0,75% -0,50% -0,25% (ligne11negatif)
0,25% 0,50% 0,75% 1,00%>-- 1,25% 1,50% 1,75% 2,00% >2,00% (ligne11Positif)
POUR le Deuxième Graphe c'est exactement la même structure sauf que ce graphe fait référence a des cotations de la journée d’avant
D’un côté tu as le négatif avec 40 barres à gauche
De l’autre cote tu as le positif avec 40 barres à droite
Tout en haut tu as une échelle de progression en pourcentage (une de chaque cote de CK57:CS57
L’autre pour le cote positif à droite en DB57:DJ57
a partir de la ligne 58 jusque a la ligne 97 ce sont des cotations boursières qui s'affichent en temps réel par le biais d’une api et de formules mathématiques que j 'ai crée
Pour la partie gauche on a cette équivalence
If [AX316] = "Ok" Then
[CK57:CS97] = [BA316:BI356]
ElseIf [AX359] = "Ok" Then
[CK57:CS97] = [BA359:BI399]
ElseIf [AX402] = "Ok" Then
[CK57:CS97] = [BA402:BI442]
ElseIf [AX445] = "Ok" Then
[CK57:CS97] = [BA445:BI485]
ElseIf [AX488] = "Ok" Then
[CK57:CS97] = [BA488:BI528]
Pour la partie droite on a cette équivalence
ElseIf [BZ316] = "Ok" Then
[DB57:DJ97] = [BO316:BW356]
ElseIf [BZ359] = "Ok" Then
[DB57:DJ97] = [BO359:BW399]
ElseIf [BZ402] = "Ok" Then
[DB57:DJ97] = [BO402:BW442]
ElseIf [BZ445] = "Ok" Then
[DB57:DJ97] = [BO445:BW485]
ElseIf [BZ488] = "Ok" Then
[DB57:DJ97] = [BO488:BW528
>-2,00% -2,00% -1,75% -1,50% -1,25% -1,00% -0,75% -0,50% -0,25% (ligne 57 négatif)
0,25% 0,50% 0,75% 1,00%>-- 1,25% 1,50% 1,75% 2,00% >2,00% (ligne 57 Positif)
ce qu’ il faut comprendre c'est que ce sont bien les deux graphes qui vont pour le premier de CK11:CS51 à DB11:DB51
pour le deuxième CK57:CS97 à DB57 :DJ97 qui vont recevoir les cotations des autres plages énumérés il ne faut pas que ces cotations soient copiés vers ces 2 graphes mais que le code disent simplement "égale le contenue de"
je ne veux pas d'un Code qui me copierais les formules a mesure que les ok apparaîtront sur telle ou telle plage
pour la bonne raison que le graphe tourne en temps réel et ce serait trop complique a gérer d autant qu’ il y a des mises en forme conditionnelles dans les cellules
il faut simplement comme je te l ai dit que le code affiche les cotations en temps réel des cellules dans la bonne plage quand elle est "OK"
je le dit et redit c'est comme si dans une cellule quelconque,qu' on nommera pour exemple A1 si dans A1 était inscrit le chiffre 2 et bien si tu es dans la cellule B tu dits (=A1) et 2 vient s'afficher; tout simplement pas la peine de faire une procédure de collage pour avoir le 2 (le égale suffit)
excuse-moi pour les données je les avais pas mise la première fois parce que je savais que si tu trouvais un code lj allais peut être moi-même l’adapter pour l 'autre cote(mais je me suis rendu compte que il était préférable pour qu’ il n y ai pas d'erreurs, de tout te donner avant que tu commences si tu comprends pas dits moi ce qui ne va pas...???
Bonne journée
yg_be
Messages postés
23346
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
24 novembre 2024
Ambassadeur
1 552
10 mai 2018 à 09:45
10 mai 2018 à 09:45
bonjour, peut-être veux-tu un code VBA qui va détecter un changement dans les 10 cellules en AX et BZ, et, en fonction du contenu de ces 10 cellules, va enregistrer des formules dans CK11:CS51?
il est important de toujours clairement et concisément décrire quand le code doit être exécuté, et ce qu'il doit faire. tu n'as pris la peine de décrire "quand" (via un bouton, ou automatiquement), et le "quoi" était très flou.
"affichez moi le contenue" veut plutôt dire copier le contenu.
si tu veux créer un lien via une formule, précise le ainsi.
par respect pour ceux qui t'aident, prends le temps d'utiliser un vocabulaire précis. après quelques années d'apprentissage de l'utilisation d'Excel, tu n'as plus l'excuse de l'oisillon tombé du nid.
tu écris en #7 "je le dit et redit". tu aurais mieux fait de l'écrire dans la description de départ.
j'ai l'impression que tu ne prends pas le temps d'être concis: tu envoies très vite de très longs textes. tu gagnerais du temps à préparer des textes beaucoup plus courts, qui contiennent exactement les informations nécessaires, rien de plus. prends le temps de te relire, de te mettre à la place de ceux qui te liront, de te demander comment ils vont comprendre ton texte.
il est important de toujours clairement et concisément décrire quand le code doit être exécuté, et ce qu'il doit faire. tu n'as pris la peine de décrire "quand" (via un bouton, ou automatiquement), et le "quoi" était très flou.
"affichez moi le contenue" veut plutôt dire copier le contenu.
si tu veux créer un lien via une formule, précise le ainsi.
par respect pour ceux qui t'aident, prends le temps d'utiliser un vocabulaire précis. après quelques années d'apprentissage de l'utilisation d'Excel, tu n'as plus l'excuse de l'oisillon tombé du nid.
tu écris en #7 "je le dit et redit". tu aurais mieux fait de l'écrire dans la description de départ.
j'ai l'impression que tu ne prends pas le temps d'être concis: tu envoies très vite de très longs textes. tu gagnerais du temps à préparer des textes beaucoup plus courts, qui contiennent exactement les informations nécessaires, rien de plus. prends le temps de te relire, de te mettre à la place de ceux qui te liront, de te demander comment ils vont comprendre ton texte.
Bonjour
sans doute vous avez raison et si je m 'exprime mal c'est parce que ce n'est pas mon job je peux pas être à votre niveau c'est impensable et vous devez en tenir compte
Mais afficher le contenue dune cellule dans une autre cellule n a jamais voulu dire pour moi ,copier la cellule....
si je dits par exemple afficher moi le contenue de la cellule AI en B1
je vais inscrire tout simplement dans B1 =A1
je ne vais pas copie A1 dans B1 pour obtenir son contenue je sais pas si je suis clair
pour moi cela me parait évident
maintenant si vous avez une solution meilleure et que vous êtes sur que votre code ne perturbera pas le temps réel lors du collage, je suis ok
a ce moment la ce seont la totalité des formules de la plage qui seront copie dans le graphe il faut que la procédure soit automatique
Je pense que vous êtes tous un peu dur avec moi
comme j expliquais a un de vos collègues si je mettais l'un d'entre vous devant un bloc de pierres et je lui demandais de me faire le buste de napoléon sans trop d'explication, je suis pas sur qu il ferait aussi bien que moi avec les codes??? mais dans le fond ça vous arrange a tous parce que vous aimez bien les choses qui sortent d l 'ordinaire
pour votre info essayer de comprendre que tout le monde n 'a pas le même fonctionnement
par exemple quand c'est trop dur je passe a autre chose et des que j ai une idée je reviens sr la chose ou j 'ai buté concernant les codes que je n arrivais pas a solutionné il y en a un que j ai trouve et le deuxième je coince dessus, mais c'est comme ça je laisse un peu de temps a mes neurones pour réfléchir
je sais vous allez pester parce que je n ai pas solutionner ce problème et que je passe a un autre
Mais c'est ainsi que je fonctionne et au final il ne me reste que 2 a 3 codes et j aurais bouclé ma solution
voila le code que je suis arrive a adapter je sais pour vous ,vous allez me dire que c'est très facile
pour moi ça ne l était pas
je suis preneur de votre code si toutefois vous pensez que ça ne perturbera pas le fonctionnement du graphe
j oubliais , je suis arrive a le faire avec des formules mais le gros problème est que les contenues des plages s'affichent en numéraire et non en % j ai eu beau essayer de changer le format rien n'y fait
et c'est sans collage
Bonne journée
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim wb As Workbook
Dim ws As Worksheet
Set wb = ThisWorkbook
Set ws = wb.Worksheets("Graphe Horizontal")
If Not Application.Intersect(Target, ws.Range("CV12:CV51,CX12:CX51,CV58:CV97,CX58:CX97")) Is Nothing Then
If Target.Column = 100 Then
i = 0
j = 0
Else
i = 5
j = 2
End If
If Target.Row < 58 Then
k = 0
Else
k = 46
End If
ws.Range("CM10").Value = Target
ws.Range("CX9").Value = Target.Offset(0 - k, -57 + i)
ws.Range("CP10").Value = Target.Offset(0 - k, -58 - j)
ws.Range("CW11").Value = Target.Offset(0 - k, -57 - i)
ws.Range("CY11").Value = Target.Offset(0 - k, -50 - i)
ws.Range("CW11").Value = Target.Offset(0 - k, -57 - j)
ws.Range("CY11").Value = Target.Offset(0 - k, -50 - j)
ws.Range("CT54").Value = Target.Offset(0 - k, -51 - i)
ws.Range("CT54").Value = Target.Offset(0 - k, -51 - j)
ws.Range("CZ54").Value = Target.Offset(0 - k, -50 - i)
ws.Range("CZ54").Value = Target.Offset(0 - k, -50 - j)
End If
End Sub
sans doute vous avez raison et si je m 'exprime mal c'est parce que ce n'est pas mon job je peux pas être à votre niveau c'est impensable et vous devez en tenir compte
Mais afficher le contenue dune cellule dans une autre cellule n a jamais voulu dire pour moi ,copier la cellule....
si je dits par exemple afficher moi le contenue de la cellule AI en B1
je vais inscrire tout simplement dans B1 =A1
je ne vais pas copie A1 dans B1 pour obtenir son contenue je sais pas si je suis clair
pour moi cela me parait évident
maintenant si vous avez une solution meilleure et que vous êtes sur que votre code ne perturbera pas le temps réel lors du collage, je suis ok
a ce moment la ce seont la totalité des formules de la plage qui seront copie dans le graphe il faut que la procédure soit automatique
Je pense que vous êtes tous un peu dur avec moi
comme j expliquais a un de vos collègues si je mettais l'un d'entre vous devant un bloc de pierres et je lui demandais de me faire le buste de napoléon sans trop d'explication, je suis pas sur qu il ferait aussi bien que moi avec les codes??? mais dans le fond ça vous arrange a tous parce que vous aimez bien les choses qui sortent d l 'ordinaire
pour votre info essayer de comprendre que tout le monde n 'a pas le même fonctionnement
par exemple quand c'est trop dur je passe a autre chose et des que j ai une idée je reviens sr la chose ou j 'ai buté concernant les codes que je n arrivais pas a solutionné il y en a un que j ai trouve et le deuxième je coince dessus, mais c'est comme ça je laisse un peu de temps a mes neurones pour réfléchir
je sais vous allez pester parce que je n ai pas solutionner ce problème et que je passe a un autre
Mais c'est ainsi que je fonctionne et au final il ne me reste que 2 a 3 codes et j aurais bouclé ma solution
voila le code que je suis arrive a adapter je sais pour vous ,vous allez me dire que c'est très facile
pour moi ça ne l était pas
je suis preneur de votre code si toutefois vous pensez que ça ne perturbera pas le fonctionnement du graphe
j oubliais , je suis arrive a le faire avec des formules mais le gros problème est que les contenues des plages s'affichent en numéraire et non en % j ai eu beau essayer de changer le format rien n'y fait
et c'est sans collage
Bonne journée
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim wb As Workbook
Dim ws As Worksheet
Set wb = ThisWorkbook
Set ws = wb.Worksheets("Graphe Horizontal")
If Not Application.Intersect(Target, ws.Range("CV12:CV51,CX12:CX51,CV58:CV97,CX58:CX97")) Is Nothing Then
If Target.Column = 100 Then
i = 0
j = 0
Else
i = 5
j = 2
End If
If Target.Row < 58 Then
k = 0
Else
k = 46
End If
ws.Range("CM10").Value = Target
ws.Range("CX9").Value = Target.Offset(0 - k, -57 + i)
ws.Range("CP10").Value = Target.Offset(0 - k, -58 - j)
ws.Range("CW11").Value = Target.Offset(0 - k, -57 - i)
ws.Range("CY11").Value = Target.Offset(0 - k, -50 - i)
ws.Range("CW11").Value = Target.Offset(0 - k, -57 - j)
ws.Range("CY11").Value = Target.Offset(0 - k, -50 - j)
ws.Range("CT54").Value = Target.Offset(0 - k, -51 - i)
ws.Range("CT54").Value = Target.Offset(0 - k, -51 - j)
ws.Range("CZ54").Value = Target.Offset(0 - k, -50 - i)
ws.Range("CZ54").Value = Target.Offset(0 - k, -50 - j)
End If
End Sub
yg_be
Messages postés
23346
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
24 novembre 2024
1 552
>
Chrisnapoli
10 mai 2018 à 11:30
10 mai 2018 à 11:30
maintenant que tu as constaté que "afficher moi le contenue de la cellule AI en B1" est ambigu, je te suggère d'éviter d'utiliser cette formulation, et de préciser si tu veux en A1 le contenu de B1, ou bien un lien (via une formule) vers B2.
yg_be
Messages postés
23346
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
24 novembre 2024
1 552
>
Chrisnapoli
10 mai 2018 à 11:42
10 mai 2018 à 11:42
si je comprends ce que tu écris, tu ne cherches plus le code que tu demandais au début de ce topic, parce que cela fonctionne avec des formules. tu cherches cependant de l'aide pour que ce soit affiché en %. peux-tu donner une de ces formules, et expliquer ce que tu as essayé come format?
re
absolument pas je cherche la meilleure solution
moi en formule je disais par exemple ceci prenons la premier plage
dans le graphe qui reçoit la cotation je mettais en cellule CK11 puis apres selon le meme principe dans toutes les cellules de la plage
=SI(AX101="OK" ,AZ101;"")&SI(AX144="OK";AZ144;"")&SI(AX187="OK";AZ187;"")&SI(AX230="OK";AZ230;"")SI(AX273="OK";AZ273;"")....etc en descendant sur toute la plage
le format est en pourcentage 3 decimales
autre chose j
e ne comprend pas pourquoi tu dits que j ai change ma demande depuis le début je cherche une solution efficace si le code est meilleur que les formules ce qui devrait être je vais mettre un code si je n arrive pas a trouver un code a ce moment la je mettrais les formules
mais je viens de t 'expliquer que les formules me retournent le contenue de la cellule en numéraire Voila je ne peux t en dire plus si tu as un code je l 'essai en temps réel
absolument pas je cherche la meilleure solution
moi en formule je disais par exemple ceci prenons la premier plage
dans le graphe qui reçoit la cotation je mettais en cellule CK11 puis apres selon le meme principe dans toutes les cellules de la plage
=SI(AX101="OK" ,AZ101;"")&SI(AX144="OK";AZ144;"")&SI(AX187="OK";AZ187;"")&SI(AX230="OK";AZ230;"")SI(AX273="OK";AZ273;"")....etc en descendant sur toute la plage
le format est en pourcentage 3 decimales
autre chose j
e ne comprend pas pourquoi tu dits que j ai change ma demande depuis le début je cherche une solution efficace si le code est meilleur que les formules ce qui devrait être je vais mettre un code si je n arrive pas a trouver un code a ce moment la je mettrais les formules
mais je viens de t 'expliquer que les formules me retournent le contenue de la cellule en numéraire Voila je ne peux t en dire plus si tu as un code je l 'essai en temps réel
yg_be
Messages postés
23346
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
24 novembre 2024
1 552
>
Chrisnapoli
10 mai 2018 à 12:42
10 mai 2018 à 12:42
je pense que ton soucis avec la formule vient de ton choix d'utiliser des chaines de caractères plutôt que des nombres.
donc, suggestion pour ta formule: remplace "" par 0 et & par +
attention, si tu as plusieurs "OK", cela va calculer des sommes. si c'est un soucis, tu dois soit faire des formules avec des SI imbriqués, soit faire par code.
donc, suggestion pour ta formule: remplace "" par 0 et & par +
=SI(AX101="OK" ,AZ101;0)+SI...
attention, si tu as plusieurs "OK", cela va calculer des sommes. si c'est un soucis, tu dois soit faire des formules avec des SI imbriqués, soit faire par code.
Bonjour
on va faire plus simple parce que je ne suis pas satisfait de ma solution par formules et depuis que j ai mis ce système en place le fichier met un temps infini a s'ouvrir
alors je propose ceci on va tester ta solution qui consisterait a coller toutes les cellules d'es plages dont je te mets la liste vers d' autres plages des qu'une condition est remplie
ce qui veut dire que a chaque fois que la condition sera remplie les formules des plages mentionnées remplaceront celles des plages qui reçoivent (en l 'occurrence les graphes) ;il y aura quatre plages qui reçoivent puisque il y a ,en tout 2 graphes et chacun ayant un cote négatif et un autre positif je te mets la liste en dessous (j (espère que ce code ne perturbera pas les graphes lors du collage et que le code me permettra d'avoir un résultat quasi instantané...... les plages sont:
Plages Sources Vers graphe 1 Barres cote Négatif Plages Sources Vers graphe 1 Barres cote Positif
BA101:BI141 Vers CK11:CS51 =Si(AX101=1;"") BO101:BW141 Vers DB11:DJ51 =Si(BZ101=1;"")
BA144:BI184 Vers CK11:CS51 =Si(AX144=1;"") BO144:BW184 Vers DB11:DJ51 =Si(BZ144=1;"")
BA187:BI227 Vers CK11:CS51 =Si(AX187=1;"") BO187:BW227 Vers DB11:DJ51 =Si(BZ187=1;"")
BA230:BI270 Vers CK11:CS51 =Si(AX230=1;"") BO230:BW270 Vers DB11:DJ51 =Si(BZ230=1;"")
BA273:BI313 Vers CK11:CS51 =Si(AX273=1;"") BO273:BW313 Vers DB11:DJ51 =Si(BZ273=1;"")
Plages Sources Vers graphe 2 Barres cote Négatif Plages Sources Vers graphe 2 Barres cote Positif
BA316:BI356 Vers CK57:CS97 =Si(AX316=1;"") BO316:BW356 Vers DB57:DJ97 =Si(BZ316=1;"")
BA359:BI399 Vers CK57:CS97 =Si(AX359=1;"") BO359:BW399 Vers DB57:DJ97 =Si(BZ359=1;"")
BA402:BI442 Vers CK57:CS97 =Si(AX402=1;"") BO402:BW442 Vers DB57:DJ97 =Si(BZ402=1;"")
BA445:BI485 Vers CK57:CS97 =Si(AX445=1;"") BO445:BW485 Vers DB57:DJ97 =Si(BZ445=1;"")
BA488:BI528 Vers CK57:CS97 =Si(AX488=1;"") BO488:BW528 Vers DB57:DJ97 =Si(BZ528=1;"")
on va faire plus simple parce que je ne suis pas satisfait de ma solution par formules et depuis que j ai mis ce système en place le fichier met un temps infini a s'ouvrir
alors je propose ceci on va tester ta solution qui consisterait a coller toutes les cellules d'es plages dont je te mets la liste vers d' autres plages des qu'une condition est remplie
ce qui veut dire que a chaque fois que la condition sera remplie les formules des plages mentionnées remplaceront celles des plages qui reçoivent (en l 'occurrence les graphes) ;il y aura quatre plages qui reçoivent puisque il y a ,en tout 2 graphes et chacun ayant un cote négatif et un autre positif je te mets la liste en dessous (j (espère que ce code ne perturbera pas les graphes lors du collage et que le code me permettra d'avoir un résultat quasi instantané...... les plages sont:
Plages Sources Vers graphe 1 Barres cote Négatif Plages Sources Vers graphe 1 Barres cote Positif
BA101:BI141 Vers CK11:CS51 =Si(AX101=1;"") BO101:BW141 Vers DB11:DJ51 =Si(BZ101=1;"")
BA144:BI184 Vers CK11:CS51 =Si(AX144=1;"") BO144:BW184 Vers DB11:DJ51 =Si(BZ144=1;"")
BA187:BI227 Vers CK11:CS51 =Si(AX187=1;"") BO187:BW227 Vers DB11:DJ51 =Si(BZ187=1;"")
BA230:BI270 Vers CK11:CS51 =Si(AX230=1;"") BO230:BW270 Vers DB11:DJ51 =Si(BZ230=1;"")
BA273:BI313 Vers CK11:CS51 =Si(AX273=1;"") BO273:BW313 Vers DB11:DJ51 =Si(BZ273=1;"")
Plages Sources Vers graphe 2 Barres cote Négatif Plages Sources Vers graphe 2 Barres cote Positif
BA316:BI356 Vers CK57:CS97 =Si(AX316=1;"") BO316:BW356 Vers DB57:DJ97 =Si(BZ316=1;"")
BA359:BI399 Vers CK57:CS97 =Si(AX359=1;"") BO359:BW399 Vers DB57:DJ97 =Si(BZ359=1;"")
BA402:BI442 Vers CK57:CS97 =Si(AX402=1;"") BO402:BW442 Vers DB57:DJ97 =Si(BZ402=1;"")
BA445:BI485 Vers CK57:CS97 =Si(AX445=1;"") BO445:BW485 Vers DB57:DJ97 =Si(BZ445=1;"")
BA488:BI528 Vers CK57:CS97 =Si(AX488=1;"") BO488:BW528 Vers DB57:DJ97 =Si(BZ528=1;"")
yg_be
Messages postés
23346
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
24 novembre 2024
1 552
16 mai 2018 à 22:18
16 mai 2018 à 22:18
je ne comprends pas. cela a-t'il un rapport avec ta demande initiale, que je pensais avoir compris?
si oui, explique ce qui ne te convient pas dans la solution #1.
si oui, explique ce qui ne te convient pas dans la solution #1.
Bonsoir
il n y a rien acomprendre puisque ce sque je demande est xactement la meme chose mais le code de frenchie ne fonctionne pas au depart je pensais que ce ne serait pas un probleme d amener une plage vers une autre le seul soucis est que je pensais que cetait realiseable sans faire de procedure de copier coller mais comme personne ne m a donne de code le l ai fait moi meme en formules
je t ai explique que le resultat v net
il n y a rien acomprendre puisque ce sque je demande est xactement la meme chose mais le code de frenchie ne fonctionne pas au depart je pensais que ce ne serait pas un probleme d amener une plage vers une autre le seul soucis est que je pensais que cetait realiseable sans faire de procedure de copier coller mais comme personne ne m a donne de code le l ai fait moi meme en formules
je t ai explique que le resultat v net
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
le résultat n était pas satisfaisant puisque le format n était pas bon et j étais oblige de multiplie par1 pour avoir le bon résultat
donc le code de frenchie ne fonctionnant pas je te demande simplement de faire un code qui copie les formules et le format vers le graphe selon le shema que je t'ai envoye puique personne n 'est capable de me faire un code autrement que par ce procédé
donc le code de frenchie ne fonctionnant pas je te demande simplement de faire un code qui copie les formules et le format vers le graphe selon le shema que je t'ai envoye puique personne n 'est capable de me faire un code autrement que par ce procédé
yg_be
Messages postés
23346
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
24 novembre 2024
1 552
17 mai 2018 à 09:08
17 mai 2018 à 09:08
alors utilise ceci à la place de ma suggestion en #15, cela va également préserver le format:
Private Sub linkrg(target As Range, source As Range) source.Copy target.Parent.Activate target.Select target.Parent.Paste Link:=True target.PasteSpecial (xlPasteFormats) Application.CutCopyMode = False End Sub
Bonjour
je le mets ou ce code dans la feuille ou dans un module, et ou je mets le reste et de quelle manière
je ne retrouve pas ton message 15 sur le site
j'ai déjà cela comme code dans cette feuille
je te remets en dessous les plages a copier comment j écrit cela
Option Explicit
Private Sub CommandButton1_Click()
End Sub
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
BA101:BI141 Vers CK11:CS51 =Si(AX101=1;"") BO101:BW141 Vers DB11:DJ51 =Si(BZ101=1;"")
BA144:BI184 Vers CK11:CS51 =Si(AX144=1;"") BO144:BW184 Vers DB11:DJ51 =Si(BZ144=1;"")
BA187:BI227 Vers CK11:CS51 =Si(AX187=1;"") BO187:BW227 Vers DB11:DJ51 =Si(BZ187=1;"")
BA230:BI270 Vers CK11:CS51 =Si(AX230=1;"") BO230:BW270 Vers DB11:DJ51 =Si(BZ230=1;"")
BA273:BI313 Vers CK11:CS51 =Si(AX273=1;"") BO273:BW313 Vers DB11:DJ51 =Si(BZ273=1;"")
BA316:BI356 Vers CK57:CS97 =Si(AX316=1;"") BO316:BW356 Vers DB57:DJ97 =Si(BZ316=1;"")
BA359:BI399 Vers CK57:CS97 =Si(AX359=1;"") BO359:BW399 Vers DB57:DJ97 =Si(BZ359=1;"")
BA402:BI442 Vers CK57:CS97 =Si(AX402=1;"") BO402:BW442 Vers DB57:DJ97 =Si(BZ402=1;"")
BA445:BI485 Vers CK57:CS97 =Si(AX445=1;"") BO445:BW485 Vers DB57:DJ97 =Si(BZ445=1;"")
BA488:BI528 Vers CK57:CS97 =Si(AX488=1;"") BO488:BW528 Vers DB57:DJ97 =Si(BZ528=1;"")
je le mets ou ce code dans la feuille ou dans un module, et ou je mets le reste et de quelle manière
je ne retrouve pas ton message 15 sur le site
j'ai déjà cela comme code dans cette feuille
je te remets en dessous les plages a copier comment j écrit cela
Option Explicit
Private Sub CommandButton1_Click()
End Sub
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
BA101:BI141 Vers CK11:CS51 =Si(AX101=1;"") BO101:BW141 Vers DB11:DJ51 =Si(BZ101=1;"")
BA144:BI184 Vers CK11:CS51 =Si(AX144=1;"") BO144:BW184 Vers DB11:DJ51 =Si(BZ144=1;"")
BA187:BI227 Vers CK11:CS51 =Si(AX187=1;"") BO187:BW227 Vers DB11:DJ51 =Si(BZ187=1;"")
BA230:BI270 Vers CK11:CS51 =Si(AX230=1;"") BO230:BW270 Vers DB11:DJ51 =Si(BZ230=1;"")
BA273:BI313 Vers CK11:CS51 =Si(AX273=1;"") BO273:BW313 Vers DB11:DJ51 =Si(BZ273=1;"")
BA316:BI356 Vers CK57:CS97 =Si(AX316=1;"") BO316:BW356 Vers DB57:DJ97 =Si(BZ316=1;"")
BA359:BI399 Vers CK57:CS97 =Si(AX359=1;"") BO359:BW399 Vers DB57:DJ97 =Si(BZ359=1;"")
BA402:BI442 Vers CK57:CS97 =Si(AX402=1;"") BO402:BW442 Vers DB57:DJ97 =Si(BZ402=1;"")
BA445:BI485 Vers CK57:CS97 =Si(AX445=1;"") BO445:BW485 Vers DB57:DJ97 =Si(BZ445=1;"")
BA488:BI528 Vers CK57:CS97 =Si(AX488=1;"") BO488:BW528 Vers DB57:DJ97 =Si(BZ528=1;"")
yg_be
Messages postés
23346
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
24 novembre 2024
1 552
>
itpassatisfaisntparcequejenarrivepaslorsuejincrementebeaucoupdef
17 mai 2018 à 12:36
17 mai 2018 à 12:36
lis le #15
je comprends pas ou tu veux en venir ,si tu connais le code tu me le donnes si tu le connais pas et bien tant pis je vais continuer a le chercher
le code de frenchie le voila il n'y a rien de commun avec ce que tu m'envoies
si je prend ce que tu as écrits en complément du code de frenchie ca ne marchera pas
dans le code de frenchie il fait appel a une boite de dialogue MsgBox moi je veux une procédure automatique
tu me parles comme si j avais déjà fait de la programmation
soyons clair je t'ai déjà explique que ce n 'est pas mon job si je connaissais le langage je ne viendrais certainement pas sur ce forum
que faut il faire exactement? je vais pas passer mon temps a jouer a la devinette parce que je suis tenu par un délai
un jour je t’amènerais un bloc de pierres et on verra ce que tu es capable de faire devant......
Bonne après midi
Option Compare Text
Sub RecopiePlage()
Application.ScreenUpdating = False
Cpt = 0
For Each cell In Range("AX101, AX144, AX187, AX230, AX273, BZ101, BZ144, BZ187, BZ230, BZ273")
If cell = "Ok" Then Cpt = Cpt + 1
If Cpt > 1 Then
MsgBox "Il y a plusieurs cellules avec la mention Ok"
Exit Sub
End If
Next
If [AX101] = "Ok" Then
[CK11:CS51] = [BA101:BI141]
ElseIf [AX144] = "Ok" Then
[CK11:CS51] = [BA144:BI184]
ElseIf [AX187] = "Ok" Then
[CK11:CS51] = [BA187:BI227]
ElseIf [AX230] = "Ok" Then
[CK11:CS51] = [BA230:BI270]
ElseIf [AX273] = "Ok" Then
[CK11:CS51] = [BA273:BI313]
ElseIf [BZ101] = "Ok" Then
[CK11:CS51] = [BO101:BO141]
ElseIf [BZ144] = "Ok" Then
[CK11:CS51] = [BO144:BO184]
ElseIf [BZ187] = "Ok" Then
[CK11:CS51] = [BO187:BO227]
ElseIf [BZ230] = "Ok" Then
[CK11:CS51] = [BO230:BO270]
ElseIf [BZ273] = "Ok" Then
[CK11:CS51] = [BO273:BO313]
End If
End Sub
le code de frenchie le voila il n'y a rien de commun avec ce que tu m'envoies
si je prend ce que tu as écrits en complément du code de frenchie ca ne marchera pas
dans le code de frenchie il fait appel a une boite de dialogue MsgBox moi je veux une procédure automatique
tu me parles comme si j avais déjà fait de la programmation
soyons clair je t'ai déjà explique que ce n 'est pas mon job si je connaissais le langage je ne viendrais certainement pas sur ce forum
que faut il faire exactement? je vais pas passer mon temps a jouer a la devinette parce que je suis tenu par un délai
un jour je t’amènerais un bloc de pierres et on verra ce que tu es capable de faire devant......
Bonne après midi
Option Compare Text
Sub RecopiePlage()
Application.ScreenUpdating = False
Cpt = 0
For Each cell In Range("AX101, AX144, AX187, AX230, AX273, BZ101, BZ144, BZ187, BZ230, BZ273")
If cell = "Ok" Then Cpt = Cpt + 1
If Cpt > 1 Then
MsgBox "Il y a plusieurs cellules avec la mention Ok"
Exit Sub
End If
Next
If [AX101] = "Ok" Then
[CK11:CS51] = [BA101:BI141]
ElseIf [AX144] = "Ok" Then
[CK11:CS51] = [BA144:BI184]
ElseIf [AX187] = "Ok" Then
[CK11:CS51] = [BA187:BI227]
ElseIf [AX230] = "Ok" Then
[CK11:CS51] = [BA230:BI270]
ElseIf [AX273] = "Ok" Then
[CK11:CS51] = [BA273:BI313]
ElseIf [BZ101] = "Ok" Then
[CK11:CS51] = [BO101:BO141]
ElseIf [BZ144] = "Ok" Then
[CK11:CS51] = [BO144:BO184]
ElseIf [BZ187] = "Ok" Then
[CK11:CS51] = [BO187:BO227]
ElseIf [BZ230] = "Ok" Then
[CK11:CS51] = [BO230:BO270]
ElseIf [BZ273] = "Ok" Then
[CK11:CS51] = [BO273:BO313]
End If
End Sub
yg_be
Messages postés
23346
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
24 novembre 2024
1 552
17 mai 2018 à 15:48
17 mai 2018 à 15:48
je pensais avoir lu que le code de frenchie était bon à part que le format résultant n'était pas correct.
ce que je propose en #15, adapté en #59, c'est de faire quelques adaptations dans le code de frenchie pour créer des liens au lieu de copier des valeurs, et pour copier aussi les formats.
ces adaptations ne demandent pas d'expérience de programmation.
ce que je propose en #15, adapté en #59, c'est de faire quelques adaptations dans le code de frenchie pour créer des liens au lieu de copier des valeurs, et pour copier aussi les formats.
ces adaptations ne demandent pas d'expérience de programmation.
je comprend rien a ce que tu me racontes
dans ce que tu me proposes en 59 je ne vois pas de plages nommées nulle part.....?
dans ce que tu me proposes en 59 je ne vois pas de plages nommées nulle part.....?
Pour faire des adaptations il faut connaitre le langage surtout a ce niveau la
moi ce qu 'a fait frenchie je n'y comprend rien y a une boite de dialogue qui s ouvre a un moment donné alors que ces cotations tournent en temps réel??????? dit moi de quelle manière je mets l’écriture des plages a remplacer après ton code ça c'est concret
a on fait du sur place et c'est pas comme çà que je vais trouver la solution
moi ce qu 'a fait frenchie je n'y comprend rien y a une boite de dialogue qui s ouvre a un moment donné alors que ces cotations tournent en temps réel??????? dit moi de quelle manière je mets l’écriture des plages a remplacer après ton code ça c'est concret
a on fait du sur place et c'est pas comme çà que je vais trouver la solution
yg_be
Messages postés
23346
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
24 novembre 2024
1 552
17 mai 2018 à 17:38
17 mai 2018 à 17:38
la boite de dialogue vient quand il y a plusieurs "ok", parce que, vu ce que tu demandes, cela semble être une anomalie à signaler. que doit-il se passer quand il y a plusieurs "ok"?
il n y a jamais plus de un ok dans les cellules il y a deux graphes je te l 'ai explique un graphe avec 5 plages négatives a gauche et 5 plages pour le positif a droite
la même chose pour le deuxième graphe il y a une cellule qui se met en Ok pour les cinq plages a gauche et une autre cellule qui se met en ok pour les 5 autres plages a droite donc le problème n 'est pas la
il faut considérer que pour les plages par exemple ces 5 plages il ya un ok ou un numéro au choix comme on veut, qui se met chaque fois quand la condition est remplie pas 2 c'est impossible (mais ce que tu n as pas compris et maintenant j en suis sur c'est que il y 4 ok mais un seul ok pour 5 plages d'un cote pour un graphe et un autre OK pour l autre cote du même graphe quand tu as un ok pour BA:BI c'est pareil pour l autre cote de BO :BW et le graphe réceptionne en DB;DJ
attention j ai mis 1 a la place de OK
donc il faut que le code dise:
exemple prenons pour le premier graphe pour BA101;BI141 copier moi les formules et le format de cette plage vers CK11 ;CS51 si la cellule AX101 est egale a 1
copier moi les formules et format plage BA144 :BI184 vers CK11:CS51 si la celluleAX144 est egale a 1...etc
il faut dabord que tu comprennes le principe et pourtant ya rien de plus simple copier des plages vers d'autres plages si telle cellule est egale a 1 tu as en dessous le rappel des plages
BA101:BI141 Vers CK11:CS51 =Si(AX101=1;"")
BA144:BI184 Vers CK11:CS51 =Si(AX144=1;"")
BA187:BI227 Vers CK11:CS51 =Si(AX187=1;"")
BA230:BI270 Vers CK11:CS51 =Si(AX230=1;"")
BA273:BI313 Vers CK11:CS51 =Si(AX273=1;"")
BO101:BW141 Vers DB11:DJ51 =Si(BZ101=1;"")
BO144:BW184 Vers DB11:DJ51 =Si(BZ144=1;"")
BO187:BW227;Vers DB11:DJ51 =Si(BZ187=1;"")
BO230:BW270 Vers DB11:DJ51 =Si(BZ230=1;"")
BO273:BW313 Vers DB11:DJ51 =Si(BZ273=1;"")
BA316:BI356 Vers CK57:CS97 =Si(AX316=1;"")
BA359:BI399 Vers CK57:CS97 =Si(AX359=1;"")
BA402:BI442 Vers CK57:CS97 =Si(AX402=1;"")
BA445:BI485 Vers CK57:CS97 =Si(AX445=1;"")
BA488:BI528 Vers CK57:CS97 =Si(AX488=1;"")
BO316:BW356 Vers DB57:DJ97 =Si(BZ316=1;"")
BO359:BW399 Vers DB57:DJ97 =Si(BZ359=1;"")
BO402:BW442 Vers DB57:DJ97 =Si(BZ402=1;"")
BO445:BW485 Vers DB57:DJ97 =Si(BZ445=1;"")
BO488:BW528 Vers DB57:DJ97 =Si(BZ528=1;"")
la même chose pour le deuxième graphe il y a une cellule qui se met en Ok pour les cinq plages a gauche et une autre cellule qui se met en ok pour les 5 autres plages a droite donc le problème n 'est pas la
il faut considérer que pour les plages par exemple ces 5 plages il ya un ok ou un numéro au choix comme on veut, qui se met chaque fois quand la condition est remplie pas 2 c'est impossible (mais ce que tu n as pas compris et maintenant j en suis sur c'est que il y 4 ok mais un seul ok pour 5 plages d'un cote pour un graphe et un autre OK pour l autre cote du même graphe quand tu as un ok pour BA:BI c'est pareil pour l autre cote de BO :BW et le graphe réceptionne en DB;DJ
attention j ai mis 1 a la place de OK
donc il faut que le code dise:
exemple prenons pour le premier graphe pour BA101;BI141 copier moi les formules et le format de cette plage vers CK11 ;CS51 si la cellule AX101 est egale a 1
copier moi les formules et format plage BA144 :BI184 vers CK11:CS51 si la celluleAX144 est egale a 1...etc
il faut dabord que tu comprennes le principe et pourtant ya rien de plus simple copier des plages vers d'autres plages si telle cellule est egale a 1 tu as en dessous le rappel des plages
BA101:BI141 Vers CK11:CS51 =Si(AX101=1;"")
BA144:BI184 Vers CK11:CS51 =Si(AX144=1;"")
BA187:BI227 Vers CK11:CS51 =Si(AX187=1;"")
BA230:BI270 Vers CK11:CS51 =Si(AX230=1;"")
BA273:BI313 Vers CK11:CS51 =Si(AX273=1;"")
BO101:BW141 Vers DB11:DJ51 =Si(BZ101=1;"")
BO144:BW184 Vers DB11:DJ51 =Si(BZ144=1;"")
BO187:BW227;Vers DB11:DJ51 =Si(BZ187=1;"")
BO230:BW270 Vers DB11:DJ51 =Si(BZ230=1;"")
BO273:BW313 Vers DB11:DJ51 =Si(BZ273=1;"")
BA316:BI356 Vers CK57:CS97 =Si(AX316=1;"")
BA359:BI399 Vers CK57:CS97 =Si(AX359=1;"")
BA402:BI442 Vers CK57:CS97 =Si(AX402=1;"")
BA445:BI485 Vers CK57:CS97 =Si(AX445=1;"")
BA488:BI528 Vers CK57:CS97 =Si(AX488=1;"")
BO316:BW356 Vers DB57:DJ97 =Si(BZ316=1;"")
BO359:BW399 Vers DB57:DJ97 =Si(BZ359=1;"")
BO402:BW442 Vers DB57:DJ97 =Si(BZ402=1;"")
BO445:BW485 Vers DB57:DJ97 =Si(BZ445=1;"")
BO488:BW528 Vers DB57:DJ97 =Si(BZ528=1;"")
yg_be
Messages postés
23346
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
24 novembre 2024
1 552
17 mai 2018 à 19:11
17 mai 2018 à 19:11
bizarre que tu aies la boite de dialogue si il n'y a jamais plus d'un OK dans AX101, AX144, AX187, AX230, AX273, BZ101, BZ144, BZ187, BZ230, BZ273...
si il ya un ok de chaque cote
un seul pourAX101, AX144, AX187, AX230, AX273,
un, autre pour BZ101, BZ144, BZ187, BZ230, BZ273... plus deux autres sur l autre graphe
c'est quoi qui t’empêche de faire ce code???
""copier moi la plage correspondante un tel vers plage du graphe si dans une de ces 5 cellules il y a un ok ""
c'est quoi qui te gêne, écrire la condition????
parce que je suppose que le code, copier moi cette plage vers cette plage ne doit pas être compliqué pour quelqu'un qui connait le VBA
un seul pourAX101, AX144, AX187, AX230, AX273,
un, autre pour BZ101, BZ144, BZ187, BZ230, BZ273... plus deux autres sur l autre graphe
c'est quoi qui t’empêche de faire ce code???
""copier moi la plage correspondante un tel vers plage du graphe si dans une de ces 5 cellules il y a un ok ""
c'est quoi qui te gêne, écrire la condition????
parce que je suppose que le code, copier moi cette plage vers cette plage ne doit pas être compliqué pour quelqu'un qui connait le VBA
yg_be
Messages postés
23346
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
24 novembre 2024
1 552
17 mai 2018 à 22:31
17 mai 2018 à 22:31
(écrire le code est très simple. te comprendre est quasi impossible. communiquer avec toi est presque surhumain.)
relis ta description de départ:
si dans la cellule AX101 est inscrit"OK" affichez moi le contenue de la plage BA101:BI141 en CK11:CS51
(...)
si dans la cellule BZ101 est inscrit"OK" affichez moi le contenue de la plage BO101:BX141en CK11:CS51
que doit-il se passer si il y a OK en AX101 et aussi en BZ101?
relis ta description de départ:
si dans la cellule AX101 est inscrit"OK" affichez moi le contenue de la plage BA101:BI141 en CK11:CS51
(...)
si dans la cellule BZ101 est inscrit"OK" affichez moi le contenue de la plage BO101:BX141en CK11:CS51
que doit-il se passer si il y a OK en AX101 et aussi en BZ101?
tout simplement ce que j ai écrit si il ya ok dans AX101 c'est la plage BA101;BA141 qui va s'inscrire en CK11 ;CS51 et si au même moment ou différé peu importe il y a aussi inscrit OK en BZ101 et bien la plage BO101;BO141 s'inscrira de l autre cote vers DB11;DJ51
il en va ainsi pour les autres plages tel que je t'ai envoyé le descriptif
ya rien de sorcier ni d'inhumain dans tout ca
tu n 'as pas compris qui'l y a des plages d'un cote et de l autre et chaque cellule ou s'inscrivent les OK ont une plage correspondante
BA101:BI141 Vers CK11:CS51 =Si(AX101=1;"")
BA144:BI184 Vers CK11:CS51 =Si(AX144=1;"")
BA187:BI227 Vers CK11:CS51 =Si(AX187=1;"")
BA230:BI270 Vers CK11:CS51 =Si(AX230=1;"")
BA273:BI313 Vers CK11:CS51 =Si(AX273=1;"")
BO101:BW141 Vers DB11:DJ51 =Si(BZ101=1;"")
BO144:BW184 Vers DB11:DJ51 =Si(BZ144=1;"")
BO187:BW227;Vers DB11:DJ51 =Si(BZ187=1;"")
BO230:BW270 Vers DB11:DJ51 =Si(BZ230=1;"")
BO273:BW313 Vers DB11:DJ51 =Si(BZ273=1;"")
BA316:BI356 Vers CK57:CS97 =Si(AX316=1;"")
BA359:BI399 Vers CK57:CS97 =Si(AX359=1;"")
BA402:BI442 Vers CK57:CS97 =Si(AX402=1;"")
BA445:BI485 Vers CK57:CS97 =Si(AX445=1;"")
BA488:BI528 Vers CK57:CS97 =Si(AX488=1;"")
BO316:BW356 Vers DB57:DJ97 =Si(BZ316=1;"")
BO359:BW399 Vers DB57:DJ97 =Si(BZ359=1;"")
BO402:BW442 Vers DB57:DJ97 =Si(BZ402=1;"")
BO445:BW485 Vers DB57:DJ97 =Si(BZ445=1;"")
BO488:BW528 Vers DB57:DJ97 =Si(BZ528=1;"")
il en va ainsi pour les autres plages tel que je t'ai envoyé le descriptif
ya rien de sorcier ni d'inhumain dans tout ca
tu n 'as pas compris qui'l y a des plages d'un cote et de l autre et chaque cellule ou s'inscrivent les OK ont une plage correspondante
BA101:BI141 Vers CK11:CS51 =Si(AX101=1;"")
BA144:BI184 Vers CK11:CS51 =Si(AX144=1;"")
BA187:BI227 Vers CK11:CS51 =Si(AX187=1;"")
BA230:BI270 Vers CK11:CS51 =Si(AX230=1;"")
BA273:BI313 Vers CK11:CS51 =Si(AX273=1;"")
BO101:BW141 Vers DB11:DJ51 =Si(BZ101=1;"")
BO144:BW184 Vers DB11:DJ51 =Si(BZ144=1;"")
BO187:BW227;Vers DB11:DJ51 =Si(BZ187=1;"")
BO230:BW270 Vers DB11:DJ51 =Si(BZ230=1;"")
BO273:BW313 Vers DB11:DJ51 =Si(BZ273=1;"")
BA316:BI356 Vers CK57:CS97 =Si(AX316=1;"")
BA359:BI399 Vers CK57:CS97 =Si(AX359=1;"")
BA402:BI442 Vers CK57:CS97 =Si(AX402=1;"")
BA445:BI485 Vers CK57:CS97 =Si(AX445=1;"")
BA488:BI528 Vers CK57:CS97 =Si(AX488=1;"")
BO316:BW356 Vers DB57:DJ97 =Si(BZ316=1;"")
BO359:BW399 Vers DB57:DJ97 =Si(BZ359=1;"")
BO402:BW442 Vers DB57:DJ97 =Si(BZ402=1;"")
BO445:BW485 Vers DB57:DJ97 =Si(BZ445=1;"")
BO488:BW528 Vers DB57:DJ97 =Si(BZ528=1;"")
yg_be
Messages postés
23346
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
24 novembre 2024
1 552
17 mai 2018 à 22:54
17 mai 2018 à 22:54
ah, je comprends, tu as changé d'avis après avoir décrit ce que tu souhaitais que nous fassions pour toi.
absolument pas tu as bien vu que dans le premier message j avais fait une erreur d'ecriture javais marque
si dans la cellule BZ187 est inscrit"OK" affichez moi le contenue de la plage BO187:BX227en CK11:CK51
alors qu il fallait inscrire
si dans la cellule BZ187 est inscrit"OK" affichez moi le contenue de la plage BO187:BW227en DB11:DJ51
je n ai absolument pas changé, quand j ai vu que tu ne pouvais pas faire la procédure comme je le voulais sans copié collé j ai fait ma solution en formules tel que je le concevais et je t ai dit que je n étais pas satisfait du résultat a cause du format et de l obligation de créer un double de la plage puis de copier par 1 pour avoir le bon format donc comme tu n as pas d autres solution que celle du copie colle les formules et le format il est evident que je vais faire avec mais ne me dit pas que j ai change d avis si tu m avais trouve l équivalent en code de ce que j ai réalisé en formules ;je n aurais jamais été vers la solution du copié collé
si dans la cellule BZ187 est inscrit"OK" affichez moi le contenue de la plage BO187:BX227en CK11:CK51
alors qu il fallait inscrire
si dans la cellule BZ187 est inscrit"OK" affichez moi le contenue de la plage BO187:BW227en DB11:DJ51
je n ai absolument pas changé, quand j ai vu que tu ne pouvais pas faire la procédure comme je le voulais sans copié collé j ai fait ma solution en formules tel que je le concevais et je t ai dit que je n étais pas satisfait du résultat a cause du format et de l obligation de créer un double de la plage puis de copier par 1 pour avoir le bon format donc comme tu n as pas d autres solution que celle du copie colle les formules et le format il est evident que je vais faire avec mais ne me dit pas que j ai change d avis si tu m avais trouve l équivalent en code de ce que j ai réalisé en formules ;je n aurais jamais été vers la solution du copié collé
yg_be
Messages postés
23346
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
24 novembre 2024
1 552
18 mai 2018 à 12:54
18 mai 2018 à 12:54
alors tu peux supprimer les lignes 24 à 33 du code de frenchie, et, dans la ligne 6, supprimer ce qui commence par B. cela devrait faire ce que tu demandes pour la ligne CK.
tu pourras adapter ensuite, si cela fonctionne bien, pour ajouter la ligne DB.
tu pourras adapter ensuite, si cela fonctionne bien, pour ajouter la ligne DB.
salut j ai fait comme tu m 'as dits mais ca ne fonctionne pas
jai mis le code dans un module comme ceci j ai essaye aussi en supprimant la partie du code qui concerne la Msgbox puisqu elle n 'est pas utile je te mets les 2 codes que j ai essaye en dessous
If Cpt > 1 Then
MsgBox "Il y a plusieurs cellules avec la mention Ok"
Exit Sub
Option Compare Text
Sub RecopiePlage()
Application.ScreenUpdating = False
Cpt = 0
For Each cell In Range("AX101, AX144, AX187, AX230, AX273")
If cell = "Ok" Then Cpt = Cpt + 1
If Cpt > 1 Then
MsgBox "Il y a plusieurs cellules avec la mention Ok"
Exit Sub
End If
Next
If [AX101] = "Ok" Then
[CK11:CS51] = [BA101:BI141]
ElseIf [AX144] = "Ok" Then
[CK11:CS51] = [BA144:BI184]
ElseIf [AX187] = "Ok" Then
[CK11:CS51] = [BA187:BI227]
ElseIf [AX230] = "Ok" Then
[CK11:CS51] = [BA230:BI270]
ElseIf [AX273] = "Ok" Then
End If
End Sub
Option Compare Text
Sub RecopiePlage()
Application.ScreenUpdating = False
Cpt = 0
For Each cell In Range("AX101, AX144, AX187, AX230, AX273")
If cell = "Ok" Then Cpt = Cpt + 1
End If
If [AX101] = "Ok" Then
[CK11:CS51] = [BA101:BI141]
ElseIf [AX144] = "Ok" Then
[CK11:CS51] = [BA144:BI184]
ElseIf [AX187] = "Ok" Then
[CK11:CS51] = [BA187:BI227]
ElseIf [AX230] = "Ok" Then
[CK11:CS51] = [BA230:BI270]
ElseIf [AX273] = "Ok" Then
End If
End Sub
jai mis le code dans un module comme ceci j ai essaye aussi en supprimant la partie du code qui concerne la Msgbox puisqu elle n 'est pas utile je te mets les 2 codes que j ai essaye en dessous
If Cpt > 1 Then
MsgBox "Il y a plusieurs cellules avec la mention Ok"
Exit Sub
Option Compare Text
Sub RecopiePlage()
Application.ScreenUpdating = False
Cpt = 0
For Each cell In Range("AX101, AX144, AX187, AX230, AX273")
If cell = "Ok" Then Cpt = Cpt + 1
If Cpt > 1 Then
MsgBox "Il y a plusieurs cellules avec la mention Ok"
Exit Sub
End If
Next
If [AX101] = "Ok" Then
[CK11:CS51] = [BA101:BI141]
ElseIf [AX144] = "Ok" Then
[CK11:CS51] = [BA144:BI184]
ElseIf [AX187] = "Ok" Then
[CK11:CS51] = [BA187:BI227]
ElseIf [AX230] = "Ok" Then
[CK11:CS51] = [BA230:BI270]
ElseIf [AX273] = "Ok" Then
End If
End Sub
Option Compare Text
Sub RecopiePlage()
Application.ScreenUpdating = False
Cpt = 0
For Each cell In Range("AX101, AX144, AX187, AX230, AX273")
If cell = "Ok" Then Cpt = Cpt + 1
End If
If [AX101] = "Ok" Then
[CK11:CS51] = [BA101:BI141]
ElseIf [AX144] = "Ok" Then
[CK11:CS51] = [BA144:BI184]
ElseIf [AX187] = "Ok" Then
[CK11:CS51] = [BA187:BI227]
ElseIf [AX230] = "Ok" Then
[CK11:CS51] = [BA230:BI270]
ElseIf [AX273] = "Ok" Then
End If
End Sub
yg_be
Messages postés
23346
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
24 novembre 2024
1 552
18 mai 2018 à 20:55
18 mai 2018 à 20:55
"ca ne fonctionne pas": que veux-tu dire précisément? message d'erreur?
as-tu essayé de faire tourner ce code?
comme écrit en #8, il est important de toujours clairement et concisément décrire quand le code doit être exécuté, et ce qu'il doit faire.
as-tu essayé de faire tourner ce code?
comme écrit en #8, il est important de toujours clairement et concisément décrire quand le code doit être exécuté, et ce qu'il doit faire.
bien sur que j ai essaye mais rien ne sepasse ni aucun message d'erreur
mais deja ya un truc qui est evident c'est que la procedure de megabox doit etre retire
apres je sais pas si dans le deuxieme code que je t'ai envoyé ,si après If cell = "Ok" Then Cpt = Cpt + 1 il faut écrire End If ou le supprimer et passer directement a If
je l ai mis dans un module normal parce que dans la feuille concernée j ai déjà ce code que je te donne en premier
maintenant il faut que tu me dises ce qui ne va pas dans le deuxième code que j ai essaye(je te le remets tout en dessous
Option Explicit
Private Sub CommandButton1_Click()
End Sub
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
Sub RecopiePlage()
Application.ScreenUpdating = False
Cpt = 0
For Each cell In Range("AX101, AX144, AX187, AX230, AX273")
If cell = "Ok" Then Cpt = Cpt + 1
End If
If [AX101] = "Ok" Then
[CK11:CS51] = [BA101:BI141]
ElseIf [AX144] = "Ok" Then
[CK11:CS51] = [BA144:BI184]
ElseIf [AX187] = "Ok" Then
[CK11:CS51] = [BA187:BI227]
ElseIf [AX230] = "Ok" Then
[CK11:CS51] = [BA230:BI270]
ElseIf [AX273] = "Ok" Then
End If
End Sub
mais deja ya un truc qui est evident c'est que la procedure de megabox doit etre retire
apres je sais pas si dans le deuxieme code que je t'ai envoyé ,si après If cell = "Ok" Then Cpt = Cpt + 1 il faut écrire End If ou le supprimer et passer directement a If
je l ai mis dans un module normal parce que dans la feuille concernée j ai déjà ce code que je te donne en premier
maintenant il faut que tu me dises ce qui ne va pas dans le deuxième code que j ai essaye(je te le remets tout en dessous
Option Explicit
Private Sub CommandButton1_Click()
End Sub
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
Sub RecopiePlage()
Application.ScreenUpdating = False
Cpt = 0
For Each cell In Range("AX101, AX144, AX187, AX230, AX273")
If cell = "Ok" Then Cpt = Cpt + 1
End If
If [AX101] = "Ok" Then
[CK11:CS51] = [BA101:BI141]
ElseIf [AX144] = "Ok" Then
[CK11:CS51] = [BA144:BI184]
ElseIf [AX187] = "Ok" Then
[CK11:CS51] = [BA187:BI227]
ElseIf [AX230] = "Ok" Then
[CK11:CS51] = [BA230:BI270]
ElseIf [AX273] = "Ok" Then
End If
End Sub
yg_be
Messages postés
23346
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
24 novembre 2024
1 552
18 mai 2018 à 21:41
18 mai 2018 à 21:41
qui est megabox?
qui appelle RecopiePlage()?
qui appelle RecopiePlage()?
je comprenda pas ce que tu me dits la megabox est une boite de dialogue dans notre cas on en a pas besoin elle intervenait juste si il y avait deux OK sur les mêmes plages hors ce n 'est plus le cas et je vois mal comment dans une procédure en temps réel qui ne doit en aucun cas être interrompu il devrait y avoir une boite qui s'ouvre
ce bout de code veut dire que si ya un comptage de OK supérieur a 1 la procédure se stoppe et fin
If Cpt > 1 Then
MsgBox "Il y a plusieurs cellules avec la mention Ok"
Exit Sub
ce bout de code veut dire que si ya un comptage de OK supérieur a 1 la procédure se stoppe et fin
If Cpt > 1 Then
MsgBox "Il y a plusieurs cellules avec la mention Ok"
Exit Sub
yg_be
Messages postés
23346
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
24 novembre 2024
1 552
18 mai 2018 à 21:53
18 mai 2018 à 21:53
qui appelle RecopiePlage()?
pour supprimer la boite de dialogue du code de franchie, tu peux supprimer les lignes de 6 à 12, du "for each" au "next".
pour supprimer la boite de dialogue du code de franchie, tu peux supprimer les lignes de 6 à 12, du "for each" au "next".
Comme cela ???
a la fin il faut le End If avant End Sub?
ça ne fonctionne toujours pas pour moi ce code doit être bon mais il est pas ou il doit être .....?????
il est pas a sa place ou alors c'est dans un module spécial qu il faut l 'ajouter
Option Compare Text
Sub RecopiePlage()
Application.ScreenUpdating = False
Cpt = 0
If [AX101] = "Ok" Then
[CK11:CS51] = [BA101:BI141]
ElseIf [AX144] = "Ok" Then
[CK11:CS51] = [BA144:BI184]
ElseIf [AX187] = "Ok" Then
[CK11:CS51] = [BA187:BI227]
ElseIf [AX230] = "Ok" Then
[CK11:CS51] = [BA230:BI270]
ElseIf [AX273] = "Ok" Then
[CK11:CS51] = [BA273:BI313]
End If
End Sub
a la fin il faut le End If avant End Sub?
ça ne fonctionne toujours pas pour moi ce code doit être bon mais il est pas ou il doit être .....?????
il est pas a sa place ou alors c'est dans un module spécial qu il faut l 'ajouter
Option Compare Text
Sub RecopiePlage()
Application.ScreenUpdating = False
Cpt = 0
If [AX101] = "Ok" Then
[CK11:CS51] = [BA101:BI141]
ElseIf [AX144] = "Ok" Then
[CK11:CS51] = [BA144:BI184]
ElseIf [AX187] = "Ok" Then
[CK11:CS51] = [BA187:BI227]
ElseIf [AX230] = "Ok" Then
[CK11:CS51] = [BA230:BI270]
ElseIf [AX273] = "Ok" Then
[CK11:CS51] = [BA273:BI313]
End If
End Sub
je crois que tu te payes de ma tète parce que moi qui connait rien je suis arrive par une macro toute simple a faire la procédure de = comme l je le voulais au départ(mis a part qu il n y a pas la condition et quelle n'est pas automatique) en faisant ce petit code alors explique moi maintenant comment tu faits pour y greffer la procédure de OK et ce sur plusieurs plages
et ne me dits pas que tu sais pas je vais pas te croire...... tu donnes les infos au compte goutte.
je viens d'essaye encore un nouveau code et ça marche pas
avec le peu d'info que tu as bien voulu lâcher
je passe des heures a me prendre la tète alors que je suis sur que pour un gars qui connait il ne faut pas 5 mn pour le faire c'est désespérant, je crois bien que je vais aller sur un autre forum parce que ici vous êtes pasdu tout cool et vous avez les chevilles qui enflent
vous répondez jamais aux questions vous prenez toujours des portes a coté
ou vous êtes de mauvaise fois ou alors des branquignolles ou alors vous avez le vice en vous
heureusement que chez les compagnons il n y a pas cette mentalité
je vous laisse à vos travers
Sub RecopiePlage()
Range("BA101:BI141").Select
Selection.Copy
Range("CK11:CS51").Select
ActiveSheet.Paste Link:=True
End Sub
Private Sub linkrg(target As Range, source As Range)
source.Copy
target.Parent.Activate
target.Select
target.Parent.Paste link:=True
target.PasteSpecial (xlPasteFormats)
Application.CutCopyMode = Fals
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
End Sub
et ne me dits pas que tu sais pas je vais pas te croire...... tu donnes les infos au compte goutte.
je viens d'essaye encore un nouveau code et ça marche pas
avec le peu d'info que tu as bien voulu lâcher
je passe des heures a me prendre la tète alors que je suis sur que pour un gars qui connait il ne faut pas 5 mn pour le faire c'est désespérant, je crois bien que je vais aller sur un autre forum parce que ici vous êtes pasdu tout cool et vous avez les chevilles qui enflent
vous répondez jamais aux questions vous prenez toujours des portes a coté
ou vous êtes de mauvaise fois ou alors des branquignolles ou alors vous avez le vice en vous
heureusement que chez les compagnons il n y a pas cette mentalité
je vous laisse à vos travers
Sub RecopiePlage()
Range("BA101:BI141").Select
Selection.Copy
Range("CK11:CS51").Select
ActiveSheet.Paste Link:=True
End Sub
Private Sub linkrg(target As Range, source As Range)
source.Copy
target.Parent.Activate
target.Select
target.Parent.Paste link:=True
target.PasteSpecial (xlPasteFormats)
Application.CutCopyMode = Fals
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
End Sub
yg_be
Messages postés
23346
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
24 novembre 2024
1 552
19 mai 2018 à 11:56
19 mai 2018 à 11:56
en #15, quand j'écrivais "ajouter ceci dans le même module:", je sous-entendais "tout en bas du module", en tous cas en dehors d'une procédure existante.
le mieux, quand tu modifies du code, est d'immédiatement vérifier que la syntaxe est correcte, pour éviter de découvrir des erreurs beaucoup plus tard. pour cela: clique sur Débogage > Compiler VBAProject
lecture utile: https://www.commentcamarche.net/contents/1381-debogage
le mieux, quand tu modifies du code, est d'immédiatement vérifier que la syntaxe est correcte, pour éviter de découvrir des erreurs beaucoup plus tard. pour cela: clique sur Débogage > Compiler VBAProject
lecture utile: https://www.commentcamarche.net/contents/1381-debogage
Modifié le 9 mai 2018 à 09:26
comment vas tu ??il ya si longtemps il fait toujours aussi beau dans le Var???
je voudrais savoir si ton code copie ou si il affiche dans la plage le contenue de l autre plage (parceque ces graphes tournent en temps réel et on ne peut pas faire de copie en mode valeur par exemple (sinon il faudrait qu'il copie toutes les formules et qu elles se retrouvent a l identique sur l'autre plage
est ce que tu peux me dire ou je le mets parce que j ai déjà un code dans la feuille ;
celui que tu viens de m 'envoyer j ai rectifié parce que je m’étais trompé dans la saisie j ai un autre graphe juste en dessous ou je fait la même opération(comment je goupille ca????? je te donne ce que je viens de rectifier Apres si tuas le temps j ai deux autres soucis que je n 'arrive pas a regler pour le moment personne n 'a trouve la solution
je te montrerais plus tard ce qui a évolué depuis que tu m avais fait le timer pour mon fichier cotations minutes et cotations quart heures(tu te souviens....)
pour l instant il faut que je solutionne ces problèmes au plus vite parce que je suis entrain de créer un site web
Merci pour ton aide....
8 mai 2018 à 15:15
si je reprend la question posée lors de la demande:
je cherche un code qui sous condition donne le contenue dune plage a l emplacement d'une autre
il semblerait bien que ce sont bien des valeurs qu'on doit recopier sur les autres plages.
est ce que tu peux me dire ou je le mets parce que j ai déjà un code dans la feuille, à mettre dans un module standard, et pas dans le module d'une feuille.
8 mai 2018 à 16:17
alors ca ne va pas marcher parce qu il faut que la plage qui reçoit(en l 'occurrence le graphe) affiche le résultat de l autre plage (sans la copier)autrement dit =
exemple
si je suis sur la graphe en temps réel la plage CK11:CS51(celle qui reçoit) devra afficher le contenue de la plage BA101:BI141 a condition que la cellule AX101 soit = à OK
si l'on fait un simple copier colle valeur mon graphe ne se rafraîchira pas à chaque changement de cotations dans l autres plage
avec les formules j arrive a le faire mais j ai un problème c'est que les valeurs qui arrivent ne sont pas en pourcentage mais en nombre (même en changeant la format des cellules ca ne changent pas je n 'arrive pas a avoir les pourcentages)
je mets par exemple dans la cellule CK11 =SI(AX101="0K";BA101;"")&SI(AX144="0K";BA144;"")&SI(AX187="0K";BA187;"")&SI(AX230="0K";BA230;"")&SI(AX273="0K";BA273;"").....etc donc il faut trouver autre code ;c'est dommage parceque avec les formules on fait simplement les premières lignes en haut du graphe et puis cela descend en cascade pour recopier les formules jusqu au bas du graphe
9 mai 2018 à 08:47
est ce que tu as une idée pour solutionner mon problème
en fait pour que ça fonctionne il faudrait un code qui dise que des que le ok apparait dans une cellule il faut que dans la plage réceptrice ,il y ai inscrit à chaque cellule =(le contenue de la cellule de la plage visé) il faut bien dissocié les plages d'ou proviennent les cotations, et la plage qui réceptionne les infos ;qui elle, est toujours fixe un peu comme cela
exemple =SI(AX101=OK;=BA101;"") a mettre dans cellule CK11 du graphe recepteur
=SI(AX101=OK;=BB101;"")a mettre dans cellule CL11 du graphe recepteur
=SI(AX101=OK;=BB101;"")a mettre dans cellule CM11 du graphe recepteur
etc ainsi selon le même principe dans toute la plage réceptrice
comme je te l ai dit précédemment cela marche avec les formules mais le soucis est que cela me renvoie les valeurs en nombre au lieu de pourcentage je pense que un code devrait pouvoir solutionner ce problème
en fait je me retrouve avec dans chaque cellule 5 formules comme ceci dans la cellule de départ(CK)
=SI(AX101="OK";=BA101;"")&SI(AX144="OK";=BA144;"")&SI(AX187="OK";=BA187;"")&SI(AX230="OK";=BA230;"")&SI(AX273="OK";=BA273;"")
et en suivant pareil pour l 'autre cote avec BZ101 BZ144 BZ187 BZ230 BZ273
Bonne journée
si tu as une petite idée n hésite pas on trouvera je pense une solution que par un code