Afficher une plage dans une autre plage

Fermé
itpassatisfaisntparcequejenarrivepaslorsuejincrementebeaucoupdef - Modifié le 19 mai 2018 à 14:52
yg_be Messages postés 23412 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 28 décembre 2024 - 19 mai 2018 à 14:37
Bonjour
je cherche a afficher automatiquement une plage vers une autre plage sous condition (chaque fois qu'une cellule sera égale a OK)
pouvez vous me dire ce qui ne va pas dans mon code
Merci de votre aide

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

Sub RecopiePlage()
    Application.ScreenUpdating = False
    Cpt = 0
    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], [BA230:BI270])
End If
End Sub

EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.

3 réponses

yg_be Messages postés 23412 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 28 décembre 2024 Ambassadeur 1 557
Modifié le 19 mai 2018 à 12:15
bonjour,
la ligne avec Cpt est inutile, et la ligne "Option Compare Text" doit être en début de module.
sans doute mieux d'ajouter
 Application.ScreenUpdating = True
à la fin de
Sub RecopiePlage()
, donc juste avant le
end sub
.
0
itpassatisfaisntparcequejenarrivepaslorsuejincrementebeaucoupdef
Modifié le 19 mai 2018 à 14:53
Bonjour
j en ai un sadoul
avec 4 petites lignes ça marche même si c 'est pas automatise et avec un code a ne plus en finir ca marche pas et il ne se passe rien
je l ai écrit comme cela et il me retourne utilisation incorrecte de la propriété(CutCopyMode)

Option Compare Text
Private Sub linkrg(target As Range, source As Range)
source.Copy
target.Parent.Activate
target.Select
target.Parent.Paste link:=True
Application.CutCopyMode
End Sub
Sub RecopiePlage()
Application.ScreenUpdating = True
If [AX101] = "Ok" Then
Call linkrg([CK11:CS51], [BA101:BI141])
ElseIf [AX144] = "Ok" Then
Call linkrg([CK11:CS51], [BA144:BI184])
ElseIf [AX187] = "Ok" Then
Call linkrg([CK11:CS51], [BA187:BI227])
ElseIf [AX230] = "Ok" Then
Call linkrg([CK11:CS51], [BA230:BI270])
ElseIf [AX273] = "Ok" Then
Call linkrg([CK11:CS51], [BA230:BI270])
End If
End Sub
0
yg_be Messages postés 23412 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 28 décembre 2024 1 557
19 mai 2018 à 14:37
je ne vois pas trop pourquoi tu as modifié la ligne
Application.CutCopyMode = False
0
itpassatisfaisntparcequejenarrivepaslorsuejincrementebeaucoupdef
19 mai 2018 à 14:35
je viens de m apercevoir que j avais omis de mettre False maintenant ca marche mais pas comme ca devrait c'est pas en automatique et aussi je pense que il va falloir sélectionner en dernier une cellule a cote de la plage ;sinon la procédure laisse la plage du graphe grisée
mais le truc c' est que pour le moment c'est inexploitable puisque il faut activer la macro apparemment
a moins que lorsque les DDE vont fonctionner la procédure se fera toute seule
je vais enlevé un OK manuellement pour tester
0