IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Collage avec liaison via Vba


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2011
    Messages : 3
    Par défaut Collage avec liaison via Vba
    Bonjour à tous,

    Débutant voir même extrement débutant dans les macros VBA Excel j'ai un petit problème:

    J'ai un classeur avec 190 feuilles et je souhaiterais faire un recap de ces feuilles avec toutes les lignes tout à la fin.

    J'ai à peu près réussi avec ce que j'ai trouvé sur le net mais ça me va toujours pas.

    Voila déja ce que j'ai mis dans ma macro:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub Recap()
     Dim Sh As Worksheet
     Application.ScreenUpdating = False
     With Sheets("Recap")
         .Columns("A:G").ClearContents
         For Each Sh In Sheets
             If Sh.Name <> .Name Then
                 Sh.Range("A6:G11").Copy .Cells(.Rows.Count, 1).End(xlUp)(2)
             End If
         Next Sh
     End With
     Application.ScreenUpdating = True
    End Sub
    Tout cela me va sauf que je voudrais que mes cellules collées dans ma dernière feuille soit liées à leur feuille d'origine, je m'explique,
    si je change la valeur d'une ligne dans ma feuille 117 par exemple, je voudrais que celle ci soit automatiquement changée dans ma feuille recap.

    Je pense que je suis tout prêt du but mais bon.

    Merci de votre aide

    ++

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonsoir,

    Si tu veux que les valeurs soient dynamiques, il te faut utiliser des formules. Teste ce qui suit et adapte, reviens si tu n'y arrive pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    Sub Recap()
     
        Dim Sh As Worksheet
        Dim Derl As Long
     
        Application.ScreenUpdating = False
     
        With Sheets("Recap")
     
            .Columns("A:G").ClearContents
     
            For Each Sh In Sheets
     
                If Sh.Name <> .Name Then
     
                    'première ligne vide
                    Derl = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
     
                    'fait référence par formule à la cellule A6 de la feuille en cours
                    .Cells(Derl, 1).Formula = "=" & Sh.Name & "!A6"
                    'tire la formule 5 lignes plus bas
                    .Cells(Derl, 1).AutoFill .Range(.Cells(Derl, 1), .Cells(Derl + 5, 1))
                    'tire les formules jusqu'à la colonne G
                    .Range(.Cells(Derl, 1), .Cells(Derl + 5, 1)).AutoFill .Range(.Cells(Derl, 1), .Cells(Derl + 5, 7))
     
                End If
     
            Next Sh
     
        End With
     
        Application.ScreenUpdating = True
     
    End Sub
    Hervé.

  3. #3
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2011
    Messages : 3
    Par défaut
    Bonjour,

    Tout d'abord merci pour ta réponse.

    J'ai essayé ta macro sans avoir vraiment compris ce qu'il y avait dedans mais une chose est sur c'est que cela ne fonctionne pas.

    N'y a-t-il pas un moyen de modifier ma macro de base et juste rajouter le code copie avec liaison?

    ++

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    207
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 207
    Par défaut
    Dans ta macro de départ, essaie de remplacer:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sh.Range("A6:G11").Copy .Cells(.Rows.Count, 1).End(xlUp)(2)
    par:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sh.Range("A6:G11").Copy
    .Cells(.Rows.Count, 1).End(xlUp).Select
    .Paste Link:=True

  5. #5
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2011
    Messages : 3
    Par défaut
    Super ça fonctionne!!

    Merci beaucoup!!

    ++

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 08/01/2013, 22h35
  2. [XL-2003] fiabilité de collage avec liaison
    Par zangaloni dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 03/01/2012, 10h35
  3. Réponses: 6
    Dernier message: 25/08/2008, 13h36
  4. Réponses: 1
    Dernier message: 25/08/2008, 11h57
  5. cellule vide avec collage avec liaison
    Par stephlinternaute dans le forum Excel
    Réponses: 2
    Dernier message: 14/08/2007, 14h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo