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
Bonsoir
je cherche un code qui sous condition donne le contenue dune plage a l emplacement d'une autre Ex si je dits
si dans la cellule AX101 est inscrit"OK" affichez moi le contenue de la plage BA101:BI141 en CK11:CS51

si dans la cellule AX144 est inscrit"OK" affichez moi le contenue de la plage BA144:BI184 en CK11:CS51

si dans la cellule AX187 est inscrit"OK" affichez moi le contenue de la plage BA187:BI227 en CK11:CS51

si dans la cellule AX230 est inscrit"OK" affichez moi le contenue de la plage BA230:BI270 en CK11:CS51

si dans la cellule AX273 est inscrit"OK" affichez moi le contenue de la plage BA273:B3133en CK11:CS51

si dans la cellule BZ101 est inscrit"OK" affichez moi le contenue de la plage BO101:BX141en CK11:CS51

si dans la cellule BZ144 est inscrit"OK" affichez moi le contenue de la plage BO144:BX184en CK11:CS51

si dans la cellule BZ187 est inscrit"OK" affichez moi le contenue de la plage BO187:BX227en CK11:CS51

etc jusqua BZ273

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
Bonjour,
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
0
Salut frenchie
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....

 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
        [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]
    End If
End Sub

 l autre graphe  les cellules OK se trouvent en 
AX316  AX359 AX402 AX445 AX488     BZ316 BZ359  BZ402 BZ445 BZ448

 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]
    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]
0
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 à 15:15
je voudrais savoir si ton code copie ou si il affiche dans la plage le contenue de l autre plage
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.
0
re
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
0
Bonjour Frenchie
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
0
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
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
0
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
0
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
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.
0
Chrisnapoli
10 mai 2018 à 11:12
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
0
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
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.
0
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
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?
0
Chrisnapoli
10 mai 2018 à 12:30
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
0
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
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 +
=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.
0
Chrisnapoli
16 mai 2018 à 12:15
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;"")
0
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
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.
0
itpassatisfaisntparcequejenarrivepaslorsuejincrementebeaucoupdef
17 mai 2018 à 01:31
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
itpassatisfaisntparcequejenarrivepaslorsuejincrementebeaucoupdef
17 mai 2018 à 01:38
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é
0
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
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
0
itpassatisfaisntparcequejenarrivepaslorsuejincrementebeaucoupdef
17 mai 2018 à 09:32
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;"")
0
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
lis le #15
0
itpassatisfaisntparcequejenarrivepaslorsuejincrementebeaucoupdef
17 mai 2018 à 13:38
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
0
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
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.
0
itpassatisfaisntparcequejenarrivepaslorsuejincrementebeaucoupdef
17 mai 2018 à 16:41
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.....?
0
itpassatisfaisntparcequejenarrivepaslorsuejincrementebeaucoupdef
17 mai 2018 à 16:48
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
0
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
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"?
0
itpassatisfaisntparcequejenarrivepaslorsuejincrementebeaucoupdef
17 mai 2018 à 19:03
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;"")
0
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
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...
0
itpassatisfaisntparcequejenarrivepaslorsuejincrementebeaucoupdef
17 mai 2018 à 22:11
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
0
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
(é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?
0
itpassatisfaisntparcequejenarrivepaslorsuejincrementebeaucoupdef
17 mai 2018 à 22:45
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;"")
0
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
ah, je comprends, tu as changé d'avis après avoir décrit ce que tu souhaitais que nous fassions pour toi.
0
itpassatisfaisntparcequejenarrivepaslorsuejincrementebeaucoupdef
17 mai 2018 à 23:26
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é
0
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
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.
0
itpassatisfaisntparcequejenarrivepaslorsuejincrementebeaucoupdef
18 mai 2018 à 20:45
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
0
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
"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.
0
itpassatisfaisntparcequejenarrivepaslorsuejincrementebeaucoupdef
18 mai 2018 à 21:25
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
0
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
qui est megabox?
qui appelle RecopiePlage()?
0
itpassatisfaisntparcequejenarrivepaslorsuejincrementebeaucoupdef
18 mai 2018 à 21:51
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
0
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
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".
0
itpassatisfaisntparcequejenarrivepaslorsuejincrementebeaucoupdef
18 mai 2018 à 22:09
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
0
itpassatisfaisntparcequejenarrivepaslorsuejincrementebeaucoupdef
19 mai 2018 à 02:13
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
0
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
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
0