Afficher une plage dans une autre plage

itpassatisfaisntparcequejenarrivepaslorsuejincrementebeaucoupdef -  
yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   -
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

  1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    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
  2. itpassatisfaisntparcequejenarrivepaslorsuejincrementebeaucoupdef
     
    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
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      je ne vois pas trop pourquoi tu as modifié la ligne
      Application.CutCopyMode = False
      0
  3. itpassatisfaisntparcequejenarrivepaslorsuejincrementebeaucoupdef
     
    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